From 38e05ea2da229c35d2aebc50344301eb4923e226 Mon Sep 17 00:00:00 2001 From: Jack Ellis Date: Thu, 23 Mar 2023 14:56:26 +0000 Subject: [PATCH] feat: replace ethers with viem For nftx v3 we're moving away from ethers.js and switching to viem + wagmi --- .eslintrc.js | 3 +- package-lock.json | 19889 ++++++++++++++++ package.json | 7 +- packages/abi/README.md | 11 + packages/abi/babel.config.js | 20 + packages/abi/gen-hr.js | 11 + packages/abi/generate.js | 33 + packages/abi/package.json | 30 + packages/abi/rollup.config.js | 3 + .../src/abis/BaseRegistrarImplementation.json | 39 + packages/abi/src/abis/CryptoPunks.json | 38 + packages/abi/src/abis/ERC20.json | 25 + packages/abi/src/abis/ERC721.json | 24 + packages/abi/src/abis/KittyCore.json | 67 + .../src/abis/NFTXENSMerkleEligibility.json | 26 + packages/abi/src/abis/NFTXEligibility.json | 14 + .../abi/src/abis/NFTXEligibilityManager.json | 14 + .../abi/src/abis/NFTXInventoryStaking.json | 33 + packages/abi/src/abis/NFTXLpStaking.json | 52 + .../abi/src/abis/NFTXMarketplace0xZap.json | 26 + packages/abi/src/abis/NFTXMarketplaceZap.json | 29 + ...FTXRewardDistributionTokenUpgradeable.json | 33 + packages/abi/src/abis/NFTXStakingZap.json | 32 + .../src/abis/NFTXStakingZapDeprecated.json | 27 + .../src/abis/NFTXUnstakingInventoryZap.json | 17 + packages/abi/src/abis/NFTXV12.json | 42 + packages/abi/src/abis/NFTXVaultFactory.json | 35 + .../abi/src/abis/NFTXVaultUpgradeable.json | 75 + packages/abi/src/abis/UniswapQuoter.json | 10 + packages/abi/src/abis/UniswapV2Factory.json | 15 + packages/abi/src/abis/UniswapV2Pair.json | 36 + packages/abi/src/abis/UniswapV2Router.json | 27 + packages/abi/src/abis/VaultCreationZap.json | 18 + packages/abi/src/index.ts | 47 + .../json}/BaseRegistrarImplementation.json | 0 packages/abi/src/json/CryptoPunks.json | 325 + .../abis => abi/src/json}/ERC20.json | 0 packages/abi/src/json/ERC721.json | 244 + .../abis => abi/src/json}/KittyCore.json | 0 .../src/json}/NFTXENSMerkleEligibility.json | 0 packages/abi/src/json/NFTXEligibility.json | 104 + .../src/json}/NFTXEligibilityManager.json | 0 .../src/json}/NFTXInventoryStaking.json | 0 .../abis => abi/src/json}/NFTXLpStaking.json | 0 .../src/json}/NFTXMarketplace0xZap.json | 0 .../src/json}/NFTXMarketplaceZap.json | 0 ...FTXRewardDistributionTokenUpgradeable.json | 0 .../abis => abi/src/json}/NFTXStakingZap.json | 0 .../src/json}/NFTXStakingZapDeprecated.json | 0 .../src/json}/NFTXUnstakingInventoryZap.json | 0 .../abis => abi/src/json}/NFTXV12.json | 0 .../src/json}/NFTXVaultFactory.json | 0 .../src/json}/NFTXVaultUpgradeable.json | 0 .../abis => abi/src/json}/UniswapQuoter.json | 0 .../src/json}/UniswapV2Factory.json | 0 .../abis => abi/src/json}/UniswapV2Pair.json | 0 .../src/json}/UniswapV2Router.json | 0 .../src/json}/VaultCreationZap.json | 0 packages/abi/tsconfig.json | 4 + packages/api/package.json | 9 +- packages/api/rollup.config.js | 6 - packages/api/src/assets/Stream.ts | 2 +- .../api/src/assets/fetchUserCollections.ts | 4 +- .../src/assets/fetchUserVaultCollections.ts | 3 +- .../fetchAllUserCollectionAssets.ts | 6 +- .../fetchUserCollectionAssets.ts | 8 +- .../streamUserCollectionAssets.ts | 10 +- .../fetchAllUserVaultAssets.ts | 4 +- .../userVaultAssets/fetchUserVaultAssets.ts | 6 +- .../userVaultAssets/streamUserVaultAssets.ts | 6 +- packages/api/src/pools/fetchPools.ts | 6 +- packages/api/src/positions/fetchPosition.ts | 4 +- .../api/src/positions/fetchPositionYield.ts | 8 +- .../api/src/positions/fetchUserPositions.ts | 4 +- packages/api/src/reserves/fetchReserve.ts | 4 +- packages/api/src/reserves/fetchReserves.ts | 4 +- packages/api/src/users/fetchBalances.ts | 4 +- packages/api/src/users/fetchUserYield.ts | 6 +- packages/api/src/users/fetchVaultBalances.ts | 10 +- packages/api/src/users/invalidateUser.ts | 3 +- packages/api/src/utils/index.ts | 7 + packages/api/src/utils/nsync.ts | 79 + .../api/src/{utils.ts => utils/queryApi.ts} | 39 +- packages/api/src/vaults/fetchActivity.ts | 8 +- packages/api/src/vaults/fetchFees.ts | 8 +- packages/api/src/vaults/fetchManagedVaults.ts | 4 +- packages/api/src/vaults/fetchVaultActivity.ts | 2 +- packages/api/src/vaults/fetchVaultFees.ts | 2 +- packages/api/src/vaults/fetchVaults.ts | 8 +- packages/config/rollup.config.js | 6 - packages/config/src/index.ts | 48 +- packages/constants/abis/CryptoPunks.json | 1 - packages/constants/abis/ERC721.json | 1 - packages/constants/abis/NFTXEligibility.json | 1 - packages/constants/package.json | 9 +- packages/constants/src/addresses.ts | 93 +- packages/constants/src/index.ts | 1 + packages/constants/src/urls.ts | 2 +- packages/constants/src/values.ts | 4 + packages/core/package.json | 12 +- packages/core/rollup.config.js | 6 - .../__tests__/fetchAssetsAlchemy.test.ts | 126 + .../fetchAssetsAlchemy/cursor.ts | 13 +- .../fetchAssetsAlchemy/fetchAssetsAlchemy.ts | 21 +- .../fetchAssetsAlchemy/getNextSet.ts | 6 +- .../fetchAssetsAlchemy/types.ts | 10 +- .../fetchAssetsSubgraph/cursor.ts | 14 +- .../fetchAssetsSubgraph/erc1155.ts | 23 +- .../fetchAssetsSubgraph/erc721.ts | 28 +- .../fetchAssetsSubgraph.ts | 8 +- .../fetchAssetsSubgraph/nonstandard.ts | 19 +- .../fetchUserCollectionAssets.ts | 8 +- .../assets/fetchUserCollectionAssets/utils.ts | 1 - .../__tests__/fetchUserCollections.test.ts | 83 + .../assets/fetchUserCollections/alchemy.ts | 14 +- .../fetchUserCollections.ts | 9 +- .../__tests__/fetchUserVaultAssets.test.ts | 210 + .../fetchUserVaultAssets.ts | 80 +- .../src/assets/fetchUserVaultAssets/utils.ts | 38 +- .../fetchUserVaultCollections/alchemy.ts | 4 +- .../fetchUserVaultCollections.ts | 9 +- packages/core/src/assets/index.ts | 21 +- packages/core/src/assets/types.ts | 10 +- .../core/src/pools/fetchLiquidityPools.ts | 4 +- packages/core/src/pools/types.ts | 10 +- .../positions/__tests__/fetchPosition.test.ts | 162 + packages/core/src/positions/fetchPosition.ts | 55 +- packages/core/src/positions/fetchPositions.ts | 16 +- .../fetchUsers/__tests__/fetchUsers.test.ts | 145 + .../fetchUsers/fetchContractBalances.ts | 103 +- .../fetchUsers/fetchErc20Contracts.ts | 125 +- .../src/positions/fetchUsers/fetchUsers.ts | 144 +- .../core/src/positions/fetchUsers/index.ts | 14 +- packages/core/src/positions/index.ts | 5 +- packages/core/src/positions/types.ts | 43 +- packages/core/src/positions/utils.ts | 87 +- .../__tests__/fetchCumulativeFees.test.ts | 177 + .../core/src/staking/fetchClaimableTokens.ts | 19 +- .../core/src/staking/fetchCumulativeFees.ts | 40 +- .../core/src/staking/fetchLifetimeEarnings.ts | 25 +- .../core/src/staking/fetchLifetimeFees.ts | 18 +- packages/core/src/staking/fetchLockTime.ts | 11 +- packages/core/src/staking/types.ts | 8 +- packages/core/src/utils.ts | 2 + .../core/src/vaults/fetchSubgraphVaults.ts | 31 +- packages/core/src/vaults/fetchVault.ts | 8 +- .../__tests__/fetchVaultActivity.test.ts | 417 + .../src/vaults/fetchVaultActivity/common.ts | 14 +- .../fetchVaultActivity/fetchVaultActivity.ts | 50 +- .../src/vaults/fetchVaultActivity/getAll.ts | 126 +- .../src/vaults/fetchVaultActivity/index.ts | 22 +- .../src/vaults/fetchVaultActivity/mints.ts | 176 +- .../src/vaults/fetchVaultActivity/redeems.ts | 199 +- .../src/vaults/fetchVaultActivity/swaps.ts | 177 +- packages/core/src/vaults/fetchVaultApr.ts | 3 +- packages/core/src/vaults/fetchVaultAprs.ts | 7 +- packages/core/src/vaults/fetchVaultFees.ts | 36 +- .../fetchVaultHoldings/fetchVaultHoldings.ts | 11 +- .../transformVaultHolding.ts | 3 +- .../src/vaults/fetchVaults/fetchVaults.ts | 19 +- .../src/vaults/fetchVaults/transformVault.ts | 13 +- .../fetchVaults/transformVaultReserves.ts | 57 +- .../core/src/vaults/filterMintableAssets.ts | 6 +- packages/nftx/package.json | 9 +- packages/nftx/rollup.config.js | 6 - packages/react/package.json | 14 +- packages/react/rollup.config.js | 5 +- packages/react/src/contexts/nftx.tsx | 34 +- packages/react/src/errors.ts | 10 +- packages/react/src/staking/useClaimRewards.ts | 6 +- .../react/src/staking/useStakeInventory.ts | 3 +- .../react/src/staking/useStakeLiquidity.ts | 3 +- packages/react/src/staking/useStakeSlp.ts | 3 +- packages/react/src/staking/useStakeVToken.ts | 3 +- .../react/src/staking/useUnstakeInventory.ts | 3 +- .../react/src/staking/useUnstakeLiquidity.ts | 3 +- packages/react/src/trade/useApprove.ts | 13 +- packages/react/src/trade/useApproveSell.ts | 3 +- packages/react/src/trade/useApproveSwap.ts | 3 +- packages/react/src/trade/useBuy.ts | 20 +- packages/react/src/trade/useMint.ts | 5 +- packages/react/src/trade/useRedeem.ts | 3 +- packages/react/src/trade/useSell.ts | 20 +- packages/react/src/trade/useSwap.ts | 20 +- packages/react/src/types.ts | 18 +- .../src/useTransaction/useTransaction.ts | 17 +- .../src/useTransaction/useWrapTransaction.ts | 15 +- packages/subgraph/src/querySubgraph.ts | 10 +- packages/trade/package.json | 12 +- packages/trade/rollup.config.js | 6 - packages/trade/src/pools/createPool.ts | 46 +- .../trade/src/pools/estimateCreatePoolGas.ts | 24 +- packages/trade/src/pools/getCreatePoolArgs.ts | 102 +- packages/trade/src/pools/index.ts | 2 - packages/trade/src/price/calculateBuyFee.ts | 14 +- packages/trade/src/price/calculateSellFee.ts | 5 +- packages/trade/src/price/calculateSwapFee.ts | 10 +- packages/trade/src/price/fetch0xPrice.ts | 11 +- packages/trade/src/price/fetch0xQuote.ts | 54 +- packages/trade/src/price/fetchBuyPrice.ts | 47 +- packages/trade/src/price/fetchEthPrice.ts | 37 +- packages/trade/src/price/fetchSellPrice.ts | 46 +- packages/trade/src/price/fetchSpotPrice.ts | 31 +- packages/trade/src/price/fetchSpread.ts | 14 +- .../trade/src/price/fetchVaultBuyPrice.ts | 13 +- .../trade/src/price/fetchVaultSellPrice.ts | 9 +- .../trade/src/price/fetchVaultSwapPrice.ts | 9 +- packages/trade/src/price/index.ts | 4 + packages/trade/src/price/types.ts | 3 + packages/trade/src/staking/claimRewards.ts | 20 +- packages/trade/src/staking/index.ts | 3 - packages/trade/src/staking/stakeInventory.ts | 53 +- packages/trade/src/staking/stakeLiquidity.ts | 147 +- packages/trade/src/staking/stakeSlp.ts | 25 +- packages/trade/src/staking/stakeVToken.ts | 25 +- .../src/staking/unstakeInventory/index.ts | 11 +- .../unstakeInventory/unstakeInventory.ts | 14 +- .../staking/unstakeInventory/withdrawNfts.ts | 49 +- .../unstakeInventory/withdrawVToken.ts | 18 +- .../staking/unstakeLiquidity/exitLiquidity.ts | 15 +- .../unstakeLiquidity/unstakeLiquidity.ts | 27 +- .../unstakeLiquidity/withdrawLiquidity.ts | 15 +- packages/trade/src/trade/approve.ts | 98 +- packages/trade/src/trade/buy/buy.ts | 127 +- .../trade/src/trade/estimateGasAndFees.ts | 60 - packages/trade/src/trade/increaseGasLimit.ts | 10 +- packages/trade/src/trade/index.ts | 1 - packages/trade/src/trade/isApproved.ts | 122 +- packages/trade/src/trade/mint.ts | 24 +- packages/trade/src/trade/redeem.ts | 46 +- packages/trade/src/trade/sell/approveSell.ts | 10 +- .../trade/src/trade/sell/isSellApproved.ts | 3 +- packages/trade/src/trade/sell/sell.ts | 174 +- packages/trade/src/trade/swap/approveSwap.ts | 25 +- .../trade/src/trade/swap/isSwapApproved.ts | 20 +- packages/trade/src/trade/swap/swap.ts | 214 +- packages/trade/src/trade/utils.ts | 54 +- packages/trade/src/utils.ts | 2 + packages/types/package.json | 9 +- packages/types/src/assets.ts | 22 +- packages/types/src/index.ts | 1 + packages/types/src/pools.ts | 26 +- packages/types/src/positions.ts | 40 +- packages/types/src/price.ts | 8 +- packages/types/src/tokens.ts | 12 +- packages/types/src/users.ts | 6 +- packages/types/src/vaults.ts | 58 +- packages/types/src/web3.ts | 54 + packages/utils/package.json | 25 +- packages/utils/rollup.config.js | 6 - .../utils/src/assets/fetchAssetMetadata.ts | 16 +- .../__tests__/checkEligible.test.ts | 73 + .../__tests__/fetchMerkleLeaves.test.ts | 91 + .../__tests__/fetchMerkleReference.test.ts | 59 + .../utils/src/eligibility/checkEligible.ts | 29 +- .../src/eligibility/fetchMerkleLeaves.ts | 31 +- .../src/eligibility/fetchMerkleReference.ts | 25 +- packages/utils/src/eligibility/index.ts | 10 +- .../utils/src/eligibility/processTokens.ts | 41 +- .../src/eligibility/requiresProcessing.ts | 23 +- .../__tests__/adjustPosition.test.ts | 317 + .../src/positions/__tests__/test-position.ts | 43 + .../utils/src/positions/adjustPosition.ts | 114 +- packages/utils/src/positions/utils.ts | 57 +- .../src/staking/fetchMaxInventoryWithdraw.ts | 25 +- .../utils/src/staking/fetchUserTimelock.ts | 26 +- .../__tests__/fetchReservesForTokens.test.ts | 91 + .../utils/src/tokens/fetchReservesForToken.ts | 35 +- .../src/tokens/fetchReservesForTokens.ts | 115 +- packages/utils/src/tokens/index.ts | 13 +- packages/utils/src/utils.ts | 2 +- .../__tests__/calculateVaultApr.test.ts | 104 + .../__tests__/fetchUserVaultBalance.test.ts | 85 + .../__tests__/fetchUserVaultBalances.test.ts | 162 + .../utils/src/vaults/calculateVaultApr.ts | 60 +- .../utils/src/vaults/fetchUserVaultBalance.ts | 29 +- .../src/vaults/fetchUserVaultBalances.ts | 45 +- packages/utils/src/vaults/fetchXTokenShare.ts | 15 +- .../utils/src/vaults/fetchXTokenShares.ts | 4 +- packages/utils/src/vaults/utils.ts | 18 +- packages/utils/src/web3/MulticallContract.ts | 224 - packages/utils/src/web3/addressEqual.ts | 4 +- packages/utils/src/web3/balanceOf.ts | 25 +- packages/utils/src/web3/fromEthersNumber.ts | 4 +- packages/utils/src/web3/getContract.ts | 125 +- packages/utils/src/web3/index.ts | 6 +- packages/utils/src/web3/parseLogEvent.ts | 17 +- packages/utils/src/web3/parseLogEvents.ts | 24 +- packages/utils/src/web3/toEthersNumber.ts | 10 +- packages/utils/src/web3/totalSupply.ts | 17 +- packages/utils/src/web3/types.ts | 1 - tsconfig.json | 3 +- yarn.lock | 3327 +-- 293 files changed, 28216 insertions(+), 5042 deletions(-) create mode 100644 package-lock.json create mode 100644 packages/abi/README.md create mode 100644 packages/abi/babel.config.js create mode 100644 packages/abi/gen-hr.js create mode 100644 packages/abi/generate.js create mode 100644 packages/abi/package.json create mode 100644 packages/abi/rollup.config.js create mode 100644 packages/abi/src/abis/BaseRegistrarImplementation.json create mode 100644 packages/abi/src/abis/CryptoPunks.json create mode 100644 packages/abi/src/abis/ERC20.json create mode 100644 packages/abi/src/abis/ERC721.json create mode 100644 packages/abi/src/abis/KittyCore.json create mode 100644 packages/abi/src/abis/NFTXENSMerkleEligibility.json create mode 100644 packages/abi/src/abis/NFTXEligibility.json create mode 100644 packages/abi/src/abis/NFTXEligibilityManager.json create mode 100644 packages/abi/src/abis/NFTXInventoryStaking.json create mode 100644 packages/abi/src/abis/NFTXLpStaking.json create mode 100644 packages/abi/src/abis/NFTXMarketplace0xZap.json create mode 100644 packages/abi/src/abis/NFTXMarketplaceZap.json create mode 100644 packages/abi/src/abis/NFTXRewardDistributionTokenUpgradeable.json create mode 100644 packages/abi/src/abis/NFTXStakingZap.json create mode 100644 packages/abi/src/abis/NFTXStakingZapDeprecated.json create mode 100644 packages/abi/src/abis/NFTXUnstakingInventoryZap.json create mode 100644 packages/abi/src/abis/NFTXV12.json create mode 100644 packages/abi/src/abis/NFTXVaultFactory.json create mode 100644 packages/abi/src/abis/NFTXVaultUpgradeable.json create mode 100644 packages/abi/src/abis/UniswapQuoter.json create mode 100644 packages/abi/src/abis/UniswapV2Factory.json create mode 100644 packages/abi/src/abis/UniswapV2Pair.json create mode 100644 packages/abi/src/abis/UniswapV2Router.json create mode 100644 packages/abi/src/abis/VaultCreationZap.json create mode 100644 packages/abi/src/index.ts rename packages/{constants/abis => abi/src/json}/BaseRegistrarImplementation.json (100%) create mode 100644 packages/abi/src/json/CryptoPunks.json rename packages/{constants/abis => abi/src/json}/ERC20.json (100%) create mode 100644 packages/abi/src/json/ERC721.json rename packages/{constants/abis => abi/src/json}/KittyCore.json (100%) rename packages/{constants/abis => abi/src/json}/NFTXENSMerkleEligibility.json (100%) create mode 100644 packages/abi/src/json/NFTXEligibility.json rename packages/{constants/abis => abi/src/json}/NFTXEligibilityManager.json (100%) rename packages/{constants/abis => abi/src/json}/NFTXInventoryStaking.json (100%) rename packages/{constants/abis => abi/src/json}/NFTXLpStaking.json (100%) rename packages/{constants/abis => abi/src/json}/NFTXMarketplace0xZap.json (100%) rename packages/{constants/abis => abi/src/json}/NFTXMarketplaceZap.json (100%) rename packages/{constants/abis => abi/src/json}/NFTXRewardDistributionTokenUpgradeable.json (100%) rename packages/{constants/abis => abi/src/json}/NFTXStakingZap.json (100%) rename packages/{constants/abis => abi/src/json}/NFTXStakingZapDeprecated.json (100%) rename packages/{constants/abis => abi/src/json}/NFTXUnstakingInventoryZap.json (100%) rename packages/{constants/abis => abi/src/json}/NFTXV12.json (100%) rename packages/{constants/abis => abi/src/json}/NFTXVaultFactory.json (100%) rename packages/{constants/abis => abi/src/json}/NFTXVaultUpgradeable.json (100%) rename packages/{constants/abis => abi/src/json}/UniswapQuoter.json (100%) rename packages/{constants/abis => abi/src/json}/UniswapV2Factory.json (100%) rename packages/{constants/abis => abi/src/json}/UniswapV2Pair.json (100%) rename packages/{constants/abis => abi/src/json}/UniswapV2Router.json (100%) rename packages/{constants/abis => abi/src/json}/VaultCreationZap.json (100%) create mode 100644 packages/abi/tsconfig.json create mode 100644 packages/api/src/utils/index.ts create mode 100644 packages/api/src/utils/nsync.ts rename packages/api/src/{utils.ts => utils/queryApi.ts} (66%) delete mode 100644 packages/constants/abis/CryptoPunks.json delete mode 100644 packages/constants/abis/ERC721.json delete mode 100644 packages/constants/abis/NFTXEligibility.json create mode 100644 packages/constants/src/values.ts create mode 100644 packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsAlchemy/__tests__/fetchAssetsAlchemy.test.ts create mode 100644 packages/core/src/assets/fetchUserCollections/__tests__/fetchUserCollections.test.ts create mode 100644 packages/core/src/assets/fetchUserVaultAssets/__tests__/fetchUserVaultAssets.test.ts create mode 100644 packages/core/src/positions/__tests__/fetchPosition.test.ts create mode 100644 packages/core/src/positions/fetchUsers/__tests__/fetchUsers.test.ts create mode 100644 packages/core/src/staking/__tests__/fetchCumulativeFees.test.ts create mode 100644 packages/core/src/vaults/fetchVaultActivity/__tests__/fetchVaultActivity.test.ts create mode 100644 packages/trade/src/price/types.ts delete mode 100644 packages/trade/src/trade/estimateGasAndFees.ts create mode 100644 packages/types/src/web3.ts create mode 100644 packages/utils/src/eligibility/__tests__/checkEligible.test.ts create mode 100644 packages/utils/src/eligibility/__tests__/fetchMerkleLeaves.test.ts create mode 100644 packages/utils/src/eligibility/__tests__/fetchMerkleReference.test.ts create mode 100644 packages/utils/src/positions/__tests__/adjustPosition.test.ts create mode 100644 packages/utils/src/positions/__tests__/test-position.ts create mode 100644 packages/utils/src/tokens/__tests__/fetchReservesForTokens.test.ts create mode 100644 packages/utils/src/vaults/__tests__/calculateVaultApr.test.ts create mode 100644 packages/utils/src/vaults/__tests__/fetchUserVaultBalance.test.ts create mode 100644 packages/utils/src/vaults/__tests__/fetchUserVaultBalances.test.ts delete mode 100644 packages/utils/src/web3/MulticallContract.ts delete mode 100644 packages/utils/src/web3/types.ts diff --git a/.eslintrc.js b/.eslintrc.js index 7d0fed20..57c50c26 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -8,7 +8,6 @@ module.exports = { 'eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier', - 'plugin:@next/next/recommended', ], parser: '@typescript-eslint/parser', parserOptions: { @@ -18,7 +17,7 @@ module.exports = { ecmaVersion: 12, sourceType: 'module', }, - plugins: ['react', '@typescript-eslint'], + plugins: ['@typescript-eslint'], rules: { '@next/next/no-document-import-in-page': 'off', '@next/next/no-img-element': 'off', diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..250d9970 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,19889 @@ +{ + "name": "nftxjs", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "nftxjs", + "version": "1.0.0", + "license": "MIT", + "workspaces": [ + "packages/*" + ], + "devDependencies": { + "@babel/core": "^7.17.8", + "@babel/preset-env": "^7.16.11", + "@babel/preset-react": "^7.16.7", + "@babel/preset-typescript": "^7.16.7", + "@types/jest": "^27.4.1", + "@types/node": "^18.15.1", + "@types/react": "^18.0.7", + "@typescript-eslint/eslint-plugin": "^5.17.0", + "@typescript-eslint/parser": "^5.17.0", + "better-docs": "^2.7.2", + "eslint": "^8.12.0", + "eslint-config-prettier": "^8.5.0", + "ethers": "^5.6.2", + "jest": "^27.5.1", + "jsdoc": "^3.6.11", + "lerna": "^6.1.0", + "rollup": "^2.70.1", + "rollup-plugin-babel": "^4.4.0", + "rollup-plugin-node-resolve": "^5.2.0", + "typedoc": "^0.23.23", + "typescript": "^4.6.3" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", + "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.10", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.10", + "@babel/types": "^7.17.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", + "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.17.10", + "@jridgewell/gen-mapping": "^0.1.0", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", + "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", + "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", + "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", + "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==", + "dev": true, + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", + "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.17.6", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", + "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", + "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.10.tgz", + "integrity": "sha512-xJefea1DWXW09pW4Tm9bjwVlPDyYA2it3fWlmEjpYz6alPvTUjL0EOzNzI/FEOyI3r4/J7uVH5UqKgl1TQ5hqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", + "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", + "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", + "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.10.tgz", + "integrity": "sha512-v54O6yLaJySCs6mGzaVOUw9T967GnH38T6CQSAtnzdNPwu84l2qAjssKzo/WSO8Yi7NF+7ekm5cVbF/5qiIgNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", + "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz", + "integrity": "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", + "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", + "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", + "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerator-transform": "^0.15.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", + "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-typescript": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.17.10.tgz", + "integrity": "sha512-YNgyBHZQpeoBSRBg0xixsZzfT58Ze1iZrajvv0lJc70qDDGuGfonEnMGfWeSY0mQ3JTuCWFbMkzFRVafOyJx4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.17.6", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.17.3", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.17.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.17.9", + "@babel/plugin-transform-modules-systemjs": "^7.17.8", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.10", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.17.9", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.17.10", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", + "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-react-display-name": "^7.16.7", + "@babel/plugin-transform-react-jsx": "^7.16.7", + "@babel/plugin-transform-react-jsx-development": "^7.16.7", + "@babel/plugin-transform-react-pure-annotations": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", + "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-typescript": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz", + "integrity": "sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.10", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.10", + "@babel/types": "^7.17.10", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz", + "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/eslintrc": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", + "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.9.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" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.14.0.tgz", + "integrity": "sha512-ERO68sOYwm5UuLvSJTY7w7NP2c8S4UcXs3X1GBX8cwOr+ShOcDBbCY5mH4zxz0jsYCdJ8ve8Mv9n2YGJMB1aeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ethersproject/abi": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.6.2.tgz", + "integrity": "sha512-40Ixjhy+YzFtnvzIqFU13FW9hd1gMoLa3cJfSDnfnL4o8EnEG1qLiV8sNJo3sHYi9UYMfFeRuZ7kv5+vhzU7gQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/hash": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.0" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.6.0.tgz", + "integrity": "sha512-oPMFlKLN+g+y7a79cLK3WiLcjWFnZQtXWgnLAbHZcN3s7L4v90UHpTOrLk+m3yr0gt+/h9STTM6zrr7PM8uoRw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/networks": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/transactions": "^5.6.0", + "@ethersproject/web": "^5.6.0" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.1.tgz", + "integrity": "sha512-xhSLo6y0nGJS7NxfvOSzCaWKvWb1TLT7dQ0nnpHZrDnC67xfnWm9NXflTMFPUXXMtjr33CdV0kWDEmnbrQZ74Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.0.tgz", + "integrity": "sha512-6nvhYXjbXsHPS+30sHZ+U4VMagFC/9zAk6Gd/h3S21YW4+yfb0WfRtaAIZ4kfM4rrVwqiy284LP0GtL5HXGLxQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/rlp": "^5.6.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.6.0.tgz", + "integrity": "sha512-2Neq8wxJ9xHxCF9TUgmKeSh9BXJ6OAxWfeGWvbauPh8FuHEjamgHilllx8KkSd5ErxyHIX7Xv3Fkcud2kY9ezw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0" + } + }, + "node_modules/@ethersproject/basex": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.6.0.tgz", + "integrity": "sha512-qN4T+hQd/Md32MoJpc69rOwLYRUXwjTlhHDIeUkUmiN/JyWkkLLMoG0TqvSQKNqZOMgN5stbUYN6ILC+eD7MEQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/properties": "^5.6.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.1.tgz", + "integrity": "sha512-UtMeZ3GaUuF9sx2u9nPZiPP3ULcAFmXyvynR7oHl/tPrM+vldZh7ocMsoa1PqKYGnQnqUZJoqxZnGN6J0qdipA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^4.11.9" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.6.1.tgz", + "integrity": "sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.6.0.tgz", + "integrity": "sha512-SrdaJx2bK0WQl23nSpV/b1aq293Lh0sUaZT/yYKPDKn4tlAbkH96SPJwIhwSwTsoQQZxuh1jnqsKwyymoiBdWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.6.0" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.6.1.tgz", + "integrity": "sha512-0fpBBDoPqJMsutE6sNjg6pvCJaIcl7tliMQTMRcoUWDACfjO68CpKOJBlsEhEhmzdnu/41KbrfAeg+sB3y35MQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "^5.6.0", + "@ethersproject/abstract-provider": "^5.6.0", + "@ethersproject/abstract-signer": "^5.6.0", + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/transactions": "^5.6.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.6.0.tgz", + "integrity": "sha512-fFd+k9gtczqlr0/BruWLAu7UAOas1uRRJvOR84uDf4lNZ+bTkGl366qvniUZHKtlqxBRU65MkOobkmvmpHU+jA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.6.0", + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.0" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.6.1.tgz", + "integrity": "sha512-6IuYDmbH5Bv/WH/A2cUd0FjNr4qTLAvyHAECiFZhNZp69pPvU7qIDwJ7CU7VAkwm4IVBzqdYy9mpMAGhQdwCDA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.6.0", + "@ethersproject/basex": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/pbkdf2": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/sha2": "^5.6.0", + "@ethersproject/signing-key": "^5.6.0", + "@ethersproject/strings": "^5.6.0", + "@ethersproject/transactions": "^5.6.0", + "@ethersproject/wordlists": "^5.6.0" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.6.0.tgz", + "integrity": "sha512-fmh86jViB9r0ibWXTQipxpAGMiuxoqUf78oqJDlCAJXgnJF024hOOX7qVgqsjtbeoxmcLwpPsXNU0WEe/16qPQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.6.0", + "@ethersproject/address": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/hdnode": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/pbkdf2": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.0", + "@ethersproject/strings": "^5.6.0", + "@ethersproject/transactions": "^5.6.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.6.0.tgz", + "integrity": "sha512-tk56BJ96mdj/ksi7HWZVWGjCq0WVl/QvfhFQNeL8fxhBlGoP+L80uDCiQcpJPd+2XxkivS3lwRm3E0CXTfol0w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.6.0.tgz", + "integrity": "sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@ethersproject/networks": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.6.3.tgz", + "integrity": "sha512-QZxRH7cA5Ut9TbXwZFiCyuPchdWi87ZtVNHWZd0R6YFgYtes2jQ3+bsslJ0WdyDe0i6QumqtoYqvY3rrQFRZOQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.6.0.tgz", + "integrity": "sha512-Wu1AxTgJo3T3H6MIu/eejLFok9TYoSdgwRr5oGY1LTLfmGesDoSx05pemsbrPT2gG4cQME+baTSCp5sEo2erZQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/sha2": "^5.6.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.6.0.tgz", + "integrity": "sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/@ethersproject/providers": { + "version": "5.6.5", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.6.5.tgz", + "integrity": "sha512-TRS+c2Ud+cMpWodmGAc9xbnYRPWzRNYt2zkCSnj58nJoamBQ6x4cUbBeo0lTC3y+6RDVIBeJv18OqsDbSktLVg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.6.0", + "@ethersproject/abstract-signer": "^5.6.0", + "@ethersproject/address": "^5.6.0", + "@ethersproject/basex": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/hash": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/networks": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.0", + "@ethersproject/rlp": "^5.6.0", + "@ethersproject/sha2": "^5.6.0", + "@ethersproject/strings": "^5.6.0", + "@ethersproject/transactions": "^5.6.0", + "@ethersproject/web": "^5.6.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@ethersproject/random": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.6.0.tgz", + "integrity": "sha512-si0PLcLjq+NG/XHSZz90asNf+YfKEqJGVdxoEkSukzbnBgC8rydbgbUgBbBGLeHN4kAJwUFEKsu3sCXT93YMsw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.6.0.tgz", + "integrity": "sha512-dz9WR1xpcTL+9DtOT/aDO+YyxSSdO8YIS0jyZwHHSlAmnxA6cKU3TrTd4Xc/bHayctxTgGLYNuVVoiXE4tTq1g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.6.0.tgz", + "integrity": "sha512-1tNWCPFLu1n3JM9t4/kytz35DkuF9MxqkGGEHNauEbaARdm2fafnOyw1s0tIQDPKF/7bkP1u3dbrmjpn5CelyA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.6.1.tgz", + "integrity": "sha512-XvqQ20DH0D+bS3qlrrgh+axRMth5kD1xuvqUQUTeezxUTXBOeR6hWz2/C6FBEu39FRytyybIWrYf7YLSAKr1LQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "bn.js": "^4.11.9", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/solidity": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.6.0.tgz", + "integrity": "sha512-YwF52vTNd50kjDzqKaoNNbC/r9kMDPq3YzDWmsjFTRBcIF1y4JCQJ8gB30wsTfHbaxgxelI5BfxQSxD/PbJOww==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/sha2": "^5.6.0", + "@ethersproject/strings": "^5.6.0" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.6.0.tgz", + "integrity": "sha512-uv10vTtLTZqrJuqBZR862ZQjTIa724wGPWQqZrofaPI/kUsf53TBG0I0D+hQ1qyNtllbNzaW+PDPHHUI6/65Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.1.tgz", + "integrity": "sha512-oIAC7zBCDnjVlEn0KSG1udbqR7hP9FOurxIV/aG+erCdvdvi+QXEZRUtVP9+lu3WYUe8SMYhdAVwNJtD7dZMRw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/rlp": "^5.6.0", + "@ethersproject/signing-key": "^5.6.0" + } + }, + "node_modules/@ethersproject/units": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.6.0.tgz", + "integrity": "sha512-tig9x0Qmh8qbo1w8/6tmtyrm/QQRviBh389EQ+d8fP4wDsBrJBf08oZfoiz1/uenKK9M78yAP4PoR7SsVoTjsw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.6.0.tgz", + "integrity": "sha512-qMlSdOSTyp0MBeE+r7SUhr1jjDlC1zAXB8VD84hCnpijPQiSNbxr6GdiLXxpUs8UKzkDiNYYC5DRI3MZr+n+tg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.6.0", + "@ethersproject/abstract-signer": "^5.6.0", + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/hash": "^5.6.0", + "@ethersproject/hdnode": "^5.6.0", + "@ethersproject/json-wallets": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.0", + "@ethersproject/signing-key": "^5.6.0", + "@ethersproject/transactions": "^5.6.0", + "@ethersproject/wordlists": "^5.6.0" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.6.0.tgz", + "integrity": "sha512-G/XHj0hV1FxI2teHRfCGvfBUHFmU+YOSbCxlAMqJklxSa7QMiHFQfAxvwY2PFqgvdkxEKwRNr/eCjfAPEm2Ctg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.0" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.6.0.tgz", + "integrity": "sha512-q0bxNBfIX3fUuAo9OmjlEYxP40IB8ABgb7HjEZCL5IKubzV3j30CWi2rqQbjTS2HfoyQbfINoKcTVWP4ejwR7Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/hash": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.0" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", + "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/console/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/environment/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/types/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.10.tgz", + "integrity": "sha512-Q0YbBd6OTsXm8Y21+YUSDXupHnodNC2M4O18jtd3iwJ3+vMZNdKGols0a9G6JOK0dcJ3IdUUHoh908ZI6qhk8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@lerna/add": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/add/-/add-6.1.0.tgz", + "integrity": "sha512-f2cAeS1mE/p7QvSRn5TCgdUXw6QVbu8PeRxaTOxTThhTdJIWdXZfY00QjAsU6jw1PdYXK1qGUSwWOPkdR16mBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/bootstrap": "6.1.0", + "@lerna/command": "6.1.0", + "@lerna/filter-options": "6.1.0", + "@lerna/npm-conf": "6.1.0", + "@lerna/validation-error": "6.1.0", + "dedent": "^0.7.0", + "npm-package-arg": "8.1.1", + "p-map": "^4.0.0", + "pacote": "^13.6.1", + "semver": "^7.3.4" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/bootstrap": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-6.1.0.tgz", + "integrity": "sha512-aDxKqgxexVj/Z0B1aPu7P1iPbPqhk1FPkl/iayCmPlkAh90pYEH0uVytGzi1hFB5iXEfG7Pa6azGQywUodx/1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/command": "6.1.0", + "@lerna/filter-options": "6.1.0", + "@lerna/has-npm-version": "6.1.0", + "@lerna/npm-install": "6.1.0", + "@lerna/package-graph": "6.1.0", + "@lerna/pulse-till-done": "6.1.0", + "@lerna/rimraf-dir": "6.1.0", + "@lerna/run-lifecycle": "6.1.0", + "@lerna/run-topologically": "6.1.0", + "@lerna/symlink-binary": "6.1.0", + "@lerna/symlink-dependencies": "6.1.0", + "@lerna/validation-error": "6.1.0", + "@npmcli/arborist": "5.3.0", + "dedent": "^0.7.0", + "get-port": "^5.1.1", + "multimatch": "^5.0.0", + "npm-package-arg": "8.1.1", + "npmlog": "^6.0.2", + "p-map": "^4.0.0", + "p-map-series": "^2.1.0", + "p-waterfall": "^2.1.1", + "semver": "^7.3.4" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/changed": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-6.1.0.tgz", + "integrity": "sha512-p7C2tf1scmvoUC1Osck/XIKVKXAQ8m8neL8/rfgKSYsvUVjsOB1LbF5HH1VUZntE6S4OxkRxUQGkAHVf5xrGqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/collect-updates": "6.1.0", + "@lerna/command": "6.1.0", + "@lerna/listable": "6.1.0", + "@lerna/output": "6.1.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/check-working-tree": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-6.1.0.tgz", + "integrity": "sha512-hSciDmRqsNPevMhAD+SYbnhjatdb7UUu9W8vTyGtUXkrq2xtRZU0vAOgqovV8meirRkbC41pZePYKqyQtF0y3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/collect-uncommitted": "6.1.0", + "@lerna/describe-ref": "6.1.0", + "@lerna/validation-error": "6.1.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/child-process": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-6.1.0.tgz", + "integrity": "sha512-jhr3sCFeps6Y15SCrWEPvqE64i+QLOTSh+OzxlziCBf7ZEUu7sF0yA4n5bAqw8j43yCKhhjkf/ZLYxZe+pnl3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "execa": "^5.0.0", + "strong-log-transformer": "^2.1.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/clean": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-6.1.0.tgz", + "integrity": "sha512-LRK2hiNUiBhPe5tmJiefOVpkaX2Yob0rp15IFNIbuteRWUJg0oERFQo62WvnxwElfzKSOhr8OGuEq/vN4bMrRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/command": "6.1.0", + "@lerna/filter-options": "6.1.0", + "@lerna/prompt": "6.1.0", + "@lerna/pulse-till-done": "6.1.0", + "@lerna/rimraf-dir": "6.1.0", + "p-map": "^4.0.0", + "p-map-series": "^2.1.0", + "p-waterfall": "^2.1.1" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/cli": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-6.1.0.tgz", + "integrity": "sha512-p4G/OSPIrHiNkEl8bXrQdFOh4ORAZp2+ljvbXmAxpdf2qmopaUdr+bZYtIAxd+Z42SxRnDNz9IEyR0kOsARRQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/global-options": "6.1.0", + "dedent": "^0.7.0", + "npmlog": "^6.0.2", + "yargs": "^16.2.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/collect-uncommitted": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-6.1.0.tgz", + "integrity": "sha512-VvWvqDZG+OiF4PwV4Ro695r3+8ty4w+11Bnq8tbsbu5gq8qZiam8Fkc/TQLuNNqP0SPi4qmMPaIzWvSze3SmDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/child-process": "6.1.0", + "chalk": "^4.1.0", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/collect-updates": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-6.1.0.tgz", + "integrity": "sha512-dgH7kgstwCXFctylQ4cxuCmhwSIE6VJZfHdh2bOaLuncs6ATMErKWN/mVuFHuUWEqPDRyy5Ky40Cu9S40nUq5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/child-process": "6.1.0", + "@lerna/describe-ref": "6.1.0", + "minimatch": "^3.0.4", + "npmlog": "^6.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/command": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/command/-/command-6.1.0.tgz", + "integrity": "sha512-OnMqBDaEBY0C8v9CXIWFbGGKgsiUtZrnKVvQRbupMSZDKMpVGWIUd3X98Is9j9MAmk1ynhBMWE9Fwai5ML/mcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/child-process": "6.1.0", + "@lerna/package-graph": "6.1.0", + "@lerna/project": "6.1.0", + "@lerna/validation-error": "6.1.0", + "@lerna/write-log-file": "6.1.0", + "clone-deep": "^4.0.1", + "dedent": "^0.7.0", + "execa": "^5.0.0", + "is-ci": "^2.0.0", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/conventional-commits": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-6.1.0.tgz", + "integrity": "sha512-Tipo3cVr8mNVca4btzrCIzct59ZJWERT8/ZCZ/TQWuI4huUJZs6LRofLtB0xsGJAVZ7Vz2WRXAeH4XYgeUxutQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/validation-error": "6.1.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.1", + "npmlog": "^6.0.2", + "pify": "^5.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/create": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/create/-/create-6.1.0.tgz", + "integrity": "sha512-ZqlknXu0L29cV5mcfNgBLl+1RbKTWmNk8mj545zgXc7qQDgmrY+EVvrs8Cirey8C7bBpVkzP7Brzze0MSoB4rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/child-process": "6.1.0", + "@lerna/command": "6.1.0", + "@lerna/npm-conf": "6.1.0", + "@lerna/validation-error": "6.1.0", + "dedent": "^0.7.0", + "fs-extra": "^9.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": "^4.0.0", + "yargs-parser": "20.2.4" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/create-symlink": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-6.1.0.tgz", + "integrity": "sha512-ulMa5OUJEwEWBHSgCUNGxrcsJllq1YMYWqhufvIigmMPJ0Zv3TV1Hha5i2MsqLJAakxtW0pNuwdutkUTtUdgxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cmd-shim": "^5.0.0", + "fs-extra": "^9.1.0", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/create/node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/describe-ref": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-6.1.0.tgz", + "integrity": "sha512-0RQAYnxBaMz1SrEb/rhfR+8VeZx5tvCNYKRee5oXIDZdQ2c6/EPyrKCp3WcqiuOWY50SfGOVfxJEcxpK8Y3FNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/child-process": "6.1.0", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/diff": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-6.1.0.tgz", + "integrity": "sha512-GhP+jPDbcp9QcAMSAjFn4lzM8MKpLR1yt5jll+zUD831U1sL0I5t8HUosFroe5MoRNffEL/jHuI3SbC3jjqWjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/child-process": "6.1.0", + "@lerna/command": "6.1.0", + "@lerna/validation-error": "6.1.0", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/exec": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-6.1.0.tgz", + "integrity": "sha512-Ej6WlPHXLF6hZHsfD+J/dxeuTrnc0HIfIXR1DU//msHW5RNCdi9+I7StwreCAQH/dLEsdBjPg5chNmuj2JLQRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/child-process": "6.1.0", + "@lerna/command": "6.1.0", + "@lerna/filter-options": "6.1.0", + "@lerna/profiler": "6.1.0", + "@lerna/run-topologically": "6.1.0", + "@lerna/validation-error": "6.1.0", + "p-map": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/filter-options": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-6.1.0.tgz", + "integrity": "sha512-kPf92Z7uLsR6MUiXnyXWebaUWArLa15wLfpfTwIp5H3MNk1lTbuG7QnrxE7OxQj+ozFmBvXeV9fuwfLsYTfmOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/collect-updates": "6.1.0", + "@lerna/filter-packages": "6.1.0", + "dedent": "^0.7.0", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/filter-packages": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-6.1.0.tgz", + "integrity": "sha512-zW2avsZHs/ITE/37AEMhegGVHjiD0rgNk9bguNDfz6zaPa90UaW6PWDH6Tf4ThPRlbkl2Go48N3bFYHYSJKbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/validation-error": "6.1.0", + "multimatch": "^5.0.0", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/get-npm-exec-opts": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-6.1.0.tgz", + "integrity": "sha512-10Pdf+W0z7RT34o0SWlf+WVzz2/WbnTIJ1tQqXvXx6soj2L/xGLhOPvhJiKNtl4WlvUiO/zQ91yb83ESP4TZaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/get-packed": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-6.1.0.tgz", + "integrity": "sha512-lg0wPpV0wPekcD0mebJp619hMxsOgbZDOH5AkL/bCR217391eha0iPhQ0dU/G0Smd2vv6Cg443+J5QdI4LGRTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fs-extra": "^9.1.0", + "ssri": "^9.0.1", + "tar": "^6.1.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/github-client": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-6.1.0.tgz", + "integrity": "sha512-+/4PtDgsjt0VRRZtOCN2Piyu0asU/16gSZZy/opVb8dlT44lTrH/ZghrJLE4tSL8Nuv688kx0kSgbUG8BY54jQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/child-process": "6.1.0", + "@octokit/plugin-enterprise-rest": "^6.0.1", + "@octokit/rest": "^19.0.3", + "git-url-parse": "^13.1.0", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/gitlab-client": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-6.1.0.tgz", + "integrity": "sha512-fUI/ppXzxJafN9ceSl+FDgsYvu3iTsO6UW0WTD63pS32CfM+PiCryLQHzuc4RkyVW8WQH3aCR/GbaKCqbu52bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.1", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/global-options": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-6.1.0.tgz", + "integrity": "sha512-1OyJ/N1XJh3ZAy8S20c6th9C4yBm/k3bRIdC+z0XxpDaHwfNt8mT9kUIDt6AIFCUvVKjSwnIsMHwhzXqBnwYSA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/has-npm-version": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-6.1.0.tgz", + "integrity": "sha512-up5PVuP6BmKQ5/UgH/t2c5B1q4HhjwW3/bqbNayX6V0qNz8OijnMYvEUbxFk8fOdeN41qVnhAk0Tb5kbdtYh2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/child-process": "6.1.0", + "semver": "^7.3.4" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/import": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/import/-/import-6.1.0.tgz", + "integrity": "sha512-xsBhiKLUavATR32dAFL+WFY0yuab0hsM1eztKtRKk4wy7lSyxRfA5EIUcNCsLXx2xaDOKoMncCTXgNcpeYuqcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/child-process": "6.1.0", + "@lerna/command": "6.1.0", + "@lerna/prompt": "6.1.0", + "@lerna/pulse-till-done": "6.1.0", + "@lerna/validation-error": "6.1.0", + "dedent": "^0.7.0", + "fs-extra": "^9.1.0", + "p-map-series": "^2.1.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/info": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/info/-/info-6.1.0.tgz", + "integrity": "sha512-CsrWdW/Wyb4kcvHSnrsm7KYWFvjUNItu+ryeyWBZJtWYQOv45jNmWix6j2L4/w1+mMlWMjsfLmBscg82UBrF5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/command": "6.1.0", + "@lerna/output": "6.1.0", + "envinfo": "^7.7.4" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/init": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/init/-/init-6.1.0.tgz", + "integrity": "sha512-z8oUeVjn+FQYAtepAw6G47cGodLyBAyNoEjO3IsJjQLWE1yH3r83L2sjyD/EckgR3o2VTEzrKo4ArhxLp2mNmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/child-process": "6.1.0", + "@lerna/command": "6.1.0", + "@lerna/project": "6.1.0", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0", + "write-json-file": "^4.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/link": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/link/-/link-6.1.0.tgz", + "integrity": "sha512-7OD2lYNQHl6Kl1KYmplt8KoWjVHdiaqpYqwD38AwcB09YN58nGmo4aJgC12Fdx8DSNjkumgM0ROg/JOjMCTIzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/command": "6.1.0", + "@lerna/package-graph": "6.1.0", + "@lerna/symlink-dependencies": "6.1.0", + "@lerna/validation-error": "6.1.0", + "p-map": "^4.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/list": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/list/-/list-6.1.0.tgz", + "integrity": "sha512-7/g2hjizkvVnBGpVm+qC7lUFGhZ/0GIMUbGQwnE6yXDGm8yP9aEcNVkU4JGrDWW+uIklf9oodnMHaLXd/FJe6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/command": "6.1.0", + "@lerna/filter-options": "6.1.0", + "@lerna/listable": "6.1.0", + "@lerna/output": "6.1.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/listable": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-6.1.0.tgz", + "integrity": "sha512-3KZ9lQ9AtNfGNH/mYJYaMKCiF2EQvLLBGYkWHeIzIs6foegcZNXe0Cyv3LNXuo5WslMNr5RT4wIgy3BOoAxdtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/query-graph": "6.1.0", + "chalk": "^4.1.0", + "columnify": "^1.6.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/log-packed": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-6.1.0.tgz", + "integrity": "sha512-Sq2HZJAcPuoNeEHeIutcPYQCyWBxLyVGvEhgsP3xTe6XkBGQCG8piCp9wX+sc2zT+idPdpI6qLqdh85yYIMMhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "byte-size": "^7.0.0", + "columnify": "^1.6.0", + "has-unicode": "^2.0.1", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/npm-conf": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-6.1.0.tgz", + "integrity": "sha512-+RD3mmJe9XSQj7Diibs0+UafAHPcrFCd29ODpDI+tzYl4MmYZblfrlL6mbSCiVYCZQneQ8Uku3P0r+DlbYBaFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "config-chain": "^1.1.12", + "pify": "^5.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/npm-dist-tag": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-6.1.0.tgz", + "integrity": "sha512-1zo+Yww/lvWJWZnEXpke9dZSb5poDzhUM/pQNqAQYSlbZ96o18SuCR6TEi5isMPiw63Aq1MMzbUqttQfJ11EOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/otplease": "6.1.0", + "npm-package-arg": "8.1.1", + "npm-registry-fetch": "^13.3.0", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/npm-install": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-6.1.0.tgz", + "integrity": "sha512-1SHmOHZA1YJuUctLQBRjA2+yMp+UNYdOBsFb3xUVT7MjWnd1Zl0toT3jxGu96RNErD9JKkk/cGo/Aq+DU3s9pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/child-process": "6.1.0", + "@lerna/get-npm-exec-opts": "6.1.0", + "fs-extra": "^9.1.0", + "npm-package-arg": "8.1.1", + "npmlog": "^6.0.2", + "signal-exit": "^3.0.3", + "write-pkg": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/npm-publish": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-6.1.0.tgz", + "integrity": "sha512-N0LdR1ImZQw1r4cYaKtVbBhBPtj4Zu9NbvygzizEP5HuTfxZmE1Ans3w93Kks9VTXZXob8twNbXnzBwzTyEpEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/otplease": "6.1.0", + "@lerna/run-lifecycle": "6.1.0", + "fs-extra": "^9.1.0", + "libnpmpublish": "^6.0.4", + "npm-package-arg": "8.1.1", + "npmlog": "^6.0.2", + "pify": "^5.0.0", + "read-package-json": "^5.0.1" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/npm-run-script": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-6.1.0.tgz", + "integrity": "sha512-7p13mvdxdY5+VqWvvtMsMDeyCRs0PrrTmSHRO+FKuLQuGhBvUo05vevcMEOQNDvEvl/tXPrOVbeGCiGubYTCLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/child-process": "6.1.0", + "@lerna/get-npm-exec-opts": "6.1.0", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/otplease": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-6.1.0.tgz", + "integrity": "sha512-gqSE6IbaD4IeNJePkaDLaFLoGp0Ceu35sn7z0AHAOoHiQGGorOmvM+h1Md3xZZRSXQmY9LyJVhG5eRa38SoG4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/prompt": "6.1.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/output": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/output/-/output-6.1.0.tgz", + "integrity": "sha512-mgCIzLKIuroytXuxjTB689ERtpfgyNXW0rMv9WHOa6ufQc+QJPjh3L4jVsOA0l+/OxZyi97PUXotduNj+0cbnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/pack-directory": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-6.1.0.tgz", + "integrity": "sha512-Xsixqm2nkGXs9hvq08ClbGpRlCYnlBV4TwSrLttIDL712RlyXoPe2maJzTUqo9OXBbOumFSahUEInCMT2OS05g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/get-packed": "6.1.0", + "@lerna/package": "6.1.0", + "@lerna/run-lifecycle": "6.1.0", + "@lerna/temp-write": "6.1.0", + "npm-packlist": "^5.1.1", + "npmlog": "^6.0.2", + "tar": "^6.1.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/package": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/package/-/package-6.1.0.tgz", + "integrity": "sha512-PyNFtdH2IcLasp/nyMDshmeXotriOSlhbeFIxhdl1XuGj5v1so3utMSOrJMO5kzZJQg5zyx8qQoxL+WH/hkrVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "load-json-file": "^6.2.0", + "npm-package-arg": "8.1.1", + "write-pkg": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/package-graph": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-6.1.0.tgz", + "integrity": "sha512-yGyxd/eHTDjkpnBbDhTV0hwKF+i01qZc+6/ko65wOsh8xtgqpQeE6mtdgbvsLKcuMcIQ7PDy1ntyIv9phg14gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/prerelease-id-from-version": "6.1.0", + "@lerna/validation-error": "6.1.0", + "npm-package-arg": "8.1.1", + "npmlog": "^6.0.2", + "semver": "^7.3.4" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/prerelease-id-from-version": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-6.1.0.tgz", + "integrity": "sha512-ngC4I6evvZztB6aOaSDEnhUgRTlqX3TyBXwWwLGTOXCPaCQBTPaLNokhmRdJ+ZVdZ4iHFbzEDSL07ubZrYUcmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.3.4" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/profiler": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-6.1.0.tgz", + "integrity": "sha512-WFDQNpuqPqMJLg8llvrBHF8Ib5Asgp23lMeNUe89T62NUX6gkjVBTYdjsduxM0tZH6Pa0GAGaQcha97P6fxfdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fs-extra": "^9.1.0", + "npmlog": "^6.0.2", + "upath": "^2.0.1" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/project": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/project/-/project-6.1.0.tgz", + "integrity": "sha512-EOkfjjrTM16c3GUxGqcfYD2stV35p9mBEmkF41NPmyjfbzjol/irDF1r6Q7BsQSRsdClMJRCeZ168xdSxC2X0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/package": "6.1.0", + "@lerna/validation-error": "6.1.0", + "cosmiconfig": "^7.0.0", + "dedent": "^0.7.0", + "dot-prop": "^6.0.1", + "glob-parent": "^5.1.1", + "globby": "^11.0.2", + "js-yaml": "^4.1.0", + "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" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/prompt": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-6.1.0.tgz", + "integrity": "sha512-981J/C53TZ2l2mFVlWJN7zynSzf5GEHKvKQa12Td9iknhASZOuwTAWb6eq46246Ant6W5tWwb0NSPu3I5qtcrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inquirer": "^8.2.4", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/publish": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-6.1.0.tgz", + "integrity": "sha512-XtvuydtU0IptbAapLRgoN1AZj/WJR+e3UKnx9BQ1Dwc+Fpg2oqPxR/vi+6hxAsr95pdQ5CnWBdgS+dg2wEUJ7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/check-working-tree": "6.1.0", + "@lerna/child-process": "6.1.0", + "@lerna/collect-updates": "6.1.0", + "@lerna/command": "6.1.0", + "@lerna/describe-ref": "6.1.0", + "@lerna/log-packed": "6.1.0", + "@lerna/npm-conf": "6.1.0", + "@lerna/npm-dist-tag": "6.1.0", + "@lerna/npm-publish": "6.1.0", + "@lerna/otplease": "6.1.0", + "@lerna/output": "6.1.0", + "@lerna/pack-directory": "6.1.0", + "@lerna/prerelease-id-from-version": "6.1.0", + "@lerna/prompt": "6.1.0", + "@lerna/pulse-till-done": "6.1.0", + "@lerna/run-lifecycle": "6.1.0", + "@lerna/run-topologically": "6.1.0", + "@lerna/validation-error": "6.1.0", + "@lerna/version": "6.1.0", + "fs-extra": "^9.1.0", + "libnpmaccess": "^6.0.3", + "npm-package-arg": "8.1.1", + "npm-registry-fetch": "^13.3.0", + "npmlog": "^6.0.2", + "p-map": "^4.0.0", + "p-pipe": "^3.1.0", + "pacote": "^13.6.1", + "semver": "^7.3.4" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/pulse-till-done": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-6.1.0.tgz", + "integrity": "sha512-a2RVT82E4R9nVXtehzp2TQL6iXp0QfEM3bu8tBAR/SfI1A9ggZWQhuuUqtRyhhVCajdQDOo7rS0UG7R5JzK58w==", + "dev": true, + "license": "MIT", + "dependencies": { + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/query-graph": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-6.1.0.tgz", + "integrity": "sha512-YkyCc+6aR7GlCOcZXEKPcl5o5L2v+0YUNs59JrfAS0mctFosZ/2tP7pkdu2SI4qXIi5D0PMNsh/0fRni56znsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/package-graph": "6.1.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/resolve-symlink": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-6.1.0.tgz", + "integrity": "sha512-8ILO+h5fsE0q8MSLfdL+MT1GEsNhAB1fDyMkSsYgLRCsssN/cViZbffpclZyT/EfAhpyKfBCHZ0CmT1ZGofU1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fs-extra": "^9.1.0", + "npmlog": "^6.0.2", + "read-cmd-shim": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/rimraf-dir": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-6.1.0.tgz", + "integrity": "sha512-J9YeGHkCCeAIzsnKURYeGECBexiIii6HA+Bbd+rAgoKPsNCOj6ql4+qJE8Jbd7fQEFNDPQeBCYvM7JcdMc0WSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/child-process": "6.1.0", + "npmlog": "^6.0.2", + "path-exists": "^4.0.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/run": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/run/-/run-6.1.0.tgz", + "integrity": "sha512-vlEEKPcTloiob6EK7gxrjEdB6fQQ/LNfWhSJCGxJlvNVbrMpoWIu0Kpp20b0nE+lzX7rRJ4seWr7Wdo/Fjub4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/command": "6.1.0", + "@lerna/filter-options": "6.1.0", + "@lerna/npm-run-script": "6.1.0", + "@lerna/output": "6.1.0", + "@lerna/profiler": "6.1.0", + "@lerna/run-topologically": "6.1.0", + "@lerna/timer": "6.1.0", + "@lerna/validation-error": "6.1.0", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/run-lifecycle": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-6.1.0.tgz", + "integrity": "sha512-GbTdKxL+hWHEPgyBEKtqY9Nf+jFlt6YLtP5VjEVc5SdLkm+FeRquar9/YcZVUbzr3c+NJwWNgVjHuePfowdpUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/npm-conf": "6.1.0", + "@npmcli/run-script": "^4.1.7", + "npmlog": "^6.0.2", + "p-queue": "^6.6.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/run-topologically": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-6.1.0.tgz", + "integrity": "sha512-kpTaSBKdKjtf61be8Z1e7TIaMt/aksfxswQtpFxEuKDsPsdHfR8htSkADO4d/3SZFtmcAHIHNCQj9CaNj4O4Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/query-graph": "6.1.0", + "p-queue": "^6.6.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/symlink-binary": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-6.1.0.tgz", + "integrity": "sha512-DaiRNZk/dvomNxgEaTW145PyL7vIGP7rvnfXV2FO+rjX8UUSNUOjmVmHlYfs64gV9Eqx/dLfQClIbKcwYMD83A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/create-symlink": "6.1.0", + "@lerna/package": "6.1.0", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/symlink-dependencies": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-6.1.0.tgz", + "integrity": "sha512-hrTvtY1Ek+fLA4JjXsKsvwPjuJD0rwB/+K4WY57t00owj//BpCsJ37w3kkkS7f/PcW/5uRjCuHcY67LOEwsRxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/create-symlink": "6.1.0", + "@lerna/resolve-symlink": "6.1.0", + "@lerna/symlink-binary": "6.1.0", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0", + "p-map-series": "^2.1.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/temp-write": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/temp-write/-/temp-write-6.1.0.tgz", + "integrity": "sha512-ZcQl88H9HbQ/TeWUOVt+vDYwptm7kwprGvj9KkZXr9S5Bn6SiKRQOeydCCfCrQT+9Q3dm7QZXV6rWzLsACcAlQ==", + "dev": true, + "license": "MIT", + "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" + } + }, + "node_modules/@lerna/temp-write/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@lerna/timer": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-6.1.0.tgz", + "integrity": "sha512-du+NQ9q7uO4d2nVU4AD2DSPuAZqUapA/bZKuVpFVxvY9Qhzb8dQKLsFISe4A9TjyoNAk8ZeWK0aBc/6N+Qer9A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/validation-error": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-6.1.0.tgz", + "integrity": "sha512-q0c3XCi5OpyTr8AcfbisS6e3svZaJF/riCvBDqRMaQUT4A8QOPzB4fVF3/+J2u54nidBuTlIk0JZu9aOdWTUkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/version": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/version/-/version-6.1.0.tgz", + "integrity": "sha512-RUxVFdzHt0739lRNMrAbo6HWcFrcyG7atM1pn+Eo61fUoA5R/9N4bCk4m9xUGkJ/mOcROjuwAGe+wT1uOs58Bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/check-working-tree": "6.1.0", + "@lerna/child-process": "6.1.0", + "@lerna/collect-updates": "6.1.0", + "@lerna/command": "6.1.0", + "@lerna/conventional-commits": "6.1.0", + "@lerna/github-client": "6.1.0", + "@lerna/gitlab-client": "6.1.0", + "@lerna/output": "6.1.0", + "@lerna/prerelease-id-from-version": "6.1.0", + "@lerna/prompt": "6.1.0", + "@lerna/run-lifecycle": "6.1.0", + "@lerna/run-topologically": "6.1.0", + "@lerna/temp-write": "6.1.0", + "@lerna/validation-error": "6.1.0", + "@nrwl/devkit": ">=14.8.6 < 16", + "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" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/write-log-file": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-6.1.0.tgz", + "integrity": "sha512-09omu2w4NCt8mJH/X9ZMuToQQ3xu/KpC7EU4yDl2Qy8nxKf8HiG8Oe+YYNprngmkdsq60F5eUZvoiFDZ5JeGIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "npmlog": "^6.0.2", + "write-file-atomic": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/write-log-file/node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@nftx/api": { + "resolved": "packages/api", + "link": true + }, + "node_modules/@nftx/config": { + "resolved": "packages/config", + "link": true + }, + "node_modules/@nftx/constants": { + "resolved": "packages/constants", + "link": true + }, + "node_modules/@nftx/core": { + "resolved": "packages/core", + "link": true + }, + "node_modules/@nftx/react": { + "resolved": "packages/react", + "link": true + }, + "node_modules/@nftx/subgraph": { + "resolved": "packages/subgraph", + "link": true + }, + "node_modules/@nftx/trade": { + "resolved": "packages/trade", + "link": true + }, + "node_modules/@nftx/types": { + "resolved": "packages/types", + "link": true + }, + "node_modules/@nftx/utils": { + "resolved": "packages/utils", + "link": true + }, + "node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/arborist": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-5.3.0.tgz", + "integrity": "sha512-+rZ9zgL1lnbl8Xbb1NQdMjveOMwj4lIYfcDtyJHHi5x4X8jtR6m8SXooJMZy5vmFVZ8w7A2Bnd/oX9eTuU8w5A==", + "dev": true, + "license": "ISC", + "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": "^4.1.3", + "bin-links": "^3.0.0", + "cacache": "^16.0.6", + "common-ancestor-path": "^1.0.1", + "json-parse-even-better-errors": "^2.3.1", + "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.6.1", + "parse-conflict-json": "^2.0.1", + "proc-log": "^2.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", + "semver": "^7.3.7", + "ssri": "^9.0.0", + "treeverse": "^2.0.0", + "walk-up-path": "^1.0.0" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/arborist/node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/arborist/node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/@npmcli/arborist/node_modules/npm-package-arg": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "dev": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/arborist/node_modules/npm-package-arg/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/git": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", + "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^3.0.0", + "lru-cache": "^7.4.4", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^7.0.0", + "proc-log": "^2.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/@npmcli/git/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/git/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "installed-package-contents": "index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@npmcli/installed-package-contents/node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true, + "license": "ISC" + }, + "node_modules/@npmcli/map-workspaces": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.4.tgz", + "integrity": "sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^1.0.1", + "glob": "^8.0.1", + "minimatch": "^5.0.1", + "read-package-json-fast": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/map-workspaces/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@npmcli/map-workspaces/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", + "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/metavuln-calculator": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-3.1.1.tgz", + "integrity": "sha512-n69ygIaqAedecLeVH3KnO39M6ZHiJ2dEv5A7DGvcqCB8q17BGUgW8QaanIkbWUo2aYGZqJaOORTLAlIvKjNDKA==", + "dev": true, + "license": "ISC", + "dependencies": { + "cacache": "^16.0.0", + "json-parse-even-better-errors": "^2.3.1", + "pacote": "^13.0.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/metavuln-calculator/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/name-from-folder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz", + "integrity": "sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==", + "dev": true, + "license": "ISC" + }, + "node_modules/@npmcli/node-gyp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", + "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/package-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-2.0.0.tgz", + "integrity": "sha512-42jnZ6yl16GzjWSH7vtrmWyJDGVa/LXPdpN2rcUWolFjc9ON2N3uz0qdBbQACfmhuJZ2lbKYtmK5qx68ZPLHMA==", + "dev": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", + "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", + "dev": true, + "license": "ISC", + "dependencies": { + "infer-owner": "^1.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", + "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^2.0.0", + "@npmcli/promise-spawn": "^3.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^2.0.3", + "which": "^2.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@nrwl/cli": { + "version": "15.3.3", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-15.3.3.tgz", + "integrity": "sha512-ZWTmVP9H3ukppWWGaS/s3Nym2nOYgnt6eHtuUFNsroz8LesG5oFAJviOz9jDEM/b+pLIrvYfU5aAGZqrtM3Z2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "nx": "15.3.3" + } + }, + "node_modules/@nrwl/devkit": { + "version": "15.3.3", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-15.3.3.tgz", + "integrity": "sha512-48R9HAp6r6umWNXTlVTMsH94YYjU/XUPLDTtXBgKESMVbdq8Fk+HDHuN0thXG5dL6DFkXgD0MICLm3jSQU6xMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@phenomnomnominal/tsquery": "4.1.1", + "ejs": "^3.1.7", + "ignore": "^5.0.4", + "semver": "7.3.4", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "nx": ">= 14 <= 16" + } + }, + "node_modules/@nrwl/devkit/node_modules/ignore": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", + "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@nrwl/devkit/node_modules/semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nrwl/tao": { + "version": "15.3.3", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-15.3.3.tgz", + "integrity": "sha512-f9+VwhlJ/7TWpjHSgoUOAA067uP9DmzABMY9HC5OREEDaCx+rzYEvbLAPv6cXzWw+6IYM6cyKw0zWSQrdEVrWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "nx": "15.3.3" + }, + "bin": { + "tao": "index.js" + } + }, + "node_modules/@octokit/auth-token": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.2.tgz", + "integrity": "sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^8.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/core": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.1.0.tgz", + "integrity": "sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ==", + "dev": true, + "license": "MIT", + "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": "^8.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/endpoint": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.3.tgz", + "integrity": "sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^8.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/graphql": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.4.tgz", + "integrity": "sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/request": "^6.0.0", + "@octokit/types": "^8.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", + "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/plugin-enterprise-rest": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", + "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-5.0.1.tgz", + "integrity": "sha512-7A+rEkS70pH36Z6JivSlR7Zqepz3KVucEFVDnSrgHXzG7WLAzYwcHZbKdfTXHwuTHbkT1vKvz7dHl1+HNf6Qyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^8.0.0" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=4" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.7.0.tgz", + "integrity": "sha512-orxQ0fAHA7IpYhG2flD2AygztPlGYNAdlzYz8yrD8NDgelPfOYoRPROfEyIe035PlxvbYrgkfUZIhSBKju/Cvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^8.0.0", + "deprecation": "^2.3.1" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/request": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.2.tgz", + "integrity": "sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/endpoint": "^7.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^8.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/request-error": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.2.tgz", + "integrity": "sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^8.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/rest": { + "version": "19.0.5", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.5.tgz", + "integrity": "sha512-+4qdrUFq2lk7Va+Qff3ofREQWGBeoTKNqlJO+FGjFP35ZahP+nBenhZiGdu8USSgmq4Ky3IJ/i4u0xbLqHaeow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/core": "^4.1.0", + "@octokit/plugin-paginate-rest": "^5.0.0", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^6.7.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.0.0.tgz", + "integrity": "sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^14.0.0" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", + "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-addon-api": "^3.2.1", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher/node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@phenomnomnominal/tsquery": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz", + "integrity": "sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esquery": "^1.0.1" + }, + "peerDependencies": { + "typescript": "^3 || ^4" + } + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.17.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", + "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/babel-types": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.11.tgz", + "integrity": "sha512-pkPtJUUY+Vwv6B1inAz55rQvivClHJxc9aVEPPmaq2cbyeMLCiDpbKpcKyX4LAwpNGi+SHBv0tHv6+0gXv0P2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/babylon": { + "version": "6.16.6", + "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.6.tgz", + "integrity": "sha512-G4yqdVlhr6YhzLXFKy5F7HtRBU8Y23+iWy7UKthMq/OSQnL1hbsoeXESQ2LY8zEDlknipDG3nRGhUC9tkwvy/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/babel-types": "*" + } + }, + "node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/bn.js/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/graceful-fs/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "27.5.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.0.tgz", + "integrity": "sha512-9RBFx7r4k+msyj/arpfaa0WOOEcaAZNmN+j80KFbFCoSqCJGHTz7YMAMGQW9Xmqm5w6l5c25vbSjMwlikJi5+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-matcher-utils": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/linkify-it": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", + "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/markdown-it": { + "version": "12.2.3", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", + "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/linkify-it": "*", + "@types/mdurl": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", + "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "18.15.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.1.tgz", + "integrity": "sha512-U2TWca8AeHSmbpi314QBESRk7oPjSZjDsR+c+H4ECC1l+kFgpZf8Ydhv3SJpPy51VyZHHqxlb6mTTqYNNRVAIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/pbkdf2/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "license": "MIT" + }, + "node_modules/@types/prettier": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz", + "integrity": "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.0.9", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz", + "integrity": "sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/resolve/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/secp256k1/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "license": "MIT" + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.22.0.tgz", + "integrity": "sha512-YCiy5PUzpAeOPGQ7VSGDEY2NeYUV1B0swde2e0HzokRsHBYjSdF6DZ51OuRZxVPHx0032lXGLvOMls91D8FXlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "5.22.0", + "@typescript-eslint/type-utils": "5.22.0", + "@typescript-eslint/utils": "5.22.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.22.0.tgz", + "integrity": "sha512-piwC4krUpRDqPaPbFaycN70KCP87+PC5WZmrWs+DlVOxxmF+zI6b6hETv7Quy4s9wbkV16ikMeZgXsvzwI3icQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "5.22.0", + "@typescript-eslint/types": "5.22.0", + "@typescript-eslint/typescript-estree": "5.22.0", + "debug": "^4.3.2" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.22.0.tgz", + "integrity": "sha512-yA9G5NJgV5esANJCO0oF15MkBO20mIskbZ8ijfmlKIvQKg0ynVKfHZ15/nhAJN5m8Jn3X5qkwriQCiUntC9AbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.22.0", + "@typescript-eslint/visitor-keys": "5.22.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.22.0.tgz", + "integrity": "sha512-iqfLZIsZhK2OEJ4cQ01xOq3NaCuG5FQRKyHicA3xhZxMgaxQazLUHbH/B2k9y5i7l3+o+B5ND9Mf1AWETeMISA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "5.22.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.22.0.tgz", + "integrity": "sha512-T7owcXW4l0v7NTijmjGWwWf/1JqdlWiBzPqzAWhobxft0SiEvMJB56QXmeCQjrPuM8zEfGUKyPQr/L8+cFUBLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.22.0.tgz", + "integrity": "sha512-EyBEQxvNjg80yinGE2xdhpDYm41so/1kOItl0qrjIiJ1kX/L/L8WWGmJg8ni6eG3DwqmOzDqOhe6763bF92nOw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "5.22.0", + "@typescript-eslint/visitor-keys": "5.22.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.22.0.tgz", + "integrity": "sha512-HodsGb037iobrWSUMS7QH6Hl1kppikjA1ELiJlNSTYf/UdMEwzgj0WIp+lBNb6WZ3zTwb0tEz51j0Wee3iJ3wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.22.0", + "@typescript-eslint/types": "5.22.0", + "@typescript-eslint/typescript-estree": "5.22.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.22.0.tgz", + "integrity": "sha512-DbgTqn2Dv5RFWluG88tn0pP6Ex0ROF+dpDO1TNNZdRtLjUr6bdznjA6f/qNqJLjd2PgguAES2Zgxh/JzwzETDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.22.0", + "eslint-visitor-keys": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@wagmi/chains": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@wagmi/chains/-/chains-0.2.11.tgz", + "integrity": "sha512-aMrI1zKKXdeAaiTxBiv+3Zfgd3IajCDpxBtPPvpjXuWVRe4ikwzbyZ1HARKj3V1+wNMPng8EJiWpN966PcvROg==", + "funding": [ + { + "type": "gitcoin", + "url": "https://wagmi.sh/gitcoin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/wagmi-dev" + } + ], + "license": "MIT", + "peerDependencies": { + "typescript": ">=4.9.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/@yarnpkg/parsers": { + "version": "3.0.0-rc.33", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.33.tgz", + "integrity": "sha512-az35wEPH00kW6eZDqHC0BumzAB4XD+YJb1b5tHEfsy73viCN7uGy8kvutwig5bgVwt1Hx7GuU09G50Sc5osBlA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "js-yaml": "^3.10.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.15.0" + } + }, + "node_modules/@yarnpkg/parsers/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@yarnpkg/parsers/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@zkochan/js-yaml": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", + "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true, + "license": "ISC" + }, + "node_modules/abitype": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.7.1.tgz", + "integrity": "sha512-VBkRHTDZf9Myaek/dO3yMmOzB/y2s3Zo6nVU7yaw1G+TvCHAjwaJzNGN9yo4K5D8bU/VZXKP1EJpRhFr862PlQ==", + "license": "MIT", + "peerDependencies": { + "typescript": ">=4.9.4", + "zod": "^3 >=3.19.1" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, + "node_modules/ace-builds": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.14.0.tgz", + "integrity": "sha512-3q8LvawomApRCt4cC0OzxVjDsZ609lDbm8l0Xl9uqG06dKEq4RT0YXLUyk7J2SxmqIp5YXzZNw767Dr8GKUruw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha512-uWttZCk96+7itPxK8xCzY86PnxKTMrReKDqrHzv42VQY0K30PUO8WY13WMOuI+cOdX4EIdzdvQ8k6jkuGRFMYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^4.0.4" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha512-fu2ygVGuMmlzG8ZeRJ0bvR41nsAkxxhbyk8bZ1SS521Z7vmgJFTQQlfz/Mp/nJexGBz+v8sC9bM6+lNgskt4Ug==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "license": "MIT" + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha512-GrTZLRpmp6wIC2ztrWW9MjjTgSKccffgFagbNDOX95/dcjEcYZibYTeaOntySQLcdw1ztBoFkviiUvTMbb9MYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/align-text/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "dev": true, + "license": "MIT" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true, + "license": "MIT" + }, + "node_modules/ast-types": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.12.4.tgz", + "integrity": "sha512-ky/YVYCbtVAS8TdMIaTiPFHwEpRB5z1hctepJplTr3UW5q8TDrpIMCILyk8pmLxGtn2KCtC/lSn7zOsaI7nzDw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true, + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/axios": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.1.tgz", + "integrity": "sha512-I88cFiGu9ryt/tfVEi4kX2SITsvDddTajXTOFmt2uK1ZVA8LytjtdeyefdQWEf5PU8w+4SSJDoYnggflB5tW4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-runtime/node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "node_modules/babel-types/node_modules/to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true, + "license": "MIT", + "bin": { + "babylon": "bin/babylon.js" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "license": "MIT" + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/better-docs": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/better-docs/-/better-docs-2.7.2.tgz", + "integrity": "sha512-aIOsGhhcTIDAJfBTABIPDs3q98dfNF85yUwmKShXb3ZG6e7s+ojBePiDqvFwy/MpnjYwuSbuzkbEv4iPWcSuTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "brace": "^0.11.1", + "react-ace": "^9.5.0", + "react-docgen": "^5.4.0", + "react-frame-component": "^5.2.1", + "typescript": "^4.5.4", + "underscore": "^1.13.2", + "vue-docgen-api": "^3.26.0", + "vue2-ace-editor": "^0.0.15" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "react": "^17.0.2", + "react-dom": "^17.0.2" + } + }, + "node_modules/bignumber.js": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz", + "integrity": "sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bin-links": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-3.0.3.tgz", + "integrity": "sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA==", + "dev": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^5.0.0", + "mkdirp-infer-owner": "^2.0.0", + "npm-normalize-package-bin": "^2.0.0", + "read-cmd-shim": "^3.0.0", + "rimraf": "^3.0.0", + "write-file-atomic": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/bin-links/node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "license": "MIT" + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "license": "MIT" + }, + "node_modules/brace": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/brace/-/brace-0.11.1.tgz", + "integrity": "sha512-Fc8Ne62jJlKHiG/ajlonC4Sd66Pq68fFwK4ihJGNZpGqboc324SQk+lRvMzpPRuJOmfrJefdG8/7JdWX4bzJ2Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "license": "MIT" + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "license": "MIT", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", + "escalade": "^3.1.1", + "node-releases": "^2.0.3", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "license": "MIT", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer-reverse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-reverse/-/buffer-reverse-1.0.1.tgz", + "integrity": "sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==", + "license": "MIT" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "license": "MIT" + }, + "node_modules/builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/byte-size": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-7.0.1.tgz", + "integrity": "sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/c8": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz", + "integrity": "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==", + "dev": true, + "license": "ISC", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^2.0.0", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-reports": "^3.1.4", + "rimraf": "^3.0.2", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9" + }, + "bin": { + "c8": "bin/c8.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/c8/node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/c8/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/c8/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/c8/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8/node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/c8/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8/node_modules/v8-to-istanbul": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", + "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", + "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys/node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001338", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001338.tgz", + "integrity": "sha512-1gLHWyfVoRDsHieO+CaeYe7jSo/MT7D7lhaXUiwwbuR5BwQxORs0f1tAwUSQr3YbxRXJvxHM/PA5FfPQRnsPeQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/catharsis": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", + "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.15" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha512-Baz3aNe2gd2LP2qk5U+sDk/m4oSuwSDcBfayTCTBoWpfIGO5XFxPmjILQII4NGiZjD6DoDI6kf7gKaxkf7s3VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-regex": "^1.0.3" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true, + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true, + "license": "MIT" + }, + "node_modules/clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cmd-shim": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz", + "integrity": "sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==", + "dev": true, + "license": "ISC", + "dependencies": { + "mkdirp-infer-owner": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/columnify": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/common-ancestor-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", + "dev": true, + "license": "ISC" + }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/compare-func/node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "engines": [ + "node >= 6.0" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true, + "license": "ISC" + }, + "node_modules/constantinople": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", + "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/babel-types": "^7.0.0", + "@types/babylon": "^6.16.2", + "babel-types": "^6.26.0", + "babylon": "^6.18.0" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", + "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^5.0.0", + "conventional-commits-parser": "^3.2.0", + "dateformat": "^3.0.0", + "get-pkg-repo": "^4.0.0", + "git-raw-commits": "^2.0.8", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.1.1", + "lodash": "^4.17.15", + "normalize-package-data": "^3.0.0", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/conventional-commits-filter": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-recommended-bump": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", + "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^2.3.4", + "conventional-commits-filter": "^2.0.7", + "conventional-commits-parser": "^3.2.0", + "git-raw-commits": "^2.0.8", + "git-semver-tags": "^4.1.1", + "meow": "^8.0.0", + "q": "^1.5.1" + }, + "bin": { + "conventional-recommended-bump": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/convert-source-map/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT" + }, + "node_modules/core-js-compat": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.4.tgz", + "integrity": "sha512-dIWcsszDezkFZrfm1cnB4f/J85gyhiCpxbgBdohWCDtSVuAaChTSpPV7ldOQf/Xds2U5xCIJZOK82G4ZPAIswA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.20.3", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-js": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz", + "integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==", + "license": "MIT" + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true, + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==", + "dev": true, + "license": "MIT" + }, + "node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true, + "license": "MIT" + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true, + "license": "MIT" + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/diff-match-patch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", + "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true, + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.137", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", + "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", + "dev": true, + "license": "ISC" + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", + "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint/eslintrc": "^1.2.3", + "@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.6.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" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.14.0.tgz", + "integrity": "sha512-ERO68sOYwm5UuLvSJTY7w7NP2c8S4UcXs3X1GBX8cwOr+ShOcDBbCY5mH4zxz0jsYCdJ8ve8Mv9n2YGJMB1aeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-to-babel": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/estree-to-babel/-/estree-to-babel-3.2.1.tgz", + "integrity": "sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.1.6", + "@babel/types": "^7.2.0", + "c8": "^7.6.0" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/estree-to-babel/node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/estree-to-babel/node_modules/@babel/generator": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz", + "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.5", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/estree-to-babel/node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/estree-to-babel/node_modules/@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/estree-to-babel/node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/estree-to-babel/node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/estree-to-babel/node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/estree-to-babel/node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/estree-to-babel/node_modules/@babel/parser": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz", + "integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==", + "dev": true, + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/estree-to-babel/node_modules/@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/estree-to-babel/node_modules/@babel/traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz", + "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.5", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.5", + "@babel/types": "^7.20.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/estree-to-babel/node_modules/@babel/types": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz", + "integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/estree-to-babel/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/estree-to-babel/node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/estree-to-babel/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estree-to-babel/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estree-to-babel/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/estree-to-babel/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true, + "license": "MIT" + }, + "node_modules/estree-to-babel/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/estree-to-babel/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ethereum-abi-types-generator": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/ethereum-abi-types-generator/-/ethereum-abi-types-generator-1.3.2.tgz", + "integrity": "sha512-hoAwuxXYLZpnmBByN8fLLqlY4o5KEI8WSY9g2bC0x83sQVsrihickY1siVVcmjdOa4NPin2Bwtj4vYHcfI2jLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/bn.js": "^4.11.6", + "bignumber.js": "^9.0.0", + "colors": "^1.4.0", + "dotenv": "^8.2.0", + "ethers": "^4.0.47", + "ethersv5": "npm:ethers@^5.0.32", + "fs-extra": "^9.0.0", + "prettier": "^2.0.5", + "reflect-metadata": "^0.1.13", + "yargs": "^15.3.1" + }, + "bin": { + "abi-types-generator": "dist/bin/generator-cli.js" + } + }, + "node_modules/ethereum-abi-types-generator/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/ethereum-abi-types-generator/node_modules/ethers": { + "version": "4.0.49", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz", + "integrity": "sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "aes-js": "3.0.0", + "bn.js": "^4.11.9", + "elliptic": "6.5.4", + "hash.js": "1.1.3", + "js-sha3": "0.5.7", + "scrypt-js": "2.0.4", + "setimmediate": "1.0.4", + "uuid": "2.0.1", + "xmlhttprequest": "1.8.0" + } + }, + "node_modules/ethereum-abi-types-generator/node_modules/hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/ethereum-abi-types-generator/node_modules/js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=", + "dev": true, + "license": "MIT" + }, + "node_modules/ethereum-abi-types-generator/node_modules/scrypt-js": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", + "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/ethereum-abi-types-generator/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ethereum-abi-types-generator/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ethereum-abi-types-generator/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ethereum-abi-types-generator/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ethereum-bloom-filters": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", + "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", + "license": "MIT", + "dependencies": { + "js-sha3": "^0.8.0" + } + }, + "node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "license": "MIT", + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/ethereum-cryptography/node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, + "node_modules/ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/ethereumjs-util/node_modules/@types/bn.js": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", + "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ethereumjs-util/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "license": "MIT" + }, + "node_modules/ethereumjs-util/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/ethers": { + "version": "5.6.5", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.6.5.tgz", + "integrity": "sha512-9CTmplO9bv0s/aPw3HB3txGzKz3tUSI2EfO4dJo0W2WvaEq1ArgsEX6obV+bj5X3yY+Zgb1kAux8TDtJKe1FaA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.6.1", + "@ethersproject/abstract-provider": "5.6.0", + "@ethersproject/abstract-signer": "5.6.0", + "@ethersproject/address": "5.6.0", + "@ethersproject/base64": "5.6.0", + "@ethersproject/basex": "5.6.0", + "@ethersproject/bignumber": "5.6.0", + "@ethersproject/bytes": "5.6.1", + "@ethersproject/constants": "5.6.0", + "@ethersproject/contracts": "5.6.0", + "@ethersproject/hash": "5.6.0", + "@ethersproject/hdnode": "5.6.0", + "@ethersproject/json-wallets": "5.6.0", + "@ethersproject/keccak256": "5.6.0", + "@ethersproject/logger": "5.6.0", + "@ethersproject/networks": "5.6.2", + "@ethersproject/pbkdf2": "5.6.0", + "@ethersproject/properties": "5.6.0", + "@ethersproject/providers": "5.6.5", + "@ethersproject/random": "5.6.0", + "@ethersproject/rlp": "5.6.0", + "@ethersproject/sha2": "5.6.0", + "@ethersproject/signing-key": "5.6.1", + "@ethersproject/solidity": "5.6.0", + "@ethersproject/strings": "5.6.0", + "@ethersproject/transactions": "5.6.0", + "@ethersproject/units": "5.6.0", + "@ethersproject/wallet": "5.6.0", + "@ethersproject/web": "5.6.0", + "@ethersproject/wordlists": "5.6.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abi": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.6.1.tgz", + "integrity": "sha512-0cqssYh6FXjlwKWBmLm3+zH2BNARoS5u/hxbz+LpQmcDB3w0W553h2btWui1/uZp2GBM/SI3KniTuMcYyHpA5w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/hash": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abi/node_modules/@ethersproject/bignumber": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.1.tgz", + "integrity": "sha512-UtMeZ3GaUuF9sx2u9nPZiPP3ULcAFmXyvynR7oHl/tPrM+vldZh7ocMsoa1PqKYGnQnqUZJoqxZnGN6J0qdipA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^4.11.9" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-signer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.0.tgz", + "integrity": "sha512-WOqnG0NJKtI8n0wWZPReHtaLkDByPL67tn4nBaDAhmVq8sjHTPbCdz4DRhVu/cfTOvfy9w3iq5QZ7BX7zw56BQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/bignumber": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.1.tgz", + "integrity": "sha512-UtMeZ3GaUuF9sx2u9nPZiPP3ULcAFmXyvynR7oHl/tPrM+vldZh7ocMsoa1PqKYGnQnqUZJoqxZnGN6J0qdipA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^4.11.9" + } + }, + "node_modules/ethers/node_modules/@ethersproject/bignumber": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.0.tgz", + "integrity": "sha512-VziMaXIUHQlHJmkv1dlcd6GY2PmT0khtAqaMctCIDogxkrarMzA9L94KN1NeXqqOfFD6r0sJT3vCTOFSmZ07DA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^4.11.9" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.6.0.tgz", + "integrity": "sha512-74Ge7iqTDom0NX+mux8KbRUeJgu1eHZ3iv6utv++sLJG80FVuU9HnHeKVPfjd9s3woFhaFoQGf3B3iH/FrQmgw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "^5.6.0", + "@ethersproject/abstract-provider": "^5.6.0", + "@ethersproject/abstract-signer": "^5.6.0", + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/transactions": "^5.6.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/abi": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.6.2.tgz", + "integrity": "sha512-40Ixjhy+YzFtnvzIqFU13FW9hd1gMoLa3cJfSDnfnL4o8EnEG1qLiV8sNJo3sHYi9UYMfFeRuZ7kv5+vhzU7gQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/hash": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/abstract-signer": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.1.tgz", + "integrity": "sha512-xhSLo6y0nGJS7NxfvOSzCaWKvWb1TLT7dQ0nnpHZrDnC67xfnWm9NXflTMFPUXXMtjr33CdV0kWDEmnbrQZ74Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/bignumber": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.1.tgz", + "integrity": "sha512-UtMeZ3GaUuF9sx2u9nPZiPP3ULcAFmXyvynR7oHl/tPrM+vldZh7ocMsoa1PqKYGnQnqUZJoqxZnGN6J0qdipA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^4.11.9" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/transactions": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.1.tgz", + "integrity": "sha512-oIAC7zBCDnjVlEn0KSG1udbqR7hP9FOurxIV/aG+erCdvdvi+QXEZRUtVP9+lu3WYUe8SMYhdAVwNJtD7dZMRw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/rlp": "^5.6.0", + "@ethersproject/signing-key": "^5.6.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.6.0.tgz", + "integrity": "sha512-61g3Jp3nwDqJcL/p4nugSyLrpl/+ChXIOtCEM8UDmWeB3JCAt5FoLdOMXQc3WWkc0oM2C0aAn6GFqqMcS/mHTw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.6.0", + "@ethersproject/basex": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/pbkdf2": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/sha2": "^5.6.0", + "@ethersproject/signing-key": "^5.6.0", + "@ethersproject/strings": "^5.6.0", + "@ethersproject/transactions": "^5.6.0", + "@ethersproject/wordlists": "^5.6.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/abstract-signer": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.1.tgz", + "integrity": "sha512-xhSLo6y0nGJS7NxfvOSzCaWKvWb1TLT7dQ0nnpHZrDnC67xfnWm9NXflTMFPUXXMtjr33CdV0kWDEmnbrQZ74Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/bignumber": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.1.tgz", + "integrity": "sha512-UtMeZ3GaUuF9sx2u9nPZiPP3ULcAFmXyvynR7oHl/tPrM+vldZh7ocMsoa1PqKYGnQnqUZJoqxZnGN6J0qdipA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^4.11.9" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/transactions": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.1.tgz", + "integrity": "sha512-oIAC7zBCDnjVlEn0KSG1udbqR7hP9FOurxIV/aG+erCdvdvi+QXEZRUtVP9+lu3WYUe8SMYhdAVwNJtD7dZMRw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/rlp": "^5.6.0", + "@ethersproject/signing-key": "^5.6.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/networks": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.6.2.tgz", + "integrity": "sha512-9uEzaJY7j5wpYGTojGp8U89mSsgQLc40PCMJLMCnFXTs7nhBveZ0t7dbqWUNrepWTszDbFkYD6WlL8DKx5huHA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/transactions": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.0.tgz", + "integrity": "sha512-4HX+VOhNjXHZyGzER6E/LVI2i6lf9ejYeWD6l4g50AdmimyuStKc39kvKf1bXWQMg7QNVh+uC7dYwtaZ02IXeg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/rlp": "^5.6.0", + "@ethersproject/signing-key": "^5.6.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/transactions/node_modules/@ethersproject/bignumber": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.1.tgz", + "integrity": "sha512-UtMeZ3GaUuF9sx2u9nPZiPP3ULcAFmXyvynR7oHl/tPrM+vldZh7ocMsoa1PqKYGnQnqUZJoqxZnGN6J0qdipA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^4.11.9" + } + }, + "node_modules/ethersv5": { + "name": "ethers", + "version": "5.6.5", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.6.5.tgz", + "integrity": "sha512-9CTmplO9bv0s/aPw3HB3txGzKz3tUSI2EfO4dJo0W2WvaEq1ArgsEX6obV+bj5X3yY+Zgb1kAux8TDtJKe1FaA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.6.1", + "@ethersproject/abstract-provider": "5.6.0", + "@ethersproject/abstract-signer": "5.6.0", + "@ethersproject/address": "5.6.0", + "@ethersproject/base64": "5.6.0", + "@ethersproject/basex": "5.6.0", + "@ethersproject/bignumber": "5.6.0", + "@ethersproject/bytes": "5.6.1", + "@ethersproject/constants": "5.6.0", + "@ethersproject/contracts": "5.6.0", + "@ethersproject/hash": "5.6.0", + "@ethersproject/hdnode": "5.6.0", + "@ethersproject/json-wallets": "5.6.0", + "@ethersproject/keccak256": "5.6.0", + "@ethersproject/logger": "5.6.0", + "@ethersproject/networks": "5.6.2", + "@ethersproject/pbkdf2": "5.6.0", + "@ethersproject/properties": "5.6.0", + "@ethersproject/providers": "5.6.5", + "@ethersproject/random": "5.6.0", + "@ethersproject/rlp": "5.6.0", + "@ethersproject/sha2": "5.6.0", + "@ethersproject/signing-key": "5.6.1", + "@ethersproject/solidity": "5.6.0", + "@ethersproject/strings": "5.6.0", + "@ethersproject/transactions": "5.6.0", + "@ethersproject/units": "5.6.0", + "@ethersproject/wallet": "5.6.0", + "@ethersproject/web": "5.6.0", + "@ethersproject/wordlists": "5.6.0" + } + }, + "node_modules/ethersv5/node_modules/@ethersproject/abi": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.6.1.tgz", + "integrity": "sha512-0cqssYh6FXjlwKWBmLm3+zH2BNARoS5u/hxbz+LpQmcDB3w0W553h2btWui1/uZp2GBM/SI3KniTuMcYyHpA5w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/hash": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.0" + } + }, + "node_modules/ethersv5/node_modules/@ethersproject/abi/node_modules/@ethersproject/bignumber": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.1.tgz", + "integrity": "sha512-UtMeZ3GaUuF9sx2u9nPZiPP3ULcAFmXyvynR7oHl/tPrM+vldZh7ocMsoa1PqKYGnQnqUZJoqxZnGN6J0qdipA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^4.11.9" + } + }, + "node_modules/ethersv5/node_modules/@ethersproject/abstract-signer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.0.tgz", + "integrity": "sha512-WOqnG0NJKtI8n0wWZPReHtaLkDByPL67tn4nBaDAhmVq8sjHTPbCdz4DRhVu/cfTOvfy9w3iq5QZ7BX7zw56BQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0" + } + }, + "node_modules/ethersv5/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/bignumber": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.1.tgz", + "integrity": "sha512-UtMeZ3GaUuF9sx2u9nPZiPP3ULcAFmXyvynR7oHl/tPrM+vldZh7ocMsoa1PqKYGnQnqUZJoqxZnGN6J0qdipA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^4.11.9" + } + }, + "node_modules/ethersv5/node_modules/@ethersproject/bignumber": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.0.tgz", + "integrity": "sha512-VziMaXIUHQlHJmkv1dlcd6GY2PmT0khtAqaMctCIDogxkrarMzA9L94KN1NeXqqOfFD6r0sJT3vCTOFSmZ07DA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^4.11.9" + } + }, + "node_modules/ethersv5/node_modules/@ethersproject/contracts": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.6.0.tgz", + "integrity": "sha512-74Ge7iqTDom0NX+mux8KbRUeJgu1eHZ3iv6utv++sLJG80FVuU9HnHeKVPfjd9s3woFhaFoQGf3B3iH/FrQmgw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "^5.6.0", + "@ethersproject/abstract-provider": "^5.6.0", + "@ethersproject/abstract-signer": "^5.6.0", + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/transactions": "^5.6.0" + } + }, + "node_modules/ethersv5/node_modules/@ethersproject/contracts/node_modules/@ethersproject/abi": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.6.2.tgz", + "integrity": "sha512-40Ixjhy+YzFtnvzIqFU13FW9hd1gMoLa3cJfSDnfnL4o8EnEG1qLiV8sNJo3sHYi9UYMfFeRuZ7kv5+vhzU7gQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/hash": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.0" + } + }, + "node_modules/ethersv5/node_modules/@ethersproject/contracts/node_modules/@ethersproject/abstract-signer": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.1.tgz", + "integrity": "sha512-xhSLo6y0nGJS7NxfvOSzCaWKvWb1TLT7dQ0nnpHZrDnC67xfnWm9NXflTMFPUXXMtjr33CdV0kWDEmnbrQZ74Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0" + } + }, + "node_modules/ethersv5/node_modules/@ethersproject/contracts/node_modules/@ethersproject/bignumber": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.1.tgz", + "integrity": "sha512-UtMeZ3GaUuF9sx2u9nPZiPP3ULcAFmXyvynR7oHl/tPrM+vldZh7ocMsoa1PqKYGnQnqUZJoqxZnGN6J0qdipA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^4.11.9" + } + }, + "node_modules/ethersv5/node_modules/@ethersproject/contracts/node_modules/@ethersproject/transactions": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.1.tgz", + "integrity": "sha512-oIAC7zBCDnjVlEn0KSG1udbqR7hP9FOurxIV/aG+erCdvdvi+QXEZRUtVP9+lu3WYUe8SMYhdAVwNJtD7dZMRw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/rlp": "^5.6.0", + "@ethersproject/signing-key": "^5.6.0" + } + }, + "node_modules/ethersv5/node_modules/@ethersproject/hdnode": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.6.0.tgz", + "integrity": "sha512-61g3Jp3nwDqJcL/p4nugSyLrpl/+ChXIOtCEM8UDmWeB3JCAt5FoLdOMXQc3WWkc0oM2C0aAn6GFqqMcS/mHTw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.6.0", + "@ethersproject/basex": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/pbkdf2": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/sha2": "^5.6.0", + "@ethersproject/signing-key": "^5.6.0", + "@ethersproject/strings": "^5.6.0", + "@ethersproject/transactions": "^5.6.0", + "@ethersproject/wordlists": "^5.6.0" + } + }, + "node_modules/ethersv5/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/abstract-signer": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.1.tgz", + "integrity": "sha512-xhSLo6y0nGJS7NxfvOSzCaWKvWb1TLT7dQ0nnpHZrDnC67xfnWm9NXflTMFPUXXMtjr33CdV0kWDEmnbrQZ74Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0" + } + }, + "node_modules/ethersv5/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/bignumber": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.1.tgz", + "integrity": "sha512-UtMeZ3GaUuF9sx2u9nPZiPP3ULcAFmXyvynR7oHl/tPrM+vldZh7ocMsoa1PqKYGnQnqUZJoqxZnGN6J0qdipA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^4.11.9" + } + }, + "node_modules/ethersv5/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/transactions": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.1.tgz", + "integrity": "sha512-oIAC7zBCDnjVlEn0KSG1udbqR7hP9FOurxIV/aG+erCdvdvi+QXEZRUtVP9+lu3WYUe8SMYhdAVwNJtD7dZMRw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/rlp": "^5.6.0", + "@ethersproject/signing-key": "^5.6.0" + } + }, + "node_modules/ethersv5/node_modules/@ethersproject/networks": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.6.2.tgz", + "integrity": "sha512-9uEzaJY7j5wpYGTojGp8U89mSsgQLc40PCMJLMCnFXTs7nhBveZ0t7dbqWUNrepWTszDbFkYD6WlL8DKx5huHA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/ethersv5/node_modules/@ethersproject/transactions": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.0.tgz", + "integrity": "sha512-4HX+VOhNjXHZyGzER6E/LVI2i6lf9ejYeWD6l4g50AdmimyuStKc39kvKf1bXWQMg7QNVh+uC7dYwtaZ02IXeg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/rlp": "^5.6.0", + "@ethersproject/signing-key": "^5.6.0" + } + }, + "node_modules/ethersv5/node_modules/@ethersproject/transactions/node_modules/@ethersproject/bignumber": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.1.tgz", + "integrity": "sha512-UtMeZ3GaUuF9sx2u9nPZiPP3ULcAFmXyvynR7oHl/tPrM+vldZh7ocMsoa1PqKYGnQnqUZJoqxZnGN6J0qdipA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^4.11.9" + } + }, + "node_modules/ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "license": "MIT", + "dependencies": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ethjs-unit/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "license": "MIT" + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true, + "license": "MIT" + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", + "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true, + "license": "MIT" + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true, + "license": "MIT" + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "license": "ISC", + "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" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-pkg-repo": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@hutson/parse-repository-url": "^3.0.0", + "hosted-git-info": "^4.0.0", + "through2": "^2.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "get-pkg-repo": "src/cli.js" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-pkg-repo/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/get-pkg-repo/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/get-pkg-repo/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/get-pkg-repo/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/git-raw-commits": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "dev": true, + "license": "MIT", + "dependencies": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", + "dev": true, + "license": "MIT", + "dependencies": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-remote-origin-url/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/git-semver-tags": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", + "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "meow": "^8.0.0", + "semver": "^6.0.0" + }, + "bin": { + "git-semver-tags": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-semver-tags/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/git-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", + "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-ssh": "^1.4.0", + "parse-url": "^8.1.0" + } + }, + "node_modules/git-url-parse": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz", + "integrity": "sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "git-up": "^7.0.0" + } + }, + "node_modules/gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", + "dev": true, + "license": "BSD", + "dependencies": { + "ini": "^1.3.2" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true, + "license": "ISC" + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/uglify-js": { + "version": "3.15.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.4.tgz", + "integrity": "sha512-vMOPGDuvXecPs34V74qDKk4iJ/SN4vL3Ow/23ixafENYvtrNvtbcgUeugTcUGRGsOF/5fU8/NYSL5Hyb3l1OJA==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true, + "license": "ISC" + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true, + "license": "MIT" + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/humanize-ms/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/idna-uts46-hx": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-4.1.2.tgz", + "integrity": "sha512-EAB3egrcalcTQHcjA7yzXXkE4E09TIFerR//4yUYGYCeCfXmkU0LgsGJgYSIQA1lQunfsn4ZCWJhbelgl3cdiQ==", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=16.15.1", + "npm": ">=8.11.1" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", + "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", + "dev": true, + "license": "ISC", + "dependencies": { + "minimatch": "^5.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", + "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true, + "license": "ISC" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/init-package-json": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-3.0.2.tgz", + "integrity": "sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A==", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^9.0.1", + "promzard": "^0.3.0", + "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": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/init-package-json/node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/init-package-json/node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/init-package-json/node_modules/npm-package-arg": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "dev": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/init-package-json/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/inquirer": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", + "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", + "dev": true, + "license": "MIT", + "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" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true, + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-ci/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-expression": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", + "integrity": "sha512-vyMeQMq+AiH5uUnoBfMTwf18tO3bM6k1QXBE9D6ueAAquEfCZe3AJPtud9g6qS0+4X8xA7ndpZiDyeb2l2qOBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "~4.0.2", + "object-assign": "^4.0.1" + } + }, + "node_modules/is-expression/node_modules/acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha512-fu2ygVGuMmlzG8ZeRJ0bvR41nsAkxxhbyk8bZ1SS521Z7vmgJFTQQlfz/Mp/nJexGBz+v8sC9bM6+lNgskt4Ug==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "license": "MIT", + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true, + "license": "MIT" + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ssh": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", + "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "protocols": "^2.0.1" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "dev": true, + "license": "MIT", + "dependencies": { + "text-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true, + "license": "MIT" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/isomorphic-ws/node_modules/ws": { + "version": "8.13.0", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", + "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", + "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-haste-map/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-mock/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-serializer/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-util/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-watcher/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "license": "MIT" + }, + "node_modules/js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/js2xmlparser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", + "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "xmlcreate": "^2.0.4" + } + }, + "node_modules/jsdoc": { + "version": "3.6.11", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.11.tgz", + "integrity": "sha512-8UCU0TYeIYD9KeLzEcAu2q8N/mx9O3phAGl32nmHlE0LpaJL71mMkP4d+QE5zWfNt50qheHtOZ0qoxVrsX5TUg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/parser": "^7.9.4", + "@types/markdown-it": "^12.2.3", + "bluebird": "^3.7.2", + "catharsis": "^0.9.0", + "escape-string-regexp": "^2.0.0", + "js2xmlparser": "^4.0.2", + "klaw": "^3.0.0", + "markdown-it": "^12.3.2", + "markdown-it-anchor": "^8.4.1", + "marked": "^4.0.10", + "mkdirp": "^1.0.4", + "requizzle": "^0.2.3", + "strip-json-comments": "^3.1.0", + "taffydb": "2.6.2", + "underscore": "~1.13.2" + }, + "bin": { + "jsdoc": "jsdoc.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/jsdoc/node_modules/@babel/parser": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz", + "integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==", + "dev": true, + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/jsdoc/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/jsdom/node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/jsdom/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/ws": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stringify-nice": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", + "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==", + "dev": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true, + "license": "ISC" + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, + "node_modules/just-diff": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-5.1.1.tgz", + "integrity": "sha512-u8HXJ3HlNrTzY7zrYYKjNEfBlyjqhdBkoyTVdjtn7p02RJD5NvR8rIClzeGA7t+UYP1/7eAkWNLU0+P3QrEqKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/just-diff-apply": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.4.1.tgz", + "integrity": "sha512-AAV5Jw7tsniWwih8Ly3fXxEZ06y+6p5TwQMsw0dzZ/wPKilzyDgdAnL0Ug4NNIquPUOh1vfFWEHbmXUqM5+o8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/keccak": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", + "integrity": "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/keccak256": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/keccak256/-/keccak256-1.0.6.tgz", + "integrity": "sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==", + "license": "MIT", + "dependencies": { + "bn.js": "^5.2.0", + "buffer": "^6.0.3", + "keccak": "^3.0.2" + } + }, + "node_modules/keccak256/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", + "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lerna": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/lerna/-/lerna-6.1.0.tgz", + "integrity": "sha512-3qAjIj8dgBwHtCAiLbq4VU/C1V9D1tvTLm2owZubdGAN72aB5TxuCu2mcw+yeEorOcXuR9YWx7EXIkAf+G0N2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lerna/add": "6.1.0", + "@lerna/bootstrap": "6.1.0", + "@lerna/changed": "6.1.0", + "@lerna/clean": "6.1.0", + "@lerna/cli": "6.1.0", + "@lerna/command": "6.1.0", + "@lerna/create": "6.1.0", + "@lerna/diff": "6.1.0", + "@lerna/exec": "6.1.0", + "@lerna/import": "6.1.0", + "@lerna/info": "6.1.0", + "@lerna/init": "6.1.0", + "@lerna/link": "6.1.0", + "@lerna/list": "6.1.0", + "@lerna/publish": "6.1.0", + "@lerna/run": "6.1.0", + "@lerna/version": "6.1.0", + "@nrwl/devkit": ">=14.8.6 < 16", + "import-local": "^3.0.2", + "inquirer": "^8.2.4", + "npmlog": "^6.0.2", + "nx": ">=14.8.6 < 16", + "typescript": "^3 || ^4" + }, + "bin": { + "lerna": "cli.js" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/levn/node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/levn/node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/libnpmaccess": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-6.0.4.tgz", + "integrity": "sha512-qZ3wcfIyUoW0+qSFkMBovcTrSGJ3ZeyvpR7d5N9pEYv/kXs8sHP2wiqEIXBKLFrZlmM0kR0RJD7mtfLngtlLag==", + "dev": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "minipass": "^3.1.1", + "npm-package-arg": "^9.0.1", + "npm-registry-fetch": "^13.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/libnpmaccess/node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/libnpmaccess/node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/libnpmaccess/node_modules/npm-package-arg": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "dev": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/libnpmaccess/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/libnpmpublish": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-6.0.5.tgz", + "integrity": "sha512-LUR08JKSviZiqrYTDfywvtnsnxr+tOvBU0BF8H+9frt7HMvc6Qn6F8Ubm72g5hDTHbq8qupKfDvDAln2TVPvFg==", + "dev": true, + "license": "ISC", + "dependencies": { + "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" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/libnpmpublish/node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/libnpmpublish/node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/libnpmpublish/node_modules/is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/libnpmpublish/node_modules/normalize-package-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/libnpmpublish/node_modules/normalize-package-data/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/libnpmpublish/node_modules/npm-package-arg": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "dev": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/libnpmpublish/node_modules/npm-package-arg/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/load-json-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", + "integrity": "sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.15", + "parse-json": "^5.0.0", + "strip-bom": "^4.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it-anchor": { + "version": "8.6.6", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.6.tgz", + "integrity": "sha512-jRW30YGywD2ESXDc+l17AiritL0uVaSnWsb26f+68qaW9zgbIIr1f4v2Nsvc0+s0Z2N3uX6t/yAw7BwCQ1wMsA==", + "dev": true, + "license": "Unlicense", + "peerDependencies": { + "@types/markdown-it": "*", + "markdown-it": "*" + } + }, + "node_modules/marked": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.4.tgz", + "integrity": "sha512-Wcc9ikX7Q5E4BYDPvh1C6QNSxrjC9tBgz+A/vAhp59KXUgachw++uMvMKiSW8oA85nopmPZcEvBoex/YLMsiyA==", + "dev": true, + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "license": "ISC" + }, + "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/merkletreejs": { + "version": "0.2.32", + "resolved": "https://registry.npmjs.org/merkletreejs/-/merkletreejs-0.2.32.tgz", + "integrity": "sha512-TostQBiwYRIwSE5++jGmacu3ODcKAgqb0Y/pnIohXS7sWxh1gCkSptbmF1a43faehRDpcHf7J/kv0Ml2D/zblQ==", + "license": "MIT", + "dependencies": { + "bignumber.js": "^9.0.1", + "buffer-reverse": "^1.0.1", + "crypto-js": "^3.1.9-1", + "treeify": "^1.1.0", + "web3-utils": "^1.3.4" + }, + "engines": { + "node": ">= 7.6.0" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minimist-options/node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mkdirp-infer-owner": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", + "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", + "dev": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true, + "license": "ISC" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/nftx.js": { + "resolved": "packages/nftx", + "link": true + }, + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "license": "MIT" + }, + "node_modules/node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.10.5" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-gyp": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.0.tgz", + "integrity": "sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.22 || ^14.13 || >=16" + } + }, + "node_modules/node-gyp-build": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", + "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-gyp/node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", + "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "license": "ISC" + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm-bundled/node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true, + "license": "ISC" + }, + "node_modules/npm-install-checks": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", + "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-package-arg": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.1.tgz", + "integrity": "sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==", + "dev": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^3.0.6", + "semver": "^7.0.0", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-package-arg/node_modules/builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/npm-package-arg/node_modules/hosted-git-info": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-package-arg/node_modules/validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "dev": true, + "license": "ISC", + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/npm-packlist": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", + "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^8.0.1", + "ignore-walk": "^5.0.1", + "npm-bundled": "^2.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "bin": { + "npm-packlist": "bin/index.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-packlist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm-packlist/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm-packlist/node_modules/minimatch": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", + "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-packlist/node_modules/npm-bundled": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", + "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz", + "integrity": "sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^5.0.0", + "npm-normalize-package-bin": "^2.0.0", + "npm-package-arg": "^9.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-pick-manifest/node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-pick-manifest/node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/npm-pick-manifest/node_modules/npm-package-arg": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "dev": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-pick-manifest/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-registry-fetch": { + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", + "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", + "dev": true, + "license": "ISC", + "dependencies": { + "make-fetch-happen": "^10.0.6", + "minipass": "^3.1.6", + "minipass-fetch": "^2.0.3", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^9.0.1", + "proc-log": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/npm-registry-fetch/node_modules/npm-package-arg": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "dev": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "license": "MIT", + "dependencies": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/number-to-bn/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "license": "MIT" + }, + "node_modules/nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/nx": { + "version": "15.3.3", + "resolved": "https://registry.npmjs.org/nx/-/nx-15.3.3.tgz", + "integrity": "sha512-yR102AlVW5Sb7X1e9cyR+0h44RD6c3eLJbAZ0yVFKPCKw+zQTdGvAqITtB6ZeFnPkg6Qq6f1oWu6G0n6f2cTpw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@nrwl/cli": "15.3.3", + "@nrwl/tao": "15.3.3", + "@parcel/watcher": "2.0.4", + "@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", + "chokidar": "^3.5.1", + "cli-cursor": "3.1.0", + "cli-spinners": "2.6.1", + "cliui": "^7.0.2", + "dotenv": "~10.0.0", + "enquirer": "~2.3.6", + "fast-glob": "3.2.7", + "figures": "3.2.0", + "flat": "^5.0.2", + "fs-extra": "^10.1.0", + "glob": "7.1.4", + "ignore": "^5.0.4", + "js-yaml": "4.1.0", + "jsonc-parser": "3.2.0", + "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", + "tslib": "^2.3.0", + "v8-compile-cache": "2.3.0", + "yargs": "^17.6.2", + "yargs-parser": "21.1.1" + }, + "bin": { + "nx": "bin/nx.js" + }, + "peerDependencies": { + "@swc-node/register": "^1.4.2", + "@swc/core": "^1.2.173" + }, + "peerDependenciesMeta": { + "@swc-node/register": { + "optional": true + }, + "@swc/core": { + "optional": true + } + } + }, + "node_modules/nx/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/nx/node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" + } + }, + "node_modules/nx/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/nx/node_modules/glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/nx/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/nx/node_modules/ignore": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", + "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/nx/node_modules/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/nx/node_modules/semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nx/node_modules/yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "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.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/nx/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/nx/node_modules/yargs/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/optionator/node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/optionator/node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map-series": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz", + "integrity": "sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/p-pipe": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", + "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/p-waterfall": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz", + "integrity": "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-reduce": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pacote": { + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", + "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^3.0.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/run-script": "^4.1.0", + "cacache": "^16.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.6", + "mkdirp": "^1.0.4", + "npm-package-arg": "^9.0.0", + "npm-packlist": "^5.1.0", + "npm-pick-manifest": "^7.0.0", + "npm-registry-fetch": "^13.0.1", + "proc-log": "^2.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^5.0.0", + "read-package-json-fast": "^2.0.3", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/pacote/node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/pacote/node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/pacote/node_modules/npm-package-arg": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "dev": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/pacote/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-conflict-json": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-2.0.2.tgz", + "integrity": "sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA==", + "dev": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.1", + "just-diff": "^5.0.1", + "just-diff-apply": "^5.2.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-path": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", + "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==", + "dev": true, + "license": "MIT", + "dependencies": { + "protocols": "^2.0.0" + } + }, + "node_modules/parse-url": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", + "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-path": "^7.0.0" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "license": "MIT", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/proc-log": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/promise-all-reject-late": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", + "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==", + "dev": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/promise-call-limit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.1.tgz", + "integrity": "sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q==", + "dev": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/promzard": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", + "integrity": "sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==", + "dev": true, + "license": "ISC", + "dependencies": { + "read": "1" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true, + "license": "ISC" + }, + "node_modules/protocols": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", + "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true, + "license": "MIT" + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pug": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz", + "integrity": "sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "pug-code-gen": "^2.0.2", + "pug-filters": "^3.1.1", + "pug-lexer": "^4.1.0", + "pug-linker": "^3.0.6", + "pug-load": "^2.0.12", + "pug-parser": "^5.0.1", + "pug-runtime": "^2.0.5", + "pug-strip-comments": "^1.0.4" + } + }, + "node_modules/pug-attrs": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz", + "integrity": "sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "constantinople": "^3.0.1", + "js-stringify": "^1.0.1", + "pug-runtime": "^2.0.5" + } + }, + "node_modules/pug-code-gen": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.3.tgz", + "integrity": "sha512-r9sezXdDuZJfW9J91TN/2LFbiqDhmltTFmGpHTsGdrNGp3p4SxAjjXEfnuK2e4ywYsRIVP0NeLbSAMHUcaX1EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "constantinople": "^3.1.2", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.1", + "pug-attrs": "^2.0.4", + "pug-error": "^1.3.3", + "pug-runtime": "^2.0.5", + "void-elements": "^2.0.1", + "with": "^5.0.0" + } + }, + "node_modules/pug-error": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz", + "integrity": "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pug-filters": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.1.tgz", + "integrity": "sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-css": "^4.1.11", + "constantinople": "^3.0.1", + "jstransformer": "1.0.0", + "pug-error": "^1.3.3", + "pug-walk": "^1.1.8", + "resolve": "^1.1.6", + "uglify-js": "^2.6.1" + } + }, + "node_modules/pug-filters/node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/pug-lexer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.1.0.tgz", + "integrity": "sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-parser": "^2.1.1", + "is-expression": "^3.0.0", + "pug-error": "^1.3.3" + } + }, + "node_modules/pug-linker": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.6.tgz", + "integrity": "sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pug-error": "^1.3.3", + "pug-walk": "^1.1.8" + } + }, + "node_modules/pug-load": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz", + "integrity": "sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.0", + "pug-walk": "^1.1.8" + } + }, + "node_modules/pug-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.1.tgz", + "integrity": "sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pug-error": "^1.3.3", + "token-stream": "0.0.1" + } + }, + "node_modules/pug-runtime": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz", + "integrity": "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==", + "dev": true, + "license": "MIT" + }, + "node_modules/pug-strip-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz", + "integrity": "sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "pug-error": "^1.3.3" + } + }, + "node_modules/pug-walk": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz", + "integrity": "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==", + "dev": true, + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "dev": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-ace": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/react-ace/-/react-ace-9.5.0.tgz", + "integrity": "sha512-4l5FgwGh6K7A0yWVMQlPIXDItM4Q9zzXRqOae8KkCl6MkOob7sC1CzHxZdOGvV+QioKWbX2p5HcdOVUv6cAdSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ace-builds": "^1.4.13", + "diff-match-patch": "^1.0.5", + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0", + "react-dom": "^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/react-docgen": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-5.4.3.tgz", + "integrity": "sha512-xlLJyOlnfr8lLEEeaDZ+X2J/KJoe6Nr9AzxnkdQWush5hz2ZSu66w6iLMOScMmxoSHWpWMn+k3v5ZiyCfcWsOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.7.5", + "@babel/generator": "^7.12.11", + "@babel/runtime": "^7.7.6", + "ast-types": "^0.14.2", + "commander": "^2.19.0", + "doctrine": "^3.0.0", + "estree-to-babel": "^3.1.0", + "neo-async": "^2.6.1", + "node-dir": "^0.1.10", + "strip-indent": "^3.0.0" + }, + "bin": { + "react-docgen": "bin/react-docgen.js" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/react-docgen/node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/react-docgen/node_modules/@babel/compat-data": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", + "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/react-docgen/node_modules/@babel/core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.5.tgz", + "integrity": "sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.5", + "@babel/parser": "^7.20.5", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/react-docgen/node_modules/@babel/generator": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz", + "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.5", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/react-docgen/node_modules/@babel/helper-compilation-targets": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/react-docgen/node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/react-docgen/node_modules/@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/react-docgen/node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/react-docgen/node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/react-docgen/node_modules/@babel/helper-module-transforms": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/react-docgen/node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/react-docgen/node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/react-docgen/node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/react-docgen/node_modules/@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/react-docgen/node_modules/@babel/helpers": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz", + "integrity": "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/react-docgen/node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/react-docgen/node_modules/@babel/parser": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz", + "integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==", + "dev": true, + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/react-docgen/node_modules/@babel/runtime": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.6.tgz", + "integrity": "sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/react-docgen/node_modules/@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/react-docgen/node_modules/@babel/traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz", + "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.5", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.5", + "@babel/types": "^7.20.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/react-docgen/node_modules/@babel/types": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz", + "integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/react-docgen/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/react-docgen/node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/react-docgen/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/react-docgen/node_modules/ast-types": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", + "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/react-docgen/node_modules/browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/react-docgen/node_modules/caniuse-lite": { + "version": "1.0.30001439", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001439.tgz", + "integrity": "sha512-1MgUzEkoMO6gKfXflStpYgZDlFM7M/ck/bgfVCACO5vnAf0fXoNVHdWtqGU+MYca+4bL9Z5bpOVmR33cWW9G2A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/react-docgen/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/react-docgen/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/react-docgen/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true, + "license": "MIT" + }, + "node_modules/react-docgen/node_modules/electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "dev": true, + "license": "ISC" + }, + "node_modules/react-docgen/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/react-docgen/node_modules/node-releases": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-docgen/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/react-docgen/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/react-docgen/node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "dev": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/react-frame-component": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/react-frame-component/-/react-frame-component-5.2.4.tgz", + "integrity": "sha512-4xpZFcLNS6LCEYSlWgsUy81v7LjdgbvB0VHIq7sNSD25PK+e5YYCrdy5557ebGwNLKNLEpYVfAkT3pVzFLPb1g==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "prop-types": "^15.5.9", + "react": ">= 16.3", + "react-dom": ">= 16.3" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "license": "MIT" + }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/read-cmd-shim": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-3.0.1.tgz", + "integrity": "sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/read-package-json": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", + "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", + "dev": true, + "license": "ISC", + "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" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-package-json-fast/node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true, + "license": "ISC" + }, + "node_modules/read-package-json/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/read-package-json/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/read-package-json/node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/read-package-json/node_modules/is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/read-package-json/node_modules/minimatch": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", + "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-package-json/node_modules/normalize-package-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/read-package-json/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "license": "MIT", + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "dev": true, + "license": "ISC", + "dependencies": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recast": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.17.6.tgz", + "integrity": "sha512-yoQRMRrK1lszNtbkGyM4kN45AwylV5hMiuEveUBlxytUViWevjvX6w+tzJt1LH4cfUhWt4NZvy3ThIhu6+m5wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ast-types": "0.12.4", + "esprima": "~4.0.0", + "private": "^0.1.8", + "source-map": "~0.6.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regenerator-transform/node_modules/@babel/runtime": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", + "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/regenerator-transform/node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true, + "license": "MIT" + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "dev": true, + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true, + "license": "ISC" + }, + "node_modules/requizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz", + "integrity": "sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/resolve/node_modules/is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "align-text": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^5.2.0" + }, + "bin": { + "rlp": "bin/rlp" + } + }, + "node_modules/rlp/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/rollup": { + "version": "2.72.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.72.1.tgz", + "integrity": "sha512-NTc5UGy/NWFGpSqF1lFY8z9Adri6uhyMLI6LvPAXdBKoPRFhIIiBUpt+Qg2awixqO3xvzSijjhnb4+QEZwJmxA==", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-babel": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", + "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + }, + "peerDependencies": { + "@babel/core": "7 || ^7.0.0-rc.2", + "rollup": ">=0.60.0 <3" + } + }, + "node_modules/rollup-plugin-node-resolve": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", + "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.11.1", + "rollup-pluginutils": "^2.8.1" + }, + "peerDependencies": { + "rollup": ">=1.11.0" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dev": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "license": "MIT" + }, + "node_modules/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true, + "license": "ISC" + }, + "node_modules/setimmediate": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", + "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=", + "dev": true, + "license": "MIT" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shiki": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.11.1.tgz", + "integrity": "sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jsonc-parser": "^3.0.0", + "vscode-oniguruma": "^1.6.1", + "vscode-textmate": "^6.0.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "license": "ISC", + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "license": "MIT", + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strong-log-transformer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + }, + "bin": { + "sl-log-transformer": "bin/sl-log-transformer.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/taffydb": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", + "integrity": "sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA==", + "dev": true + }, + "node_modules/tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "dev": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true, + "license": "MIT" + }, + "node_modules/throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true, + "license": "MIT" + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/token-stream": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", + "integrity": "sha512-nfjOAu/zAWmX9tgwi5NRp7O7zTDUD1miHiB40klUnAh9qnL1iXdgzcz/i5dMaL5jahcBAaSfmNOBBJBLJW8TEg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/treeify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", + "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/treeverse": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-2.0.0.tgz", + "integrity": "sha512-N5gJCkLu1aXccpOTtqV6ddSEi6ZmGkh3hjmbu1IjcavJK4qyOVQmi0myQKM7z5jVGmD68SJoliaVrMmVObhj6A==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-map": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-map/-/ts-map-1.0.3.tgz", + "integrity": "sha512-vDWbsl26LIcPGmDpoVzjEP6+hvHZkBkLW7JpvwbCv/5IYPJlsbzCVXY3wsCeAxAUeTclNOUZxnLdGh3VBD/J6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true, + "license": "0BSD" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true, + "license": "MIT" + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typedoc": { + "version": "0.23.23", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.23.tgz", + "integrity": "sha512-cg1YQWj+/BU6wq74iott513U16fbrPCbyYs04PHZgvoKJIc6EY4xNobyDZh4KMfRGW8Yjv6wwIzQyoqopKOUGw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lunr": "^2.3.9", + "marked": "^4.2.4", + "minimatch": "^5.1.1", + "shiki": "^0.11.1" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 14.14" + }, + "peerDependencies": { + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x" + } + }, + "node_modules/typedoc/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/typedoc/node_modules/minimatch": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", + "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha512-qLq/4y2pjcU3vhlhseXGGJ7VbFO4pBANu0kwl8VCa9KEI0V8VfZIx2Fy3w01iSTA/pGwKZSmu/+I4etLNDdt5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "source-map": "~0.5.1", + "yargs": "~3.10.0" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + }, + "optionalDependencies": { + "uglify-to-browserify": "~1.0.0" + } + }, + "node_modules/uglify-js/node_modules/camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uglify-js/node_modules/cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha512-GIOYRizG+TGoc7Wgc1LiOTLare95R3mzKgoln+Q/lE4ceiYH19gUpl0l0Ffq4lJDEf3FxujMe6IBfOCs7pfqNA==", + "dev": true, + "license": "ISC", + "dependencies": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "node_modules/uglify-js/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uglify-js/node_modules/wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==", + "dev": true, + "license": "MIT/X11", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/uglify-js/node_modules/yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha512-QFzUah88GAGy9lyDKGBqZdkYApt63rCXYBGYnEP4xDJPXNqXXnBDACnbrXnViV6jRSqAePwrATi2i8mfYm4L1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + }, + "node_modules/uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true, + "license": "ISC" + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/upath": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", + "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", + "license": "MIT" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "license": "MIT" + }, + "node_modules/uuid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", + "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=", + "dev": true + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true, + "license": "MIT" + }, + "node_modules/v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/viem": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/viem/-/viem-0.1.14.tgz", + "integrity": "sha512-2iNRJLQm4S4d45D8T+zNcXRdSZKk/QmSv0Fdv3ZcyMcCzSMS/t1wtm8/e3HJ8icd/hX+MA0zJoJokgB+twpOYw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.1.2", + "@wagmi/chains": "~0.2.11", + "abitype": "~0.7.1", + "idna-uts46-hx": "^4.1.2", + "isomorphic-ws": "^5.0.0", + "ws": "^8.12.0" + } + }, + "node_modules/viem/node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-textmate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-6.0.0.tgz", + "integrity": "sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/vue-docgen-api": { + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/vue-docgen-api/-/vue-docgen-api-3.26.0.tgz", + "integrity": "sha512-ujdg4i5ZI/wE46RZQMFzKnDGyhEuPCu+fMA86CAd9EIek/6+OqraSVBm5ZkLrbEd5f8xxdnqMU4yiSGHHeao/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.2.3", + "@babel/types": "^7.0.0", + "ast-types": "^0.12.2", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.5", + "pug": "^2.0.3", + "recast": "^0.17.3", + "ts-map": "^1.0.3", + "typescript": "^3.2.2", + "vue-template-compiler": "^2.0.0" + } + }, + "node_modules/vue-docgen-api/node_modules/@babel/parser": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz", + "integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==", + "dev": true, + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/vue-docgen-api/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "license": "ISC", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/vue-docgen-api/node_modules/typescript": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/vue-docgen-api/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true, + "license": "ISC" + }, + "node_modules/vue-template-compiler": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz", + "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/vue2-ace-editor": { + "version": "0.0.15", + "resolved": "https://registry.npmjs.org/vue2-ace-editor/-/vue2-ace-editor-0.0.15.tgz", + "integrity": "sha512-e3TR9OGXc71cGpvYcW068lNpRcFt3+OONCC81oxHL/0vwl/V3OgqnNMw2/RRolgQkO/CA5AjqVHWmANWKOtNnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "brace": "^0.11.0" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walk-up-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", + "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", + "dev": true, + "license": "ISC" + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/web3-utils": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.5.tgz", + "integrity": "sha512-9AqNOziQky4wNQadEwEfHiBdOZqopIHzQQVzmvvv6fJwDSMhP+khqmAZC7YTiGjs0MboyZ8tWNivqSO1699XQw==", + "license": "LGPL-3.0", + "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" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-utils/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=10.4" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true, + "license": "ISC" + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/with": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", + "integrity": "sha512-uAnSsFGfSpF6DNhBXStvlZILfHJfJu4eUkfbRGk94kGO1Ta7bg6FwfvoOhhyHAJuFbCw+0xk4uJ3u57jLvlCJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^3.1.0", + "acorn-globals": "^3.0.0" + } + }, + "node_modules/with/node_modules/acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true, + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/write-json-file": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-4.3.0.tgz", + "integrity": "sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==", + "dev": true, + "license": "MIT", + "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" + }, + "engines": { + "node": ">=8.3" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/write-json-file/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/write-json-file/node_modules/sort-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-4.2.0.tgz", + "integrity": "sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/write-pkg": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz", + "integrity": "sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==", + "dev": true, + "license": "MIT", + "dependencies": { + "sort-keys": "^2.0.0", + "type-fest": "^0.4.1", + "write-json-file": "^3.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/write-pkg/node_modules/detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/write-pkg/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/write-pkg/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/write-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/write-pkg/node_modules/type-fest": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz", + "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=6" + } + }, + "node_modules/write-pkg/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/write-pkg/node_modules/write-json-file": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz", + "integrity": "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.15", + "make-dir": "^2.1.0", + "pify": "^4.0.1", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.4.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/xmlcreate": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", + "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/api": { + "name": "@nftx/api", + "version": "0.8.0", + "license": "MIT", + "dependencies": { + "@nftx/config": "^0.8.0", + "@nftx/types": "^0.8.0" + }, + "devDependencies": { + "@ethersproject/bignumber": "^5.6.0" + }, + "peerDependencies": { + "@ethersproject/bignumber": "^5.6.0" + } + }, + "packages/config": { + "name": "@nftx/config", + "version": "0.8.0", + "license": "MIT", + "dependencies": { + "@nftx/constants": "^0.8.0", + "deepmerge": "^4.2.2" + } + }, + "packages/constants": { + "name": "@nftx/constants", + "version": "0.8.0", + "license": "MIT", + "devDependencies": { + "ethereum-abi-types-generator": "^1.3.2" + } + }, + "packages/core": { + "name": "@nftx/core", + "version": "0.8.0", + "license": "MIT", + "dependencies": { + "@nftx/config": "^0.8.0", + "@nftx/constants": "^0.8.0", + "@nftx/subgraph": "^0.8.0", + "@nftx/types": "^0.8.0", + "@nftx/utils": "^0.8.0" + }, + "devDependencies": { + "@ethersproject/abi": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/providers": "^5.6.2", + "@ethersproject/units": "^5.6.0", + "ethers": "^5.6.2" + }, + "peerDependencies": { + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/providers": "^5.6.2", + "@ethersproject/units": "^5.6.0", + "ethers": "^5.6.2" + } + }, + "packages/nftx": { + "name": "nftx.js", + "version": "0.8.0", + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/contracts": "^5.6.0", + "@ethersproject/providers": "^5.6.4", + "@ethersproject/units": "^5.6.0", + "@nftx/api": "^0.8.0", + "@nftx/config": "^0.8.0", + "@nftx/constants": "^0.8.0", + "@nftx/subgraph": "^0.8.0", + "@nftx/trade": "^0.8.0", + "@nftx/types": "^0.8.0", + "@nftx/utils": "^0.8.0", + "ethers": "^5.6.4" + } + }, + "packages/nftx/node_modules/@ethersproject/providers": { + "version": "5.6.7", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.6.7.tgz", + "integrity": "sha512-QG7KLxfYk0FA0ycWATKMM8UzMOfOvchtkN89nNORlPqqhX5zatdamJ506dh5ECk+ybcnCkeVOdStlzrOMkkGOA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.6.0", + "@ethersproject/abstract-signer": "^5.6.0", + "@ethersproject/address": "^5.6.0", + "@ethersproject/base64": "^5.6.0", + "@ethersproject/basex": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/hash": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/networks": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.0", + "@ethersproject/rlp": "^5.6.0", + "@ethersproject/sha2": "^5.6.0", + "@ethersproject/strings": "^5.6.0", + "@ethersproject/transactions": "^5.6.0", + "@ethersproject/web": "^5.6.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "packages/nftx/node_modules/@ethersproject/wallet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.6.1.tgz", + "integrity": "sha512-oXWoOslEWtwZiViIMlGVjeKDQz/tI7JF9UkyzN9jaGj8z7sXt2SyFMb0Ev6vSAqjIzrCrNrJ/+MkAhtKnGOfZw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.6.0", + "@ethersproject/abstract-signer": "^5.6.0", + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/hash": "^5.6.0", + "@ethersproject/hdnode": "^5.6.0", + "@ethersproject/json-wallets": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.0", + "@ethersproject/signing-key": "^5.6.0", + "@ethersproject/transactions": "^5.6.0", + "@ethersproject/wordlists": "^5.6.0" + } + }, + "packages/nftx/node_modules/ethers": { + "version": "5.6.7", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.6.7.tgz", + "integrity": "sha512-Q8pmMraUENK0cY6cy6IvIe3e9xL/+4kBvxmUvLXg1O7Abob0c7XzWI76E29j5em/HxWMl5hYiSClmOMW3jJmdg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.6.2", + "@ethersproject/abstract-provider": "5.6.0", + "@ethersproject/abstract-signer": "5.6.1", + "@ethersproject/address": "5.6.0", + "@ethersproject/base64": "5.6.0", + "@ethersproject/basex": "5.6.0", + "@ethersproject/bignumber": "5.6.1", + "@ethersproject/bytes": "5.6.1", + "@ethersproject/constants": "5.6.0", + "@ethersproject/contracts": "5.6.1", + "@ethersproject/hash": "5.6.0", + "@ethersproject/hdnode": "5.6.1", + "@ethersproject/json-wallets": "5.6.0", + "@ethersproject/keccak256": "5.6.0", + "@ethersproject/logger": "5.6.0", + "@ethersproject/networks": "5.6.3", + "@ethersproject/pbkdf2": "5.6.0", + "@ethersproject/properties": "5.6.0", + "@ethersproject/providers": "5.6.7", + "@ethersproject/random": "5.6.0", + "@ethersproject/rlp": "5.6.0", + "@ethersproject/sha2": "5.6.0", + "@ethersproject/signing-key": "5.6.1", + "@ethersproject/solidity": "5.6.0", + "@ethersproject/strings": "5.6.0", + "@ethersproject/transactions": "5.6.1", + "@ethersproject/units": "5.6.0", + "@ethersproject/wallet": "5.6.1", + "@ethersproject/web": "5.6.0", + "@ethersproject/wordlists": "5.6.0" + } + }, + "packages/react": { + "name": "@nftx/react", + "version": "0.8.0", + "license": "MIT", + "devDependencies": { + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/contracts": "^5.6.0", + "@ethersproject/providers": "^5.6.4", + "ethers": "^5.6.4", + "react": "^18.0.0" + }, + "peerDependencies": { + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/contracts": "^5.6.0", + "@ethersproject/providers": "^5.6.4", + "ethers": "^5.6.4", + "nftx.js": "<1.0.0", + "react": "^17.0.0 || ^18.0.0" + } + }, + "packages/react/node_modules/@ethersproject/providers": { + "version": "5.6.7", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.6.7.tgz", + "integrity": "sha512-QG7KLxfYk0FA0ycWATKMM8UzMOfOvchtkN89nNORlPqqhX5zatdamJ506dh5ECk+ybcnCkeVOdStlzrOMkkGOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.6.0", + "@ethersproject/abstract-signer": "^5.6.0", + "@ethersproject/address": "^5.6.0", + "@ethersproject/base64": "^5.6.0", + "@ethersproject/basex": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/hash": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/networks": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.0", + "@ethersproject/rlp": "^5.6.0", + "@ethersproject/sha2": "^5.6.0", + "@ethersproject/strings": "^5.6.0", + "@ethersproject/transactions": "^5.6.0", + "@ethersproject/web": "^5.6.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "packages/react/node_modules/@ethersproject/providers/node_modules/@ethersproject/abstract-signer": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.1.tgz", + "integrity": "sha512-xhSLo6y0nGJS7NxfvOSzCaWKvWb1TLT7dQ0nnpHZrDnC67xfnWm9NXflTMFPUXXMtjr33CdV0kWDEmnbrQZ74Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0" + } + }, + "packages/react/node_modules/@ethersproject/providers/node_modules/@ethersproject/networks": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.6.3.tgz", + "integrity": "sha512-QZxRH7cA5Ut9TbXwZFiCyuPchdWi87ZtVNHWZd0R6YFgYtes2jQ3+bsslJ0WdyDe0i6QumqtoYqvY3rrQFRZOQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.6.0" + } + }, + "packages/react/node_modules/@ethersproject/providers/node_modules/@ethersproject/transactions": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.1.tgz", + "integrity": "sha512-oIAC7zBCDnjVlEn0KSG1udbqR7hP9FOurxIV/aG+erCdvdvi+QXEZRUtVP9+lu3WYUe8SMYhdAVwNJtD7dZMRw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/rlp": "^5.6.0", + "@ethersproject/signing-key": "^5.6.0" + } + }, + "packages/react/node_modules/ethers": { + "version": "5.6.7", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.6.7.tgz", + "integrity": "sha512-Q8pmMraUENK0cY6cy6IvIe3e9xL/+4kBvxmUvLXg1O7Abob0c7XzWI76E29j5em/HxWMl5hYiSClmOMW3jJmdg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.6.2", + "@ethersproject/abstract-provider": "5.6.0", + "@ethersproject/abstract-signer": "5.6.1", + "@ethersproject/address": "5.6.0", + "@ethersproject/base64": "5.6.0", + "@ethersproject/basex": "5.6.0", + "@ethersproject/bignumber": "5.6.1", + "@ethersproject/bytes": "5.6.1", + "@ethersproject/constants": "5.6.0", + "@ethersproject/contracts": "5.6.1", + "@ethersproject/hash": "5.6.0", + "@ethersproject/hdnode": "5.6.1", + "@ethersproject/json-wallets": "5.6.0", + "@ethersproject/keccak256": "5.6.0", + "@ethersproject/logger": "5.6.0", + "@ethersproject/networks": "5.6.3", + "@ethersproject/pbkdf2": "5.6.0", + "@ethersproject/properties": "5.6.0", + "@ethersproject/providers": "5.6.7", + "@ethersproject/random": "5.6.0", + "@ethersproject/rlp": "5.6.0", + "@ethersproject/sha2": "5.6.0", + "@ethersproject/signing-key": "5.6.1", + "@ethersproject/solidity": "5.6.0", + "@ethersproject/strings": "5.6.0", + "@ethersproject/transactions": "5.6.1", + "@ethersproject/units": "5.6.0", + "@ethersproject/wallet": "5.6.1", + "@ethersproject/web": "5.6.0", + "@ethersproject/wordlists": "5.6.0" + } + }, + "packages/react/node_modules/ethers/node_modules/@ethersproject/abi": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.6.2.tgz", + "integrity": "sha512-40Ixjhy+YzFtnvzIqFU13FW9hd1gMoLa3cJfSDnfnL4o8EnEG1qLiV8sNJo3sHYi9UYMfFeRuZ7kv5+vhzU7gQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/hash": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.0" + } + }, + "packages/react/node_modules/ethers/node_modules/@ethersproject/abi/node_modules/@ethersproject/bignumber": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.1.tgz", + "integrity": "sha512-UtMeZ3GaUuF9sx2u9nPZiPP3ULcAFmXyvynR7oHl/tPrM+vldZh7ocMsoa1PqKYGnQnqUZJoqxZnGN6J0qdipA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^4.11.9" + } + }, + "packages/react/node_modules/ethers/node_modules/@ethersproject/abstract-signer": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.1.tgz", + "integrity": "sha512-xhSLo6y0nGJS7NxfvOSzCaWKvWb1TLT7dQ0nnpHZrDnC67xfnWm9NXflTMFPUXXMtjr33CdV0kWDEmnbrQZ74Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0" + } + }, + "packages/react/node_modules/ethers/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/bignumber": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.1.tgz", + "integrity": "sha512-UtMeZ3GaUuF9sx2u9nPZiPP3ULcAFmXyvynR7oHl/tPrM+vldZh7ocMsoa1PqKYGnQnqUZJoqxZnGN6J0qdipA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^4.11.9" + } + }, + "packages/react/node_modules/ethers/node_modules/@ethersproject/hdnode": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.6.1.tgz", + "integrity": "sha512-6IuYDmbH5Bv/WH/A2cUd0FjNr4qTLAvyHAECiFZhNZp69pPvU7qIDwJ7CU7VAkwm4IVBzqdYy9mpMAGhQdwCDA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.6.0", + "@ethersproject/basex": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/pbkdf2": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/sha2": "^5.6.0", + "@ethersproject/signing-key": "^5.6.0", + "@ethersproject/strings": "^5.6.0", + "@ethersproject/transactions": "^5.6.0", + "@ethersproject/wordlists": "^5.6.0" + } + }, + "packages/react/node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/bignumber": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.1.tgz", + "integrity": "sha512-UtMeZ3GaUuF9sx2u9nPZiPP3ULcAFmXyvynR7oHl/tPrM+vldZh7ocMsoa1PqKYGnQnqUZJoqxZnGN6J0qdipA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^4.11.9" + } + }, + "packages/react/node_modules/ethers/node_modules/@ethersproject/networks": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.6.3.tgz", + "integrity": "sha512-QZxRH7cA5Ut9TbXwZFiCyuPchdWi87ZtVNHWZd0R6YFgYtes2jQ3+bsslJ0WdyDe0i6QumqtoYqvY3rrQFRZOQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.6.0" + } + }, + "packages/react/node_modules/ethers/node_modules/@ethersproject/transactions": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.1.tgz", + "integrity": "sha512-oIAC7zBCDnjVlEn0KSG1udbqR7hP9FOurxIV/aG+erCdvdvi+QXEZRUtVP9+lu3WYUe8SMYhdAVwNJtD7dZMRw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/rlp": "^5.6.0", + "@ethersproject/signing-key": "^5.6.0" + } + }, + "packages/react/node_modules/ethers/node_modules/@ethersproject/transactions/node_modules/@ethersproject/bignumber": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.1.tgz", + "integrity": "sha512-UtMeZ3GaUuF9sx2u9nPZiPP3ULcAFmXyvynR7oHl/tPrM+vldZh7ocMsoa1PqKYGnQnqUZJoqxZnGN6J0qdipA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^4.11.9" + } + }, + "packages/react/node_modules/ethers/node_modules/@ethersproject/wallet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.6.1.tgz", + "integrity": "sha512-oXWoOslEWtwZiViIMlGVjeKDQz/tI7JF9UkyzN9jaGj8z7sXt2SyFMb0Ev6vSAqjIzrCrNrJ/+MkAhtKnGOfZw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.6.0", + "@ethersproject/abstract-signer": "^5.6.0", + "@ethersproject/address": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/hash": "^5.6.0", + "@ethersproject/hdnode": "^5.6.0", + "@ethersproject/json-wallets": "^5.6.0", + "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.0", + "@ethersproject/signing-key": "^5.6.0", + "@ethersproject/transactions": "^5.6.0", + "@ethersproject/wordlists": "^5.6.0" + } + }, + "packages/react/node_modules/ethers/node_modules/@ethersproject/wallet/node_modules/@ethersproject/bignumber": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.1.tgz", + "integrity": "sha512-UtMeZ3GaUuF9sx2u9nPZiPP3ULcAFmXyvynR7oHl/tPrM+vldZh7ocMsoa1PqKYGnQnqUZJoqxZnGN6J0qdipA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.0", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^4.11.9" + } + }, + "packages/react/node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "packages/subgraph": { + "name": "@nftx/subgraph", + "version": "0.8.0", + "license": "MIT", + "dependencies": { + "@nftx/config": "^0.8.0", + "@nftx/constants": "^0.8.0" + } + }, + "packages/trade": { + "name": "@nftx/trade", + "version": "0.8.0", + "license": "MIT", + "dependencies": { + "@nftx/config": "^0.8.0", + "@nftx/constants": "^0.8.0", + "@nftx/types": "^0.8.0", + "@nftx/utils": "^0.8.0" + }, + "devDependencies": { + "@ethersproject/abi": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/contracts": "^5.6.0", + "@ethersproject/providers": "^5.6.2", + "@ethersproject/units": "^5.6.0", + "ethers": "^5.6.2" + }, + "peerDependencies": { + "@ethersproject/abi": "^5.6.0", + "@ethersproject/bignumber": "^5.6.0", + "@ethersproject/constants": "^5.6.0", + "@ethersproject/contracts": "^5.6.0", + "@ethersproject/providers": "^5.6.2", + "@ethersproject/units": "^5.6.0", + "ethers": "^5.6.2" + } + }, + "packages/types": { + "name": "@nftx/types", + "version": "0.8.0", + "license": "MIT", + "dependencies": { + "abitype": "^0.7.1", + "viem": "^0.1.14" + } + }, + "packages/utils": { + "name": "@nftx/utils", + "version": "0.8.0", + "license": "MIT", + "dependencies": { + "@nftx/config": "^0.8.0", + "@nftx/constants": "^0.8.0", + "@nftx/subgraph": "^0.8.0", + "@nftx/types": "^0.8.0", + "abitype": "^0.7.1", + "keccak256": "^1.0.6", + "merkletreejs": "^0.2.32", + "viem": "^0.1.14" + } + } + } +} diff --git a/package.json b/package.json index 03574e94..f8d8b953 100644 --- a/package.json +++ b/package.json @@ -20,14 +20,16 @@ "@babel/preset-react": "^7.16.7", "@babel/preset-typescript": "^7.16.7", "@types/jest": "^27.4.1", + "@types/node": "^18.15.1", "@types/react": "^18.0.7", + "@types/ws": "^8.5.4", "@typescript-eslint/eslint-plugin": "^5.17.0", "@typescript-eslint/parser": "^5.17.0", "better-docs": "^2.7.2", "eslint": "^8.12.0", - "eslint-config-next": "^12.1.4", "eslint-config-prettier": "^8.5.0", "ethers": "^5.6.2", + "isomorphic-fetch": "^3.0.0", "jest": "^27.5.1", "jsdoc": "^3.6.11", "lerna": "^6.1.0", @@ -39,5 +41,6 @@ }, "workspaces": [ "packages/*" - ] + ], + "dependencies": {} } diff --git a/packages/abi/README.md b/packages/abi/README.md new file mode 100644 index 00000000..1d47c0f2 --- /dev/null +++ b/packages/abi/README.md @@ -0,0 +1,11 @@ +# `abi` + +> TODO: description + +## Usage + +``` +const abi = require('abi'); + +// TODO: DEMONSTRATE API +``` diff --git a/packages/abi/babel.config.js b/packages/abi/babel.config.js new file mode 100644 index 00000000..e5a2f2ad --- /dev/null +++ b/packages/abi/babel.config.js @@ -0,0 +1,20 @@ +const isTest = process.env.NODE_ENV === 'test'; + +module.exports = { + presets: [ + // "@babel/preset-react", + '@babel/preset-typescript', + [ + '@babel/preset-env', + { + targets: { + browsers: ['> 2%'], + }, + modules: isTest ? 'commonjs' : false, + useBuiltIns: false, + loose: true, + }, + ], + ], + sourceMaps: isTest ? 'inline' : true, +}; diff --git a/packages/abi/gen-hr.js b/packages/abi/gen-hr.js new file mode 100644 index 00000000..48118fbe --- /dev/null +++ b/packages/abi/gen-hr.js @@ -0,0 +1,11 @@ +const fs = require('fs'); +const { Interface, FormatTypes } = require('ethers/lib/utils'); + +const files = fs.readdirSync('./src/json'); + +files.forEach((file) => { + const json = require(`./src/json/${file}`); + const iface = new Interface(json); + const abi = iface.format(FormatTypes.full); + fs.writeFileSync(`./src/abis/${file}`, JSON.stringify(abi, null, 2), 'utf-8'); +}); diff --git a/packages/abi/generate.js b/packages/abi/generate.js new file mode 100644 index 00000000..d38e071e --- /dev/null +++ b/packages/abi/generate.js @@ -0,0 +1,33 @@ +const fs = require('fs'); +const { Interface, FormatTypes } = require('ethers/lib/utils'); + +const files = fs.readdirSync('./src/abis'); + +const output = files.map((file) => { + const name = file.split('.')[0]; + const abi = require(`./src/abis/${file}`); + const iface = new Interface(abi); + const json = JSON.parse(iface.format(FormatTypes.json)); + json.forEach((item) => { + if (!item.stateMutability) { + switch (item.type) { + case 'function': + case 'constructor': + item.stateMutability = item.constant + ? 'view' + : item.payable + ? 'payable' + : 'nonpayable'; + break; + default: + item.stateMutability = 'view'; + break; + } + } + }); + const result = `export const ${name} = ${JSON.stringify(json)} as const`; + + return result; +}); + +fs.writeFileSync(`./src/index.ts`, output.join('\n\n'), 'utf8'); diff --git a/packages/abi/package.json b/packages/abi/package.json new file mode 100644 index 00000000..5ae3b0ae --- /dev/null +++ b/packages/abi/package.json @@ -0,0 +1,30 @@ +{ + "name": "@nftx/abi", + "version": "0.8.0", + "description": "> TODO: description", + "author": "Jack Ellis ", + "homepage": "https://github.com/NFTX-project/nftxjs#readme", + "license": "MIT", + "main": "dist/cjs/abi.js", + "module": "dist/es/abi.js", + "types": "dist/ts/index.d.ts", + "typedoc": { + "entryPoint": "src/index.ts" + }, + "scripts": { + "test": "echo \"no tests\"", + "build": "rm -rf dist && node generate && rollup -c && tsc -d --outDir dist/ts --emitDeclarationOnly", + "prepublishOnly": "yarn build", + "docs": "jsdoc -c ../../jsdoc.js src" + }, + "publishConfig": { + "registry": "https://registry.yarnpkg.com" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/NFTX-project/nftxjs.git" + }, + "bugs": { + "url": "https://github.com/NFTX-project/nftxjs/issues" + } +} diff --git a/packages/abi/rollup.config.js b/packages/abi/rollup.config.js new file mode 100644 index 00000000..ff992021 --- /dev/null +++ b/packages/abi/rollup.config.js @@ -0,0 +1,3 @@ +import base from '../../rollup.base'; + +export default base; diff --git a/packages/abi/src/abis/BaseRegistrarImplementation.json b/packages/abi/src/abis/BaseRegistrarImplementation.json new file mode 100644 index 00000000..72a005b3 --- /dev/null +++ b/packages/abi/src/abis/BaseRegistrarImplementation.json @@ -0,0 +1,39 @@ +[ + "constructor(address _ens, bytes32 _baseNode)", + "event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)", + "event ApprovalForAll(address indexed owner, address indexed operator, bool approved)", + "event ControllerAdded(address indexed controller)", + "event ControllerRemoved(address indexed controller)", + "event NameMigrated(uint256 indexed id, address indexed owner, uint256 expires)", + "event NameRegistered(uint256 indexed id, address indexed owner, uint256 expires)", + "event NameRenewed(uint256 indexed id, uint256 expires)", + "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", + "event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)", + "function GRACE_PERIOD() view returns (uint256)", + "function addController(address controller)", + "function approve(address to, uint256 tokenId)", + "function available(uint256 id) view returns (bool)", + "function balanceOf(address owner) view returns (uint256)", + "function baseNode() view returns (bytes32)", + "function controllers(address) view returns (bool)", + "function ens() view returns (address)", + "function getApproved(uint256 tokenId) view returns (address)", + "function isApprovedForAll(address owner, address operator) view returns (bool)", + "function isOwner() view returns (bool)", + "function nameExpires(uint256 id) view returns (uint256)", + "function owner() view returns (address)", + "function ownerOf(uint256 tokenId) view returns (address)", + "function reclaim(uint256 id, address owner)", + "function register(uint256 id, address owner, uint256 duration) returns (uint256)", + "function registerOnly(uint256 id, address owner, uint256 duration) returns (uint256)", + "function removeController(address controller)", + "function renew(uint256 id, uint256 duration) returns (uint256)", + "function renounceOwnership()", + "function safeTransferFrom(address from, address to, uint256 tokenId)", + "function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data)", + "function setApprovalForAll(address to, bool approved)", + "function setResolver(address resolver)", + "function supportsInterface(bytes4 interfaceID) view returns (bool)", + "function transferFrom(address from, address to, uint256 tokenId)", + "function transferOwnership(address newOwner)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/CryptoPunks.json b/packages/abi/src/abis/CryptoPunks.json new file mode 100644 index 00000000..8f7e2aef --- /dev/null +++ b/packages/abi/src/abis/CryptoPunks.json @@ -0,0 +1,38 @@ +[ + "function name() view returns (string)", + "function punksOfferedForSale(uint256) view returns (bool isForSale, uint256 punkIndex, address seller, uint256 minValue, address onlySellTo)", + "function enterBidForPunk(uint256 punkIndex) payable", + "function totalSupply() view returns (uint256)", + "function acceptBidForPunk(uint256 punkIndex, uint256 minPrice)", + "function decimals() view returns (uint8)", + "function setInitialOwners(address[] addresses, uint256[] indices)", + "function withdraw()", + "function imageHash() view returns (string)", + "function nextPunkIndexToAssign() view returns (uint256)", + "function punkIndexToAddress(uint256) view returns (address)", + "function standard() view returns (string)", + "function punkBids(uint256) view returns (bool hasBid, uint256 punkIndex, address bidder, uint256 value)", + "function balanceOf(address) view returns (uint256)", + "function allInitialOwnersAssigned()", + "function allPunksAssigned() view returns (bool)", + "function buyPunk(uint256 punkIndex) payable", + "function transferPunk(address to, uint256 punkIndex)", + "function symbol() view returns (string)", + "function withdrawBidForPunk(uint256 punkIndex)", + "function setInitialOwner(address to, uint256 punkIndex)", + "function offerPunkForSaleToAddress(uint256 punkIndex, uint256 minSalePriceInWei, address toAddress)", + "function punksRemainingToAssign() view returns (uint256)", + "function offerPunkForSale(uint256 punkIndex, uint256 minSalePriceInWei)", + "function getPunk(uint256 punkIndex)", + "function pendingWithdrawals(address) view returns (uint256)", + "function punkNoLongerForSale(uint256 punkIndex)", + "constructor() payable", + "event Assign(address indexed to, uint256 punkIndex)", + "event Transfer(address indexed from, address indexed to, uint256 value)", + "event PunkTransfer(address indexed from, address indexed to, uint256 punkIndex)", + "event PunkOffered(uint256 indexed punkIndex, uint256 minValue, address indexed toAddress)", + "event PunkBidEntered(uint256 indexed punkIndex, uint256 value, address indexed fromAddress)", + "event PunkBidWithdrawn(uint256 indexed punkIndex, uint256 value, address indexed fromAddress)", + "event PunkBought(uint256 indexed punkIndex, uint256 value, address indexed fromAddress, address indexed toAddress)", + "event PunkNoLongerForSale(uint256 indexed punkIndex)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/ERC20.json b/packages/abi/src/abis/ERC20.json new file mode 100644 index 00000000..00c1d9f7 --- /dev/null +++ b/packages/abi/src/abis/ERC20.json @@ -0,0 +1,25 @@ +[ + "event Approval(address indexed owner, address indexed spender, uint256 value)", + "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", + "event Transfer(address indexed from, address indexed to, uint256 value)", + "function allowance(address owner, address spender) view returns (uint256)", + "function approve(address spender, uint256 amount) returns (bool)", + "function balanceOf(address account) view returns (uint256)", + "function burn(uint256 amount)", + "function burnFrom(address account, uint256 amount)", + "function changeName(string name)", + "function changeSymbol(string symbol)", + "function decimals() view returns (uint8)", + "function decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)", + "function increaseAllowance(address spender, uint256 addedValue) returns (bool)", + "function initialize(string name, string symbol)", + "function mint(address to, uint256 amount)", + "function name() view returns (string)", + "function owner() view returns (address)", + "function renounceOwnership()", + "function symbol() view returns (string)", + "function totalSupply() view returns (uint256)", + "function transfer(address recipient, uint256 amount) returns (bool)", + "function transferFrom(address sender, address recipient, uint256 amount) returns (bool)", + "function transferOwnership(address newOwner)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/ERC721.json b/packages/abi/src/abis/ERC721.json new file mode 100644 index 00000000..a6da6919 --- /dev/null +++ b/packages/abi/src/abis/ERC721.json @@ -0,0 +1,24 @@ +[ + "constructor()", + "event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)", + "event ApprovalForAll(address indexed owner, address indexed operator, bool approved)", + "event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)", + "function approve(address to, uint256 tokenId)", + "function balanceOf(address owner) view returns (uint256)", + "function baseURI() view returns (string)", + "function getApproved(uint256 tokenId) view returns (address)", + "function isApprovedForAll(address owner, address operator) view returns (bool)", + "function mint(address to, string tokenURI) returns (uint256)", + "function name() view returns (string)", + "function ownerOf(uint256 tokenId) view returns (address)", + "function safeTransferFrom(address from, address to, uint256 tokenId)", + "function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data)", + "function setApprovalForAll(address operator, bool approved)", + "function supportsInterface(bytes4 interfaceId) view returns (bool)", + "function symbol() view returns (string)", + "function tokenByIndex(uint256 index) view returns (uint256)", + "function tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)", + "function tokenURI(uint256 tokenId) view returns (string)", + "function totalSupply() view returns (uint256)", + "function transferFrom(address from, address to, uint256 tokenId)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/KittyCore.json b/packages/abi/src/abis/KittyCore.json new file mode 100644 index 00000000..90ee54b4 --- /dev/null +++ b/packages/abi/src/abis/KittyCore.json @@ -0,0 +1,67 @@ +[ + "function supportsInterface(bytes4 _interfaceID) view returns (bool)", + "function cfoAddress() view returns (address)", + "function tokenMetadata(uint256 _tokenId, string _preferredTransport) view returns (string infoUrl)", + "function promoCreatedCount() view returns (uint256)", + "function name() view returns (string)", + "function approve(address _to, uint256 _tokenId)", + "function ceoAddress() view returns (address)", + "function GEN0_STARTING_PRICE() view returns (uint256)", + "function setSiringAuctionAddress(address _address)", + "function totalSupply() view returns (uint256)", + "function pregnantKitties() view returns (uint256)", + "function isPregnant(uint256 _kittyId) view returns (bool)", + "function GEN0_AUCTION_DURATION() view returns (uint256)", + "function siringAuction() view returns (address)", + "function transferFrom(address _from, address _to, uint256 _tokenId)", + "function setGeneScienceAddress(address _address)", + "function setCEO(address _newCEO)", + "function setCOO(address _newCOO)", + "function createSaleAuction(uint256 _kittyId, uint256 _startingPrice, uint256 _endingPrice, uint256 _duration)", + "function unpause()", + "function sireAllowedToAddress(uint256) view returns (address)", + "function canBreedWith(uint256 _matronId, uint256 _sireId) view returns (bool)", + "function kittyIndexToApproved(uint256) view returns (address)", + "function createSiringAuction(uint256 _kittyId, uint256 _startingPrice, uint256 _endingPrice, uint256 _duration)", + "function setAutoBirthFee(uint256 val)", + "function approveSiring(address _addr, uint256 _sireId)", + "function setCFO(address _newCFO)", + "function createPromoKitty(uint256 _genes, address _owner)", + "function setSecondsPerBlock(uint256 secs)", + "function paused() view returns (bool)", + "function withdrawBalance()", + "function ownerOf(uint256 _tokenId) view returns (address owner)", + "function GEN0_CREATION_LIMIT() view returns (uint256)", + "function newContractAddress() view returns (address)", + "function setSaleAuctionAddress(address _address)", + "function balanceOf(address _owner) view returns (uint256 count)", + "function setNewAddress(address _v2Address)", + "function secondsPerBlock() view returns (uint256)", + "function pause()", + "function tokensOfOwner(address _owner) view returns (uint256[] ownerTokens)", + "function giveBirth(uint256 _matronId) returns (uint256)", + "function withdrawAuctionBalances()", + "function symbol() view returns (string)", + "function cooldowns(uint256) view returns (uint32)", + "function kittyIndexToOwner(uint256) view returns (address)", + "function transfer(address _to, uint256 _tokenId)", + "function cooAddress() view returns (address)", + "function autoBirthFee() view returns (uint256)", + "function erc721Metadata() view returns (address)", + "function createGen0Auction(uint256 _genes)", + "function isReadyToBreed(uint256 _kittyId) view returns (bool)", + "function PROMO_CREATION_LIMIT() view returns (uint256)", + "function setMetadataAddress(address _contractAddress)", + "function saleAuction() view returns (address)", + "function getKitty(uint256 _id) view returns (bool isGestating, bool isReady, uint256 cooldownIndex, uint256 nextActionAt, uint256 siringWithId, uint256 birthTime, uint256 matronId, uint256 sireId, uint256 generation, uint256 genes)", + "function bidOnSiringAuction(uint256 _sireId, uint256 _matronId) payable", + "function gen0CreatedCount() view returns (uint256)", + "function geneScience() view returns (address)", + "function breedWithAuto(uint256 _matronId, uint256 _sireId) payable", + "constructor()", + "event Pregnant(address owner, uint256 matronId, uint256 sireId, uint256 cooldownEndBlock)", + "event Transfer(address from, address to, uint256 tokenId)", + "event Approval(address owner, address approved, uint256 tokenId)", + "event Birth(address owner, uint256 kittyId, uint256 matronId, uint256 sireId, uint256 genes)", + "event ContractUpgrade(address newContract)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/NFTXENSMerkleEligibility.json b/packages/abi/src/abis/NFTXENSMerkleEligibility.json new file mode 100644 index 00000000..3118f697 --- /dev/null +++ b/packages/abi/src/abis/NFTXENSMerkleEligibility.json @@ -0,0 +1,26 @@ +[ + "constructor(uint256 _minExpirationTime)", + "event NFTXEligibilityInit(bytes32 merkleRoot, string _merkleReference, string _merkleLeavesURI)", + "event PrecursoryCheckComplete(uint256 tokenId, bytes32 requestId, bool isValid)", + "event PrecursoryCheckStarted(uint256 tokenId, bytes32 requestId)", + "function __NFTXEligibility_init(bytes32 _merkleRoot, string _merkleReference, string _merkleLeavesURI)", + "function __NFTXEligibility_init_bytes(bytes configData)", + "function afterMintHook(uint256[] tokenIds)", + "function afterRedeemHook(uint256[] tokenIds)", + "function beforeMintHook(uint256[] tokenIds)", + "function beforeRedeemHook(uint256[] tokenIds)", + "function checkAllEligible(uint256[] tokenIds) view returns (bool)", + "function checkAllIneligible(uint256[] tokenIds) view returns (bool)", + "function checkEligible(uint256[] tokenIds) view returns (bool[])", + "function checkIsEligible(uint256 tokenId) view returns (bool)", + "function finalized() view returns (bool)", + "function merkleLeavesURI() view returns (string)", + "function merkleReference() view returns (string)", + "function merkleRoot() view returns (bytes32)", + "function name() pure returns (string)", + "function processToken(uint256 tokenId, bytes32[] merkleProof) returns (bool)", + "function processTokens(uint256[] tokenIds, bytes32[][] merkleProofs) returns (bool[])", + "function requiresProcessing(uint256 tokenId, bytes32[] merkleProof) view returns (bool)", + "function targetAsset() pure returns (address)", + "function validTokenHashes(bytes32) view returns (bool)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/NFTXEligibility.json b/packages/abi/src/abis/NFTXEligibility.json new file mode 100644 index 00000000..f55c2b23 --- /dev/null +++ b/packages/abi/src/abis/NFTXEligibility.json @@ -0,0 +1,14 @@ +[ + "function __NFTXEligibility_init_bytes(bytes initData)", + "function afterMintHook(uint256[] tokenIds)", + "function afterRedeemHook(uint256[] tokenIds)", + "function beforeMintHook(uint256[] tokenIds)", + "function beforeRedeemHook(uint256[] tokenIds)", + "function checkAllEligible(uint256[] tokenIds) view returns (bool)", + "function checkAllIneligible(uint256[] tokenIds) view returns (bool)", + "function checkEligible(uint256[] tokenIds) view returns (bool[])", + "function checkIsEligible(uint256 tokenId) view returns (bool)", + "function finalized() view returns (bool)", + "function name() pure returns (string)", + "function targetAsset() pure returns (address)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/NFTXEligibilityManager.json b/packages/abi/src/abis/NFTXEligibilityManager.json new file mode 100644 index 00000000..f55c2b23 --- /dev/null +++ b/packages/abi/src/abis/NFTXEligibilityManager.json @@ -0,0 +1,14 @@ +[ + "function __NFTXEligibility_init_bytes(bytes initData)", + "function afterMintHook(uint256[] tokenIds)", + "function afterRedeemHook(uint256[] tokenIds)", + "function beforeMintHook(uint256[] tokenIds)", + "function beforeRedeemHook(uint256[] tokenIds)", + "function checkAllEligible(uint256[] tokenIds) view returns (bool)", + "function checkAllIneligible(uint256[] tokenIds) view returns (bool)", + "function checkEligible(uint256[] tokenIds) view returns (bool[])", + "function checkIsEligible(uint256 tokenId) view returns (bool)", + "function finalized() view returns (bool)", + "function name() pure returns (string)", + "function targetAsset() pure returns (address)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/NFTXInventoryStaking.json b/packages/abi/src/abis/NFTXInventoryStaking.json new file mode 100644 index 00000000..3950040b --- /dev/null +++ b/packages/abi/src/abis/NFTXInventoryStaking.json @@ -0,0 +1,33 @@ +[ + "event Deposit(uint256 vaultId, uint256 baseTokenAmount, uint256 xTokenAmount, uint256 timelockUntil, address sender)", + "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", + "event SetIsGuardian(address addr, bool isGuardian)", + "event SetPaused(uint256 lockId, bool paused)", + "event Upgraded(address indexed childImplementation)", + "event Withdraw(uint256 vaultId, uint256 baseTokenAmount, uint256 xTokenAmount, address sender)", + "event XTokenCreated(uint256 vaultId, address baseToken, address xToken)", + "function __NFTXInventoryStaking_init(address _nftxVaultFactory)", + "function __UpgradeableBeacon__init(address childImplementation_)", + "function balanceOf(uint256 vaultId, address who) view returns (uint256)", + "function childImplementation() view returns (address)", + "function deployXTokenForVault(uint256 vaultId)", + "function deposit(uint256 vaultId, uint256 _amount)", + "function isGuardian(address) view returns (bool)", + "function isPaused(uint256) view returns (bool)", + "function nftxVaultFactory() view returns (address)", + "function onlyOwnerIfPaused(uint256 lockId) view", + "function owner() view returns (address)", + "function pause(uint256 lockId)", + "function receiveRewards(uint256 vaultId, uint256 amount) returns (bool)", + "function renounceOwnership()", + "function setIsGuardian(address addr, bool _isGuardian)", + "function timelockMintFor(uint256 vaultId, uint256 amount, address to, uint256 timelockLength) returns (uint256)", + "function timelockUntil(uint256 vaultId, address who) view returns (uint256)", + "function transferOwnership(address newOwner)", + "function unpause(uint256 lockId)", + "function upgradeChildTo(address newChildImplementation)", + "function vaultXToken(uint256 vaultId) view returns (address)", + "function withdraw(uint256 vaultId, uint256 _share)", + "function xTokenAddr(address baseToken) view returns (address)", + "function xTokenShareValue(uint256 vaultId) view returns (uint256)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/NFTXLpStaking.json b/packages/abi/src/abis/NFTXLpStaking.json new file mode 100644 index 00000000..dc563c13 --- /dev/null +++ b/packages/abi/src/abis/NFTXLpStaking.json @@ -0,0 +1,52 @@ +[ + "event FeesReceived(uint256 vaultId, uint256 amount)", + "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", + "event PoolCreated(uint256 vaultId, address pool)", + "event PoolUpdated(uint256 vaultId, address pool)", + "event SetIsGuardian(address addr, bool isGuardian)", + "event SetPaused(uint256 lockId, bool paused)", + "function __NFTXLPStaking__init(address _stakingTokenProvider)", + "function _oldRewardDistributionTokenAddr(tuple(address stakingToken, address rewardToken) pool) view returns (address)", + "function _rewardDistributionTokenAddr(tuple(address stakingToken, address rewardToken) pool) view returns (address)", + "function _unusedRewardDistributionTokenAddr(tuple(address stakingToken, address rewardToken) pool) view returns (address)", + "function addPoolForVault(uint256 vaultId)", + "function assignNewImpl()", + "function balanceOf(uint256 vaultId, address addr) view returns (uint256)", + "function claimMultipleRewards(uint256[] vaultIds)", + "function claimRewards(uint256 vaultId)", + "function deposit(uint256 vaultId, uint256 amount)", + "function emergencyExit(address _stakingToken, address _rewardToken)", + "function emergencyExitAndClaim(address _stakingToken, address _rewardToken)", + "function emergencyMigrate(uint256 vaultId)", + "function exit(uint256 vaultId)", + "function isGuardian(address) view returns (bool)", + "function isPaused(uint256) view returns (bool)", + "function lockedLPBalance(uint256 vaultId, address who) view returns (uint256)", + "function lockedUntil(uint256 vaultId, address who) view returns (uint256)", + "function newRewardDistributionToken(uint256 vaultId) view returns (address)", + "function newTimelockRewardDistTokenImpl() view returns (address)", + "function nftxVaultFactory() view returns (address)", + "function oldBalanceOf(uint256 vaultId, address addr) view returns (uint256)", + "function oldRewardDistributionToken(uint256 vaultId) view returns (address)", + "function onlyOwnerIfPaused(uint256 lockId) view", + "function owner() view returns (address)", + "function pause(uint256 lockId)", + "function receiveRewards(uint256 vaultId, uint256 amount) returns (bool)", + "function renounceOwnership()", + "function rewardDistTokenImpl() view returns (address)", + "function rewardDistributionToken(uint256 vaultId) view returns (address)", + "function rewardDistributionTokenAddr(address stakingToken, address rewardToken) view returns (address)", + "function setIsGuardian(address addr, bool _isGuardian)", + "function setNFTXVaultFactory(address newFactory)", + "function setStakingTokenProvider(address newProvider)", + "function stakingTokenProvider() view returns (address)", + "function timelockDepositFor(uint256 vaultId, address account, uint256 amount, uint256 timelockLength)", + "function transferOwnership(address newOwner)", + "function unpause(uint256 lockId)", + "function unusedBalanceOf(uint256 vaultId, address addr) view returns (uint256)", + "function unusedRewardDistributionToken(uint256 vaultId) view returns (address)", + "function updatePoolForVault(uint256 vaultId)", + "function updatePoolForVaults(uint256[] vaultIds)", + "function vaultStakingInfo(uint256) view returns (address stakingToken, address rewardToken)", + "function withdraw(uint256 vaultId, uint256 amount)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/NFTXMarketplace0xZap.json b/packages/abi/src/abis/NFTXMarketplace0xZap.json new file mode 100644 index 00000000..9d8e3cdd --- /dev/null +++ b/packages/abi/src/abis/NFTXMarketplace0xZap.json @@ -0,0 +1,26 @@ +[ + "constructor(address _nftxFactory, address _WETH, address _swapTarget)", + "event Buy(uint256 count, uint256 ethSpent, address to)", + "event DustReturned(uint256 ethAmount, uint256 vTokenAmount, address to)", + "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", + "event Sell(uint256 count, uint256 ethReceived, address to)", + "event Swap(uint256 count, uint256 ethSpent, address to)", + "function WETH() view returns (address)", + "function buyAndRedeem(uint256 vaultId, uint256 amount, uint256[] specificIds, bytes swapCallData, address to) payable", + "function buyAndSwap1155(uint256 vaultId, uint256[] idsIn, uint256[] amounts, uint256[] specificIds, bytes swapCallData, address to) payable", + "function buyAndSwap721(uint256 vaultId, uint256[] idsIn, uint256[] specificIds, bytes swapCallData, address to) payable", + "function mintAndSell1155(uint256 vaultId, uint256[] ids, uint256[] amounts, bytes swapCallData, address to)", + "function mintAndSell721(uint256 vaultId, uint256[] ids, bytes swapCallData, address to)", + "function nftxFactory() view returns (address)", + "function nftxVaultAddresses(uint256) view returns (address)", + "function onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) returns (bytes4)", + "function onERC1155Received(address, address, uint256, uint256, bytes) returns (bytes4)", + "function onERC721Received(address, address, uint256, bytes) returns (bytes4)", + "function owner() view returns (address)", + "function pause(bool _paused)", + "function paused() view returns (bool)", + "function renounceOwnership()", + "function rescue(address token)", + "function supportsInterface(bytes4 interfaceId) view returns (bool)", + "function transferOwnership(address newOwner)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/NFTXMarketplaceZap.json b/packages/abi/src/abis/NFTXMarketplaceZap.json new file mode 100644 index 00000000..75c712fe --- /dev/null +++ b/packages/abi/src/abis/NFTXMarketplaceZap.json @@ -0,0 +1,29 @@ +[ + "constructor(address _nftxFactory, address _sushiRouter)", + "event Buy(uint256 count, uint256 ethSpent, address to)", + "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", + "event Sell(uint256 count, uint256 ethReceived, address to)", + "event Swap(uint256 count, uint256 ethSpent, address to)", + "function WETH() view returns (address)", + "function buyAndRedeem(uint256 vaultId, uint256 amount, uint256[] specificIds, address[] path, address to) payable", + "function buyAndRedeemWETH(uint256 vaultId, uint256 amount, uint256[] specificIds, uint256 maxWethIn, address[] path, address to)", + "function buyAndSwap1155(uint256 vaultId, uint256[] idsIn, uint256[] amounts, uint256[] specificIds, address[] path, address to) payable", + "function buyAndSwap1155WETH(uint256 vaultId, uint256[] idsIn, uint256[] amounts, uint256[] specificIds, uint256 maxWethIn, address[] path, address to) payable", + "function buyAndSwap721(uint256 vaultId, uint256[] idsIn, uint256[] specificIds, address[] path, address to) payable", + "function buyAndSwap721WETH(uint256 vaultId, uint256[] idsIn, uint256[] specificIds, uint256 maxWethIn, address[] path, address to)", + "function lpStaking() view returns (address)", + "function mintAndSell1155(uint256 vaultId, uint256[] ids, uint256[] amounts, uint256 minWethOut, address[] path, address to)", + "function mintAndSell1155WETH(uint256 vaultId, uint256[] ids, uint256[] amounts, uint256 minWethOut, address[] path, address to)", + "function mintAndSell721(uint256 vaultId, uint256[] ids, uint256 minEthOut, address[] path, address to)", + "function mintAndSell721WETH(uint256 vaultId, uint256[] ids, uint256 minWethOut, address[] path, address to)", + "function nftxFactory() view returns (address)", + "function onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) returns (bytes4)", + "function onERC1155Received(address, address, uint256, uint256, bytes) returns (bytes4)", + "function onERC721Received(address, address, uint256, bytes) returns (bytes4)", + "function owner() view returns (address)", + "function renounceOwnership()", + "function rescue(address token)", + "function supportsInterface(bytes4 interfaceId) view returns (bool)", + "function sushiRouter() view returns (address)", + "function transferOwnership(address newOwner)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/NFTXRewardDistributionTokenUpgradeable.json b/packages/abi/src/abis/NFTXRewardDistributionTokenUpgradeable.json new file mode 100644 index 00000000..b0e9bd1d --- /dev/null +++ b/packages/abi/src/abis/NFTXRewardDistributionTokenUpgradeable.json @@ -0,0 +1,33 @@ +[ + "event Approval(address indexed owner, address indexed spender, uint256 value)", + "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", + "event RewardWithdrawn(address indexed to, uint256 weiAmount)", + "event RewardsDistributed(address indexed from, uint256 weiAmount)", + "event Timelocked(address user, uint256 amount, uint256 until)", + "event Transfer(address indexed from, address indexed to, uint256 value)", + "function __TimelockRewardDistributionToken_init(address _target, string _name, string _symbol)", + "function accumulativeRewardOf(address _owner) view returns (uint256)", + "function allowance(address owner, address spender) view returns (uint256)", + "function approve(address spender, uint256 amount) returns (bool)", + "function balanceOf(address account) view returns (uint256)", + "function burnFrom(address account, uint256 amount)", + "function decimals() view returns (uint8)", + "function decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)", + "function distributeRewards(uint256 amount)", + "function dividendOf(address _owner) view returns (uint256)", + "function increaseAllowance(address spender, uint256 addedValue) returns (bool)", + "function mint(address account, uint256 amount)", + "function name() view returns (string)", + "function owner() view returns (address)", + "function renounceOwnership()", + "function symbol() view returns (string)", + "function target() view returns (address)", + "function timelockMint(address account, uint256 amount, uint256 timelockLength)", + "function timelockUntil(address account) view returns (uint256)", + "function totalSupply() view returns (uint256)", + "function transfer(address recipient, uint256 amount) returns (bool)", + "function transferFrom(address sender, address recipient, uint256 amount) returns (bool)", + "function transferOwnership(address newOwner)", + "function withdrawReward(address user)", + "function withdrawnRewardOf(address _owner) view returns (uint256)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/NFTXStakingZap.json b/packages/abi/src/abis/NFTXStakingZap.json new file mode 100644 index 00000000..f4cc345a --- /dev/null +++ b/packages/abi/src/abis/NFTXStakingZap.json @@ -0,0 +1,32 @@ +[ + "constructor(address _nftxFactory, address _sushiRouter)", + "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", + "event UserStaked(uint256 vaultId, uint256 count, uint256 lpBalance, uint256 timelockUntil, address sender)", + "function WETH() view returns (address)", + "function addLiquidity1155(uint256 vaultId, uint256[] ids, uint256[] amounts, uint256 minWethIn, uint256 wethIn) returns (uint256)", + "function addLiquidity1155ETH(uint256 vaultId, uint256[] ids, uint256[] amounts, uint256 minEthIn) payable returns (uint256)", + "function addLiquidity1155ETHTo(uint256 vaultId, uint256[] ids, uint256[] amounts, uint256 minEthIn, address to) payable returns (uint256)", + "function addLiquidity1155To(uint256 vaultId, uint256[] ids, uint256[] amounts, uint256 minWethIn, uint256 wethIn, address to) returns (uint256)", + "function addLiquidity721(uint256 vaultId, uint256[] ids, uint256 minWethIn, uint256 wethIn) returns (uint256)", + "function addLiquidity721ETH(uint256 vaultId, uint256[] ids, uint256 minWethIn) payable returns (uint256)", + "function addLiquidity721ETHTo(uint256 vaultId, uint256[] ids, uint256 minWethIn, address to) payable returns (uint256)", + "function addLiquidity721To(uint256 vaultId, uint256[] ids, uint256 minWethIn, uint256 wethIn, address to) returns (uint256)", + "function inventoryLockTime() view returns (uint256)", + "function inventoryStaking() view returns (address)", + "function lpLockTime() view returns (uint256)", + "function lpStaking() view returns (address)", + "function nftxFactory() view returns (address)", + "function onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) returns (bytes4)", + "function onERC1155Received(address, address, uint256, uint256, bytes) returns (bytes4)", + "function onERC721Received(address, address, uint256, bytes) returns (bytes4)", + "function owner() view returns (address)", + "function provideInventory1155(uint256 vaultId, uint256[] tokenIds, uint256[] amounts)", + "function provideInventory721(uint256 vaultId, uint256[] tokenIds)", + "function renounceOwnership()", + "function rescue(address token)", + "function setInventoryLockTime(uint256 newInventoryLockTime)", + "function setLPLockTime(uint256 newLPLockTime)", + "function supportsInterface(bytes4 interfaceId) view returns (bool)", + "function sushiRouter() view returns (address)", + "function transferOwnership(address newOwner)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/NFTXStakingZapDeprecated.json b/packages/abi/src/abis/NFTXStakingZapDeprecated.json new file mode 100644 index 00000000..42dbf186 --- /dev/null +++ b/packages/abi/src/abis/NFTXStakingZapDeprecated.json @@ -0,0 +1,27 @@ +[ + "constructor(address _nftxFactory, address _sushiRouter)", + "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", + "event UserStaked(uint256 vaultId, uint256 count, uint256 lpBalance, uint256 timelockUntil, address sender)", + "event Withdraw(uint256 vaultId, uint256 lpBalance, address sender)", + "function WETH() view returns (address)", + "function addLiquidity1155(uint256 vaultId, uint256[] ids, uint256[] amounts, uint256 minWethIn, uint256 wethIn) returns (uint256)", + "function addLiquidity1155ETH(uint256 vaultId, uint256[] ids, uint256[] amounts, uint256 minEthIn) payable returns (uint256)", + "function addLiquidity721(uint256 vaultId, uint256[] ids, uint256 minWethIn, uint256 wethIn) returns (uint256)", + "function addLiquidity721ETH(uint256 vaultId, uint256[] ids, uint256 minWethIn) payable returns (uint256)", + "function lockTime() view returns (uint256)", + "function lockedLPBalance(uint256 vaultId, address who) view returns (uint256)", + "function lockedUntil(uint256 vaultId, address who) view returns (uint256)", + "function lpStaking() view returns (address)", + "function nftxFactory() view returns (address)", + "function onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) returns (bytes4)", + "function onERC1155Received(address, address, uint256, uint256, bytes) returns (bytes4)", + "function onERC721Received(address, address, uint256, bytes) returns (bytes4)", + "function owner() view returns (address)", + "function renounceOwnership()", + "function setLockTime(uint256 newLockTime)", + "function setLpStakingAddress(address newLpStaking)", + "function supportsInterface(bytes4 interfaceId) view returns (bool)", + "function sushiRouter() view returns (address)", + "function transferOwnership(address newOwner)", + "function withdrawXLPTokens(uint256 vaultId)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/NFTXUnstakingInventoryZap.json b/packages/abi/src/abis/NFTXUnstakingInventoryZap.json new file mode 100644 index 00000000..70c9a368 --- /dev/null +++ b/packages/abi/src/abis/NFTXUnstakingInventoryZap.json @@ -0,0 +1,17 @@ +[ + "event InventoryUnstaked(uint256 vaultId, uint256 xTokensUnstaked, uint256 numNftsRedeemed, address unstaker)", + "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", + "function inventoryStaking() view returns (address)", + "function maxNftsUsingXToken(uint256 vaultId, address staker, address slpToken) view returns (uint256 numNfts, bool shortByTinyAmount)", + "function owner() view returns (address)", + "function renounceOwnership()", + "function rescue(address token)", + "function setInventoryStaking(address addr)", + "function setSushiRouterAndWeth(address sushiRouterAddr)", + "function setVaultFactory(address addr)", + "function sushiRouter() view returns (address)", + "function transferOwnership(address newOwner)", + "function unstakeInventory(uint256 vaultId, uint256 numNfts, uint256 remainingPortionToUnstake) payable", + "function vaultFactory() view returns (address)", + "function weth() view returns (address)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/NFTXV12.json b/packages/abi/src/abis/NFTXV12.json new file mode 100644 index 00000000..e06fdd79 --- /dev/null +++ b/packages/abi/src/abis/NFTXV12.json @@ -0,0 +1,42 @@ +[ + "event Mint(uint256 indexed vaultId, uint256[] nftIds, uint256 d2Amount, address sender)", + "event MintRequested(uint256 indexed vaultId, uint256[] nftIds, address sender)", + "event NewVault(uint256 indexed vaultId, address sender)", + "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", + "event Redeem(uint256 indexed vaultId, uint256[] nftIds, uint256 d2Amount, address sender)", + "function approveMintRequest(uint256 vaultId, uint256[] nftIds)", + "function closeVault(uint256 vaultId)", + "function createVault(string name, string symbol, address _assetAddress, bool _isD2Vault) returns (uint256)", + "function finalizeVault(uint256 vaultId)", + "function forceMigrationComplete(uint256 v1VaultId)", + "function initialize(address storeAddress)", + "function isEligible(uint256 vaultId, uint256 nftId) view returns (bool)", + "function isFullyMigrated(uint256) view returns (bool)", + "function isVault1155(uint256) view returns (bool)", + "function migrateV1Tokens(uint256 v1VaultId)", + "function migrateVaultToV2(uint256 v1VaultId, uint256 v2VaultId, uint256 count)", + "function migrationPair(uint256) view returns (address)", + "function mint(uint256 vaultId, uint256[] nftIds, uint256 d2Amount) payable", + "function onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) returns (bytes4)", + "function onERC1155Received(address, address, uint256, uint256, bytes) returns (bytes4)", + "function onERC721Received(address, address, uint256, bytes) returns (bytes4)", + "function onlyOwnerIfPaused(uint256 pauserId) view", + "function owner() view returns (address)", + "function rangeEnd(uint256) view returns (uint256)", + "function rangeStart(uint256) view returns (uint256)", + "function redeem(uint256 vaultId, uint256 amount) payable", + "function renounceOwnership()", + "function revokeMintRequests(uint256 vaultId, uint256[] nftIds)", + "function setFlipEligOnRedeem(uint256 vaultId, bool flipElig)", + "function setIs1155(uint256 vaultId, bool _boolean)", + "function setIsEligible(uint256 vaultId, uint256[] nftIds, bool _boolean)", + "function setManager(uint256 vaultId, address newManager)", + "function setNegateEligibility(uint256 vaultId, bool shouldNegate)", + "function setPaused(uint256 pauserId, bool _isPaused)", + "function store() view returns (address)", + "function supportsInterface(bytes4 interfaceId) view returns (bool)", + "function targetRedeem(uint256 v1VaultId, uint256[] specificIds)", + "function targetWithdraw(uint256 v1VaultId, uint256[] specificIds)", + "function transferOwnership(address newOwner)", + "function vaultSize(uint256 vaultId) view returns (uint256)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/NFTXVaultFactory.json b/packages/abi/src/abis/NFTXVaultFactory.json new file mode 100644 index 00000000..165f8ee9 --- /dev/null +++ b/packages/abi/src/abis/NFTXVaultFactory.json @@ -0,0 +1,35 @@ +[ + "event NewEligibilityManager(address oldEligManager, address newEligManager)", + "event NewFeeDistributor(address oldDistributor, address newDistributor)", + "event NewVault(uint256 indexed vaultId, address vaultAddress, address assetAddress)", + "event NewZapContract(address oldZap, address newZap)", + "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", + "event SetIsGuardian(address addr, bool isGuardian)", + "event SetPaused(uint256 lockId, bool paused)", + "event Upgraded(address indexed childImplementation)", + "function __NFTXVaultFactory_init(address _vaultImpl, address _feeDistributor)", + "function __UpgradeableBeacon__init(address childImplementation_)", + "function allVaults(uint256) view returns (address)", + "function childImplementation() view returns (address)", + "function createVault(string name, string symbol, address _assetAddress, bool is1155, bool allowAllItems) returns (uint256)", + "function eligibilityManager() view returns (address)", + "function feeDistributor() view returns (address)", + "function isGuardian(address) view returns (bool)", + "function isLocked(uint256 lockId) view returns (bool)", + "function isPaused(uint256) view returns (bool)", + "function numVaults() view returns (uint256)", + "function onlyOwnerIfPaused(uint256 lockId) view", + "function owner() view returns (address)", + "function pause(uint256 lockId)", + "function renounceOwnership()", + "function setEligibilityManager(address _eligibilityManager)", + "function setFeeDistributor(address _feeDistributor)", + "function setIsGuardian(address addr, bool _isGuardian)", + "function setZapContract(address _zapContract)", + "function transferOwnership(address newOwner)", + "function unpause(uint256 lockId)", + "function upgradeChildTo(address newChildImplementation)", + "function vault(uint256) view returns (address)", + "function vaultsForAsset(address asset) view returns (address[])", + "function zapContract() view returns (address)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/NFTXVaultUpgradeable.json b/packages/abi/src/abis/NFTXVaultUpgradeable.json new file mode 100644 index 00000000..41dfa0cc --- /dev/null +++ b/packages/abi/src/abis/NFTXVaultUpgradeable.json @@ -0,0 +1,75 @@ +[ + "event Approval(address indexed owner, address indexed spender, uint256 value)", + "event EligibilityDeployed(uint256 moduleIndex, address eligibilityAddr)", + "event EnableMintUpdated(bool enabled)", + "event EnableRandomRedeemUpdated(bool enabled)", + "event EnableRandomSwapUpdated(bool enabled)", + "event EnableTargetRedeemUpdated(bool enabled)", + "event EnableTargetSwapUpdated(bool enabled)", + "event ManagerSet(address manager)", + "event Minted(uint256[] nftIds, uint256[] amounts, address to)", + "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", + "event Redeemed(uint256[] nftIds, uint256[] specificIds, address to)", + "event Swapped(uint256[] nftIds, uint256[] amounts, uint256[] specificIds, uint256[] redeemedIds, address to)", + "event Transfer(address indexed from, address indexed to, uint256 value)", + "event VaultInit(uint256 indexed vaultId, address assetAddress, bool is1155, bool allowAllItems)", + "function __NFTXVault_init(string _name, string _symbol, address _assetAddress, bool _is1155, bool _allowAllItems)", + "function allHoldings() view returns (uint256[])", + "function allValidNFTs(uint256[] tokenIds) view returns (bool)", + "function allowAllItems() view returns (bool)", + "function allowance(address owner, address spender) view returns (uint256)", + "function approve(address spender, uint256 amount) returns (bool)", + "function assetAddress() view returns (address)", + "function assignDefaultFeatures()", + "function balanceOf(address account) view returns (uint256)", + "function decimals() view returns (uint8)", + "function decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)", + "function deployEligibilityStorage(uint256 moduleIndex, bytes initData) returns (address)", + "function disableVaultFees()", + "function eligibilityStorage() view returns (address)", + "function enableMint() view returns (bool)", + "function enableRandomRedeem() view returns (bool)", + "function enableRandomSwap() view returns (bool)", + "function enableTargetRedeem() view returns (bool)", + "function enableTargetSwap() view returns (bool)", + "function finalizeVault()", + "function flashFee(address token, uint256 amount) view returns (uint256)", + "function flashLoan(address receiver, address token, uint256 amount, bytes data) returns (bool)", + "function increaseAllowance(address spender, uint256 addedValue) returns (bool)", + "function is1155() view returns (bool)", + "function manager() view returns (address)", + "function maxFlashLoan(address token) view returns (uint256)", + "function mint(uint256[] tokenIds, uint256[] amounts) returns (uint256)", + "function mintFee() view returns (uint256)", + "function mintTo(uint256[] tokenIds, uint256[] amounts, address to) returns (uint256)", + "function name() view returns (string)", + "function nftIdAt(uint256 holdingsIndex) view returns (uint256)", + "function onERC1155BatchReceived(address operator, address, uint256[], uint256[], bytes) returns (bytes4)", + "function onERC1155Received(address operator, address, uint256, uint256, bytes) returns (bytes4)", + "function onERC721Received(address operator, address, uint256, bytes) returns (bytes4)", + "function owner() view returns (address)", + "function randomRedeemFee() view returns (uint256)", + "function randomSwapFee() view returns (uint256)", + "function redeem(uint256 amount, uint256[] specificIds) returns (uint256[])", + "function redeemTo(uint256 amount, uint256[] specificIds, address to) returns (uint256[])", + "function renounceOwnership()", + "function setFees(uint256 _mintFee, uint256 _randomRedeemFee, uint256 _targetRedeemFee, uint256 _randomSwapFee, uint256 _targetSwapFee)", + "function setManager(address _manager)", + "function setVaultFeatures(bool _enableMint, bool _enableRandomRedeem, bool _enableTargetRedeem, bool _enableRandomSwap, bool _enableTargetSwap)", + "function setVaultMetadata(string name_, string symbol_)", + "function supportsInterface(bytes4 interfaceId) view returns (bool)", + "function swap(uint256[] tokenIds, uint256[] amounts, uint256[] specificIds) returns (uint256[])", + "function swapTo(uint256[] tokenIds, uint256[] amounts, uint256[] specificIds, address to) returns (uint256[])", + "function symbol() view returns (string)", + "function targetRedeemFee() view returns (uint256)", + "function targetSwapFee() view returns (uint256)", + "function totalHoldings() view returns (uint256)", + "function totalSupply() view returns (uint256)", + "function transfer(address recipient, uint256 amount) returns (bool)", + "function transferFrom(address sender, address recipient, uint256 amount) returns (bool)", + "function transferOwnership(address newOwner)", + "function vaultFactory() view returns (address)", + "function vaultFees() view returns (uint256, uint256, uint256, uint256, uint256)", + "function vaultId() view returns (uint256)", + "function version() pure returns (string)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/UniswapQuoter.json b/packages/abi/src/abis/UniswapQuoter.json new file mode 100644 index 00000000..00c1ce96 --- /dev/null +++ b/packages/abi/src/abis/UniswapQuoter.json @@ -0,0 +1,10 @@ +[ + "constructor(address _factory, address _WETH9)", + "function WETH9() view returns (address)", + "function factory() view returns (address)", + "function quoteExactInput(bytes path, uint256 amountIn) returns (uint256 amountOut)", + "function quoteExactInputSingle(address tokenIn, address tokenOut, uint24 fee, uint256 amountIn, uint160 sqrtPriceLimitX96) view returns (uint256 amountOut)", + "function quoteExactOutput(bytes path, uint256 amountOut) returns (uint256 amountIn)", + "function quoteExactOutputSingle(address tokenIn, address tokenOut, uint24 fee, uint256 amountOut, uint160 sqrtPriceLimitX96) view returns (uint256 amountIn)", + "function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes path) view" +] \ No newline at end of file diff --git a/packages/abi/src/abis/UniswapV2Factory.json b/packages/abi/src/abis/UniswapV2Factory.json new file mode 100644 index 00000000..74dec152 --- /dev/null +++ b/packages/abi/src/abis/UniswapV2Factory.json @@ -0,0 +1,15 @@ +[ + "constructor(address _feeToSetter)", + "event PairCreated(address indexed token0, address indexed token1, address pair, uint256)", + "function allPairs(uint256) view returns (address)", + "function allPairsLength() view returns (uint256)", + "function createPair(address tokenA, address tokenB) returns (address pair)", + "function feeTo() view returns (address)", + "function feeToSetter() view returns (address)", + "function getPair(address, address) view returns (address)", + "function migrator() view returns (address)", + "function pairCodeHash() pure returns (bytes32)", + "function setFeeTo(address _feeTo)", + "function setFeeToSetter(address _feeToSetter)", + "function setMigrator(address _migrator)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/UniswapV2Pair.json b/packages/abi/src/abis/UniswapV2Pair.json new file mode 100644 index 00000000..ace96068 --- /dev/null +++ b/packages/abi/src/abis/UniswapV2Pair.json @@ -0,0 +1,36 @@ +[ + "constructor()", + "event Approval(address indexed owner, address indexed spender, uint256 value)", + "event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to)", + "event Mint(address indexed sender, uint256 amount0, uint256 amount1)", + "event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to)", + "event Sync(uint112 reserve0, uint112 reserve1)", + "event Transfer(address indexed from, address indexed to, uint256 value)", + "function DOMAIN_SEPARATOR() view returns (bytes32)", + "function MINIMUM_LIQUIDITY() view returns (uint256)", + "function PERMIT_TYPEHASH() view returns (bytes32)", + "function allowance(address, address) view returns (uint256)", + "function approve(address spender, uint256 value) returns (bool)", + "function balanceOf(address) view returns (uint256)", + "function burn(address to) returns (uint256 amount0, uint256 amount1)", + "function decimals() view returns (uint8)", + "function factory() view returns (address)", + "function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)", + "function initialize(address _token0, address _token1)", + "function kLast() view returns (uint256)", + "function mint(address to) returns (uint256 liquidity)", + "function name() view returns (string)", + "function nonces(address) view returns (uint256)", + "function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)", + "function price0CumulativeLast() view returns (uint256)", + "function price1CumulativeLast() view returns (uint256)", + "function skim(address to)", + "function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes data)", + "function symbol() view returns (string)", + "function sync()", + "function token0() view returns (address)", + "function token1() view returns (address)", + "function totalSupply() view returns (uint256)", + "function transfer(address to, uint256 value) returns (bool)", + "function transferFrom(address from, address to, uint256 value) returns (bool)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/UniswapV2Router.json b/packages/abi/src/abis/UniswapV2Router.json new file mode 100644 index 00000000..577ea2b1 --- /dev/null +++ b/packages/abi/src/abis/UniswapV2Router.json @@ -0,0 +1,27 @@ +[ + "constructor(address _factory, address _WETH)", + "function WETH() view returns (address)", + "function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns (uint256 amountA, uint256 amountB, uint256 liquidity)", + "function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity)", + "function factory() view returns (address)", + "function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns (uint256 amountIn)", + "function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns (uint256 amountOut)", + "function getAmountsIn(uint256 amountOut, address[] path) view returns (uint256[] amounts)", + "function getAmountsOut(uint256 amountIn, address[] path) view returns (uint256[] amounts)", + "function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns (uint256 amountB)", + "function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns (uint256 amountA, uint256 amountB)", + "function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns (uint256 amountToken, uint256 amountETH)", + "function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns (uint256 amountETH)", + "function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns (uint256 amountToken, uint256 amountETH)", + "function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns (uint256 amountETH)", + "function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns (uint256 amountA, uint256 amountB)", + "function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns (uint256[] amounts)", + "function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns (uint256[] amounts)", + "function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable", + "function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns (uint256[] amounts)", + "function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline)", + "function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns (uint256[] amounts)", + "function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline)", + "function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns (uint256[] amounts)", + "function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns (uint256[] amounts)" +] \ No newline at end of file diff --git a/packages/abi/src/abis/VaultCreationZap.json b/packages/abi/src/abis/VaultCreationZap.json new file mode 100644 index 00000000..494aedad --- /dev/null +++ b/packages/abi/src/abis/VaultCreationZap.json @@ -0,0 +1,18 @@ +[ + "constructor(address _vaultFactory, address _inventoryStaking, address _lpStaking, address _sushiRouter, address _sushiHelper, address _weth)", + "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", + "function WETH() view returns (address)", + "function createVault(tuple(address assetAddress, bool is1155, bool allowAllItems, string name, string symbol) vaultData, uint256 vaultFeatures, tuple(uint32 mintFee, uint32 randomRedeemFee, uint32 targetRedeemFee, uint32 randomSwapFee, uint32 targetSwapFee) vaultFees, tuple(int256 moduleIndex, bytes initData) eligibilityStorage, tuple(uint256[] assetTokenIds, uint256[] assetTokenAmounts, uint256 minTokenIn, uint256 minWethIn, uint256 wethIn) assetTokens) payable returns (uint256 vaultId_)", + "function inventoryStaking() view returns (address)", + "function lpStaking() view returns (address)", + "function onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) returns (bytes4)", + "function onERC1155Received(address, address, uint256, uint256, bytes) returns (bytes4)", + "function owner() view returns (address)", + "function pause(bool _paused)", + "function paused() view returns (bool)", + "function renounceOwnership()", + "function supportsInterface(bytes4 interfaceId) view returns (bool)", + "function sushiRouter() view returns (address)", + "function transferOwnership(address newOwner)", + "function vaultFactory() view returns (address)" +] \ No newline at end of file diff --git a/packages/abi/src/index.ts b/packages/abi/src/index.ts new file mode 100644 index 00000000..7889d6e1 --- /dev/null +++ b/packages/abi/src/index.ts @@ -0,0 +1,47 @@ +export const BaseRegistrarImplementation = [{"type":"constructor","payable":false,"inputs":[{"type":"address","name":"_ens"},{"type":"bytes32","name":"_baseNode"}],"stateMutability":"nonpayable"},{"type":"event","anonymous":false,"name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"approved","indexed":true},{"type":"uint256","name":"tokenId","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"ApprovalForAll","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"operator","indexed":true},{"type":"bool","name":"approved"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"ControllerAdded","inputs":[{"type":"address","name":"controller","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"ControllerRemoved","inputs":[{"type":"address","name":"controller","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"NameMigrated","inputs":[{"type":"uint256","name":"id","indexed":true},{"type":"address","name":"owner","indexed":true},{"type":"uint256","name":"expires"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"NameRegistered","inputs":[{"type":"uint256","name":"id","indexed":true},{"type":"address","name":"owner","indexed":true},{"type":"uint256","name":"expires"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"NameRenewed","inputs":[{"type":"uint256","name":"id","indexed":true},{"type":"uint256","name":"expires"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":true},{"type":"address","name":"newOwner","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Transfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"tokenId","indexed":true}],"stateMutability":"view"},{"type":"function","name":"GRACE_PERIOD","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"addController","constant":false,"payable":false,"inputs":[{"type":"address","name":"controller"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approve","constant":false,"payable":false,"inputs":[{"type":"address","name":"to"},{"type":"uint256","name":"tokenId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"available","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"id"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"balanceOf","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"owner"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"baseNode","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"bytes32"}]},{"type":"function","name":"controllers","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"ens","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"getApproved","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"tokenId"}],"outputs":[{"type":"address"}]},{"type":"function","name":"isApprovedForAll","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"owner"},{"type":"address","name":"operator"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"isOwner","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"bool"}]},{"type":"function","name":"nameExpires","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"id"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"owner","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"ownerOf","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"tokenId"}],"outputs":[{"type":"address"}]},{"type":"function","name":"reclaim","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"id"},{"type":"address","name":"owner"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"register","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"id"},{"type":"address","name":"owner"},{"type":"uint256","name":"duration"}],"outputs":[{"type":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerOnly","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"id"},{"type":"address","name":"owner"},{"type":"uint256","name":"duration"}],"outputs":[{"type":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeController","constant":false,"payable":false,"inputs":[{"type":"address","name":"controller"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renew","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"id"},{"type":"uint256","name":"duration"}],"outputs":[{"type":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","constant":false,"payable":false,"inputs":[{"type":"address","name":"from"},{"type":"address","name":"to"},{"type":"uint256","name":"tokenId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","constant":false,"payable":false,"inputs":[{"type":"address","name":"from"},{"type":"address","name":"to"},{"type":"uint256","name":"tokenId"},{"type":"bytes","name":"_data"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","constant":false,"payable":false,"inputs":[{"type":"address","name":"to"},{"type":"bool","name":"approved"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setResolver","constant":false,"payable":false,"inputs":[{"type":"address","name":"resolver"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes4","name":"interfaceID"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"transferFrom","constant":false,"payable":false,"inputs":[{"type":"address","name":"from"},{"type":"address","name":"to"},{"type":"uint256","name":"tokenId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","constant":false,"payable":false,"inputs":[{"type":"address","name":"newOwner"}],"outputs":[],"stateMutability":"nonpayable"}] as const + +export const CryptoPunks = [{"type":"function","name":"name","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"punksOfferedForSale","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"bool","name":"isForSale"},{"type":"uint256","name":"punkIndex"},{"type":"address","name":"seller"},{"type":"uint256","name":"minValue"},{"type":"address","name":"onlySellTo"}]},{"type":"function","name":"enterBidForPunk","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"punkIndex"}],"outputs":[]},{"type":"function","name":"totalSupply","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"acceptBidForPunk","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"punkIndex"},{"type":"uint256","name":"minPrice"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint8"}]},{"type":"function","name":"setInitialOwners","constant":false,"payable":false,"inputs":[{"type":"address[]","name":"addresses"},{"type":"uint256[]","name":"indices"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"imageHash","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"nextPunkIndexToAssign","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"punkIndexToAddress","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"address"}]},{"type":"function","name":"standard","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"punkBids","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"bool","name":"hasBid"},{"type":"uint256","name":"punkIndex"},{"type":"address","name":"bidder"},{"type":"uint256","name":"value"}]},{"type":"function","name":"balanceOf","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"allInitialOwnersAssigned","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"allPunksAssigned","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"bool"}]},{"type":"function","name":"buyPunk","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"punkIndex"}],"outputs":[]},{"type":"function","name":"transferPunk","constant":false,"payable":false,"inputs":[{"type":"address","name":"to"},{"type":"uint256","name":"punkIndex"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"withdrawBidForPunk","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"punkIndex"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setInitialOwner","constant":false,"payable":false,"inputs":[{"type":"address","name":"to"},{"type":"uint256","name":"punkIndex"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"offerPunkForSaleToAddress","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"punkIndex"},{"type":"uint256","name":"minSalePriceInWei"},{"type":"address","name":"toAddress"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"punksRemainingToAssign","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"offerPunkForSale","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"punkIndex"},{"type":"uint256","name":"minSalePriceInWei"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getPunk","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"punkIndex"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pendingWithdrawals","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"punkNoLongerForSale","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"punkIndex"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"constructor","stateMutability":"payable","payable":true,"inputs":[]},{"type":"event","anonymous":false,"name":"Assign","inputs":[{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"punkIndex"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Transfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"value"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"PunkTransfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"punkIndex"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"PunkOffered","inputs":[{"type":"uint256","name":"punkIndex","indexed":true},{"type":"uint256","name":"minValue"},{"type":"address","name":"toAddress","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"PunkBidEntered","inputs":[{"type":"uint256","name":"punkIndex","indexed":true},{"type":"uint256","name":"value"},{"type":"address","name":"fromAddress","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"PunkBidWithdrawn","inputs":[{"type":"uint256","name":"punkIndex","indexed":true},{"type":"uint256","name":"value"},{"type":"address","name":"fromAddress","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"PunkBought","inputs":[{"type":"uint256","name":"punkIndex","indexed":true},{"type":"uint256","name":"value"},{"type":"address","name":"fromAddress","indexed":true},{"type":"address","name":"toAddress","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"PunkNoLongerForSale","inputs":[{"type":"uint256","name":"punkIndex","indexed":true}],"stateMutability":"view"}] as const + +export const ERC20 = [{"type":"event","anonymous":false,"name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"spender","indexed":true},{"type":"uint256","name":"value"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":true},{"type":"address","name":"newOwner","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Transfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"value"}],"stateMutability":"view"},{"type":"function","name":"allowance","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"owner"},{"type":"address","name":"spender"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"approve","constant":false,"payable":false,"inputs":[{"type":"address","name":"spender"},{"type":"uint256","name":"amount"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"account"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"burn","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"amount"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burnFrom","constant":false,"payable":false,"inputs":[{"type":"address","name":"account"},{"type":"uint256","name":"amount"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"changeName","constant":false,"payable":false,"inputs":[{"type":"string","name":"name"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"changeSymbol","constant":false,"payable":false,"inputs":[{"type":"string","name":"symbol"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint8"}]},{"type":"function","name":"decreaseAllowance","constant":false,"payable":false,"inputs":[{"type":"address","name":"spender"},{"type":"uint256","name":"subtractedValue"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"increaseAllowance","constant":false,"payable":false,"inputs":[{"type":"address","name":"spender"},{"type":"uint256","name":"addedValue"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","constant":false,"payable":false,"inputs":[{"type":"string","name":"name"},{"type":"string","name":"symbol"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mint","constant":false,"payable":false,"inputs":[{"type":"address","name":"to"},{"type":"uint256","name":"amount"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"owner","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"renounceOwnership","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"totalSupply","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"transfer","constant":false,"payable":false,"inputs":[{"type":"address","name":"recipient"},{"type":"uint256","name":"amount"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","constant":false,"payable":false,"inputs":[{"type":"address","name":"sender"},{"type":"address","name":"recipient"},{"type":"uint256","name":"amount"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","constant":false,"payable":false,"inputs":[{"type":"address","name":"newOwner"}],"outputs":[],"stateMutability":"nonpayable"}] as const + +export const ERC721 = [{"type":"constructor","payable":false,"inputs":[],"stateMutability":"nonpayable"},{"type":"event","anonymous":false,"name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"approved","indexed":true},{"type":"uint256","name":"tokenId","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"ApprovalForAll","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"operator","indexed":true},{"type":"bool","name":"approved"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Transfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"tokenId","indexed":true}],"stateMutability":"view"},{"type":"function","name":"approve","constant":false,"payable":false,"inputs":[{"type":"address","name":"to"},{"type":"uint256","name":"tokenId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"owner"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"baseURI","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"getApproved","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"tokenId"}],"outputs":[{"type":"address"}]},{"type":"function","name":"isApprovedForAll","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"owner"},{"type":"address","name":"operator"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"mint","constant":false,"payable":false,"inputs":[{"type":"address","name":"to"},{"type":"string","name":"tokenURI"}],"outputs":[{"type":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"ownerOf","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"tokenId"}],"outputs":[{"type":"address"}]},{"type":"function","name":"safeTransferFrom","constant":false,"payable":false,"inputs":[{"type":"address","name":"from"},{"type":"address","name":"to"},{"type":"uint256","name":"tokenId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","constant":false,"payable":false,"inputs":[{"type":"address","name":"from"},{"type":"address","name":"to"},{"type":"uint256","name":"tokenId"},{"type":"bytes","name":"_data"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","constant":false,"payable":false,"inputs":[{"type":"address","name":"operator"},{"type":"bool","name":"approved"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes4","name":"interfaceId"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"symbol","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"tokenByIndex","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"index"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"tokenOfOwnerByIndex","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"owner"},{"type":"uint256","name":"index"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"tokenURI","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"tokenId"}],"outputs":[{"type":"string"}]},{"type":"function","name":"totalSupply","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"transferFrom","constant":false,"payable":false,"inputs":[{"type":"address","name":"from"},{"type":"address","name":"to"},{"type":"uint256","name":"tokenId"}],"outputs":[],"stateMutability":"nonpayable"}] as const + +export const KittyCore = [{"type":"function","name":"supportsInterface","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes4","name":"_interfaceID"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"cfoAddress","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"tokenMetadata","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"_tokenId"},{"type":"string","name":"_preferredTransport"}],"outputs":[{"type":"string","name":"infoUrl"}]},{"type":"function","name":"promoCreatedCount","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"name","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"approve","constant":false,"payable":false,"inputs":[{"type":"address","name":"_to"},{"type":"uint256","name":"_tokenId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ceoAddress","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"GEN0_STARTING_PRICE","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"setSiringAuctionAddress","constant":false,"payable":false,"inputs":[{"type":"address","name":"_address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"totalSupply","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"pregnantKitties","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"isPregnant","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"_kittyId"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"GEN0_AUCTION_DURATION","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"siringAuction","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"transferFrom","constant":false,"payable":false,"inputs":[{"type":"address","name":"_from"},{"type":"address","name":"_to"},{"type":"uint256","name":"_tokenId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setGeneScienceAddress","constant":false,"payable":false,"inputs":[{"type":"address","name":"_address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setCEO","constant":false,"payable":false,"inputs":[{"type":"address","name":"_newCEO"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setCOO","constant":false,"payable":false,"inputs":[{"type":"address","name":"_newCOO"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createSaleAuction","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"_kittyId"},{"type":"uint256","name":"_startingPrice"},{"type":"uint256","name":"_endingPrice"},{"type":"uint256","name":"_duration"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sireAllowedToAddress","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"address"}]},{"type":"function","name":"canBreedWith","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"_matronId"},{"type":"uint256","name":"_sireId"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"kittyIndexToApproved","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"address"}]},{"type":"function","name":"createSiringAuction","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"_kittyId"},{"type":"uint256","name":"_startingPrice"},{"type":"uint256","name":"_endingPrice"},{"type":"uint256","name":"_duration"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setAutoBirthFee","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"val"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveSiring","constant":false,"payable":false,"inputs":[{"type":"address","name":"_addr"},{"type":"uint256","name":"_sireId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setCFO","constant":false,"payable":false,"inputs":[{"type":"address","name":"_newCFO"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createPromoKitty","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"_genes"},{"type":"address","name":"_owner"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSecondsPerBlock","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"secs"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"bool"}]},{"type":"function","name":"withdrawBalance","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ownerOf","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"_tokenId"}],"outputs":[{"type":"address","name":"owner"}]},{"type":"function","name":"GEN0_CREATION_LIMIT","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"newContractAddress","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"setSaleAuctionAddress","constant":false,"payable":false,"inputs":[{"type":"address","name":"_address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"_owner"}],"outputs":[{"type":"uint256","name":"count"}]},{"type":"function","name":"setNewAddress","constant":false,"payable":false,"inputs":[{"type":"address","name":"_v2Address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"secondsPerBlock","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"pause","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tokensOfOwner","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"_owner"}],"outputs":[{"type":"uint256[]","name":"ownerTokens"}]},{"type":"function","name":"giveBirth","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"_matronId"}],"outputs":[{"type":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawAuctionBalances","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"cooldowns","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"uint32"}]},{"type":"function","name":"kittyIndexToOwner","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"address"}]},{"type":"function","name":"transfer","constant":false,"payable":false,"inputs":[{"type":"address","name":"_to"},{"type":"uint256","name":"_tokenId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cooAddress","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"autoBirthFee","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"erc721Metadata","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"createGen0Auction","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"_genes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isReadyToBreed","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"_kittyId"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"PROMO_CREATION_LIMIT","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"setMetadataAddress","constant":false,"payable":false,"inputs":[{"type":"address","name":"_contractAddress"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"saleAuction","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"getKitty","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"_id"}],"outputs":[{"type":"bool","name":"isGestating"},{"type":"bool","name":"isReady"},{"type":"uint256","name":"cooldownIndex"},{"type":"uint256","name":"nextActionAt"},{"type":"uint256","name":"siringWithId"},{"type":"uint256","name":"birthTime"},{"type":"uint256","name":"matronId"},{"type":"uint256","name":"sireId"},{"type":"uint256","name":"generation"},{"type":"uint256","name":"genes"}]},{"type":"function","name":"bidOnSiringAuction","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"_sireId"},{"type":"uint256","name":"_matronId"}],"outputs":[]},{"type":"function","name":"gen0CreatedCount","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"geneScience","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"breedWithAuto","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"_matronId"},{"type":"uint256","name":"_sireId"}],"outputs":[]},{"type":"constructor","payable":false,"inputs":[],"stateMutability":"nonpayable"},{"type":"event","anonymous":false,"name":"Pregnant","inputs":[{"type":"address","name":"owner"},{"type":"uint256","name":"matronId"},{"type":"uint256","name":"sireId"},{"type":"uint256","name":"cooldownEndBlock"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Transfer","inputs":[{"type":"address","name":"from"},{"type":"address","name":"to"},{"type":"uint256","name":"tokenId"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Approval","inputs":[{"type":"address","name":"owner"},{"type":"address","name":"approved"},{"type":"uint256","name":"tokenId"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Birth","inputs":[{"type":"address","name":"owner"},{"type":"uint256","name":"kittyId"},{"type":"uint256","name":"matronId"},{"type":"uint256","name":"sireId"},{"type":"uint256","name":"genes"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"ContractUpgrade","inputs":[{"type":"address","name":"newContract"}],"stateMutability":"view"}] as const + +export const NFTXENSMerkleEligibility = [{"type":"constructor","payable":false,"inputs":[{"type":"uint256","name":"_minExpirationTime"}],"stateMutability":"nonpayable"},{"type":"event","anonymous":false,"name":"NFTXEligibilityInit","inputs":[{"type":"bytes32","name":"merkleRoot"},{"type":"string","name":"_merkleReference"},{"type":"string","name":"_merkleLeavesURI"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"PrecursoryCheckComplete","inputs":[{"type":"uint256","name":"tokenId"},{"type":"bytes32","name":"requestId"},{"type":"bool","name":"isValid"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"PrecursoryCheckStarted","inputs":[{"type":"uint256","name":"tokenId"},{"type":"bytes32","name":"requestId"}],"stateMutability":"view"},{"type":"function","name":"__NFTXEligibility_init","constant":false,"payable":false,"inputs":[{"type":"bytes32","name":"_merkleRoot"},{"type":"string","name":"_merkleReference"},{"type":"string","name":"_merkleLeavesURI"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"__NFTXEligibility_init_bytes","constant":false,"payable":false,"inputs":[{"type":"bytes","name":"configData"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"afterMintHook","constant":false,"payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"afterRedeemHook","constant":false,"payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"beforeMintHook","constant":false,"payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"beforeRedeemHook","constant":false,"payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkAllEligible","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"checkAllIneligible","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"checkEligible","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[{"type":"bool[]"}]},{"type":"function","name":"checkIsEligible","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"tokenId"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"finalized","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"bool"}]},{"type":"function","name":"merkleLeavesURI","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"merkleReference","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"merkleRoot","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"bytes32"}]},{"type":"function","name":"name","constant":true,"stateMutability":"pure","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"processToken","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"tokenId"},{"type":"bytes32[]","name":"merkleProof"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"processTokens","constant":false,"payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"},{"type":"bytes32[][]","name":"merkleProofs"}],"outputs":[{"type":"bool[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"requiresProcessing","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"tokenId"},{"type":"bytes32[]","name":"merkleProof"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"targetAsset","constant":true,"stateMutability":"pure","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"validTokenHashes","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes32"}],"outputs":[{"type":"bool"}]}] as const + +export const NFTXEligibility = [{"type":"function","name":"__NFTXEligibility_init_bytes","constant":false,"payable":false,"inputs":[{"type":"bytes","name":"initData"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"afterMintHook","constant":false,"payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"afterRedeemHook","constant":false,"payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"beforeMintHook","constant":false,"payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"beforeRedeemHook","constant":false,"payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkAllEligible","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"checkAllIneligible","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"checkEligible","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[{"type":"bool[]"}]},{"type":"function","name":"checkIsEligible","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"tokenId"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"finalized","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"bool"}]},{"type":"function","name":"name","constant":true,"stateMutability":"pure","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"targetAsset","constant":true,"stateMutability":"pure","payable":false,"inputs":[],"outputs":[{"type":"address"}]}] as const + +export const NFTXEligibilityManager = [{"type":"function","name":"__NFTXEligibility_init_bytes","constant":false,"payable":false,"inputs":[{"type":"bytes","name":"initData"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"afterMintHook","constant":false,"payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"afterRedeemHook","constant":false,"payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"beforeMintHook","constant":false,"payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"beforeRedeemHook","constant":false,"payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkAllEligible","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"checkAllIneligible","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"checkEligible","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[{"type":"bool[]"}]},{"type":"function","name":"checkIsEligible","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"tokenId"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"finalized","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"bool"}]},{"type":"function","name":"name","constant":true,"stateMutability":"pure","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"targetAsset","constant":true,"stateMutability":"pure","payable":false,"inputs":[],"outputs":[{"type":"address"}]}] as const + +export const NFTXInventoryStaking = [{"type":"event","anonymous":false,"name":"Deposit","inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256","name":"baseTokenAmount"},{"type":"uint256","name":"xTokenAmount"},{"type":"uint256","name":"timelockUntil"},{"type":"address","name":"sender"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":true},{"type":"address","name":"newOwner","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"SetIsGuardian","inputs":[{"type":"address","name":"addr"},{"type":"bool","name":"isGuardian"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"SetPaused","inputs":[{"type":"uint256","name":"lockId"},{"type":"bool","name":"paused"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Upgraded","inputs":[{"type":"address","name":"childImplementation","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Withdraw","inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256","name":"baseTokenAmount"},{"type":"uint256","name":"xTokenAmount"},{"type":"address","name":"sender"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"XTokenCreated","inputs":[{"type":"uint256","name":"vaultId"},{"type":"address","name":"baseToken"},{"type":"address","name":"xToken"}],"stateMutability":"view"},{"type":"function","name":"__NFTXInventoryStaking_init","constant":false,"payable":false,"inputs":[{"type":"address","name":"_nftxVaultFactory"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"__UpgradeableBeacon__init","constant":false,"payable":false,"inputs":[{"type":"address","name":"childImplementation_"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"address","name":"who"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"childImplementation","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"deployXTokenForVault","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deposit","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256","name":"_amount"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isGuardian","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"isPaused","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"nftxVaultFactory","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"onlyOwnerIfPaused","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"lockId"}],"outputs":[]},{"type":"function","name":"owner","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"pause","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"lockId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"receiveRewards","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256","name":"amount"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setIsGuardian","constant":false,"payable":false,"inputs":[{"type":"address","name":"addr"},{"type":"bool","name":"_isGuardian"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"timelockMintFor","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256","name":"amount"},{"type":"address","name":"to"},{"type":"uint256","name":"timelockLength"}],"outputs":[{"type":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"timelockUntil","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"address","name":"who"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"transferOwnership","constant":false,"payable":false,"inputs":[{"type":"address","name":"newOwner"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"lockId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeChildTo","constant":false,"payable":false,"inputs":[{"type":"address","name":"newChildImplementation"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vaultXToken","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"vaultId"}],"outputs":[{"type":"address"}]},{"type":"function","name":"withdraw","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256","name":"_share"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"xTokenAddr","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"baseToken"}],"outputs":[{"type":"address"}]},{"type":"function","name":"xTokenShareValue","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"vaultId"}],"outputs":[{"type":"uint256"}]}] as const + +export const NFTXLpStaking = [{"type":"event","anonymous":false,"name":"FeesReceived","inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256","name":"amount"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":true},{"type":"address","name":"newOwner","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"PoolCreated","inputs":[{"type":"uint256","name":"vaultId"},{"type":"address","name":"pool"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"PoolUpdated","inputs":[{"type":"uint256","name":"vaultId"},{"type":"address","name":"pool"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"SetIsGuardian","inputs":[{"type":"address","name":"addr"},{"type":"bool","name":"isGuardian"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"SetPaused","inputs":[{"type":"uint256","name":"lockId"},{"type":"bool","name":"paused"}],"stateMutability":"view"},{"type":"function","name":"__NFTXLPStaking__init","constant":false,"payable":false,"inputs":[{"type":"address","name":"_stakingTokenProvider"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"_oldRewardDistributionTokenAddr","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"tuple","name":"pool","components":[{"type":"address","name":"stakingToken"},{"type":"address","name":"rewardToken"}]}],"outputs":[{"type":"address"}]},{"type":"function","name":"_rewardDistributionTokenAddr","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"tuple","name":"pool","components":[{"type":"address","name":"stakingToken"},{"type":"address","name":"rewardToken"}]}],"outputs":[{"type":"address"}]},{"type":"function","name":"_unusedRewardDistributionTokenAddr","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"tuple","name":"pool","components":[{"type":"address","name":"stakingToken"},{"type":"address","name":"rewardToken"}]}],"outputs":[{"type":"address"}]},{"type":"function","name":"addPoolForVault","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"assignNewImpl","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"address","name":"addr"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"claimMultipleRewards","constant":false,"payable":false,"inputs":[{"type":"uint256[]","name":"vaultIds"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deposit","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256","name":"amount"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"emergencyExit","constant":false,"payable":false,"inputs":[{"type":"address","name":"_stakingToken"},{"type":"address","name":"_rewardToken"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"emergencyExitAndClaim","constant":false,"payable":false,"inputs":[{"type":"address","name":"_stakingToken"},{"type":"address","name":"_rewardToken"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"emergencyMigrate","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"exit","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isGuardian","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"isPaused","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"lockedLPBalance","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"address","name":"who"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"lockedUntil","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"address","name":"who"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"newRewardDistributionToken","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"vaultId"}],"outputs":[{"type":"address"}]},{"type":"function","name":"newTimelockRewardDistTokenImpl","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"nftxVaultFactory","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"oldBalanceOf","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"address","name":"addr"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"oldRewardDistributionToken","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"vaultId"}],"outputs":[{"type":"address"}]},{"type":"function","name":"onlyOwnerIfPaused","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"lockId"}],"outputs":[]},{"type":"function","name":"owner","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"pause","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"lockId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"receiveRewards","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256","name":"amount"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardDistTokenImpl","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"rewardDistributionToken","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"vaultId"}],"outputs":[{"type":"address"}]},{"type":"function","name":"rewardDistributionTokenAddr","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"stakingToken"},{"type":"address","name":"rewardToken"}],"outputs":[{"type":"address"}]},{"type":"function","name":"setIsGuardian","constant":false,"payable":false,"inputs":[{"type":"address","name":"addr"},{"type":"bool","name":"_isGuardian"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNFTXVaultFactory","constant":false,"payable":false,"inputs":[{"type":"address","name":"newFactory"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingTokenProvider","constant":false,"payable":false,"inputs":[{"type":"address","name":"newProvider"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stakingTokenProvider","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"timelockDepositFor","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"address","name":"account"},{"type":"uint256","name":"amount"},{"type":"uint256","name":"timelockLength"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","constant":false,"payable":false,"inputs":[{"type":"address","name":"newOwner"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"lockId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unusedBalanceOf","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"address","name":"addr"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"unusedRewardDistributionToken","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"vaultId"}],"outputs":[{"type":"address"}]},{"type":"function","name":"updatePoolForVault","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updatePoolForVaults","constant":false,"payable":false,"inputs":[{"type":"uint256[]","name":"vaultIds"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vaultStakingInfo","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"address","name":"stakingToken"},{"type":"address","name":"rewardToken"}]},{"type":"function","name":"withdraw","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256","name":"amount"}],"outputs":[],"stateMutability":"nonpayable"}] as const + +export const NFTXMarketplace0xZap = [{"type":"constructor","payable":false,"inputs":[{"type":"address","name":"_nftxFactory"},{"type":"address","name":"_WETH"},{"type":"address","name":"_swapTarget"}],"stateMutability":"nonpayable"},{"type":"event","anonymous":false,"name":"Buy","inputs":[{"type":"uint256","name":"count"},{"type":"uint256","name":"ethSpent"},{"type":"address","name":"to"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"DustReturned","inputs":[{"type":"uint256","name":"ethAmount"},{"type":"uint256","name":"vTokenAmount"},{"type":"address","name":"to"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":true},{"type":"address","name":"newOwner","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Sell","inputs":[{"type":"uint256","name":"count"},{"type":"uint256","name":"ethReceived"},{"type":"address","name":"to"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Swap","inputs":[{"type":"uint256","name":"count"},{"type":"uint256","name":"ethSpent"},{"type":"address","name":"to"}],"stateMutability":"view"},{"type":"function","name":"WETH","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"buyAndRedeem","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256","name":"amount"},{"type":"uint256[]","name":"specificIds"},{"type":"bytes","name":"swapCallData"},{"type":"address","name":"to"}],"outputs":[]},{"type":"function","name":"buyAndSwap1155","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"idsIn"},{"type":"uint256[]","name":"amounts"},{"type":"uint256[]","name":"specificIds"},{"type":"bytes","name":"swapCallData"},{"type":"address","name":"to"}],"outputs":[]},{"type":"function","name":"buyAndSwap721","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"idsIn"},{"type":"uint256[]","name":"specificIds"},{"type":"bytes","name":"swapCallData"},{"type":"address","name":"to"}],"outputs":[]},{"type":"function","name":"mintAndSell1155","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"ids"},{"type":"uint256[]","name":"amounts"},{"type":"bytes","name":"swapCallData"},{"type":"address","name":"to"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintAndSell721","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"ids"},{"type":"bytes","name":"swapCallData"},{"type":"address","name":"to"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"nftxFactory","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"nftxVaultAddresses","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"address"}]},{"type":"function","name":"onERC1155BatchReceived","constant":false,"payable":false,"inputs":[{"type":"address"},{"type":"address"},{"type":"uint256[]"},{"type":"uint256[]"},{"type":"bytes"}],"outputs":[{"type":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"onERC1155Received","constant":false,"payable":false,"inputs":[{"type":"address"},{"type":"address"},{"type":"uint256"},{"type":"uint256"},{"type":"bytes"}],"outputs":[{"type":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"onERC721Received","constant":false,"payable":false,"inputs":[{"type":"address"},{"type":"address"},{"type":"uint256"},{"type":"bytes"}],"outputs":[{"type":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"pause","constant":false,"payable":false,"inputs":[{"type":"bool","name":"_paused"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"bool"}]},{"type":"function","name":"renounceOwnership","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rescue","constant":false,"payable":false,"inputs":[{"type":"address","name":"token"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes4","name":"interfaceId"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"transferOwnership","constant":false,"payable":false,"inputs":[{"type":"address","name":"newOwner"}],"outputs":[],"stateMutability":"nonpayable"}] as const + +export const NFTXMarketplaceZap = [{"type":"constructor","payable":false,"inputs":[{"type":"address","name":"_nftxFactory"},{"type":"address","name":"_sushiRouter"}],"stateMutability":"nonpayable"},{"type":"event","anonymous":false,"name":"Buy","inputs":[{"type":"uint256","name":"count"},{"type":"uint256","name":"ethSpent"},{"type":"address","name":"to"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":true},{"type":"address","name":"newOwner","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Sell","inputs":[{"type":"uint256","name":"count"},{"type":"uint256","name":"ethReceived"},{"type":"address","name":"to"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Swap","inputs":[{"type":"uint256","name":"count"},{"type":"uint256","name":"ethSpent"},{"type":"address","name":"to"}],"stateMutability":"view"},{"type":"function","name":"WETH","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"buyAndRedeem","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256","name":"amount"},{"type":"uint256[]","name":"specificIds"},{"type":"address[]","name":"path"},{"type":"address","name":"to"}],"outputs":[]},{"type":"function","name":"buyAndRedeemWETH","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256","name":"amount"},{"type":"uint256[]","name":"specificIds"},{"type":"uint256","name":"maxWethIn"},{"type":"address[]","name":"path"},{"type":"address","name":"to"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"buyAndSwap1155","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"idsIn"},{"type":"uint256[]","name":"amounts"},{"type":"uint256[]","name":"specificIds"},{"type":"address[]","name":"path"},{"type":"address","name":"to"}],"outputs":[]},{"type":"function","name":"buyAndSwap1155WETH","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"idsIn"},{"type":"uint256[]","name":"amounts"},{"type":"uint256[]","name":"specificIds"},{"type":"uint256","name":"maxWethIn"},{"type":"address[]","name":"path"},{"type":"address","name":"to"}],"outputs":[]},{"type":"function","name":"buyAndSwap721","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"idsIn"},{"type":"uint256[]","name":"specificIds"},{"type":"address[]","name":"path"},{"type":"address","name":"to"}],"outputs":[]},{"type":"function","name":"buyAndSwap721WETH","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"idsIn"},{"type":"uint256[]","name":"specificIds"},{"type":"uint256","name":"maxWethIn"},{"type":"address[]","name":"path"},{"type":"address","name":"to"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lpStaking","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"mintAndSell1155","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"ids"},{"type":"uint256[]","name":"amounts"},{"type":"uint256","name":"minWethOut"},{"type":"address[]","name":"path"},{"type":"address","name":"to"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintAndSell1155WETH","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"ids"},{"type":"uint256[]","name":"amounts"},{"type":"uint256","name":"minWethOut"},{"type":"address[]","name":"path"},{"type":"address","name":"to"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintAndSell721","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"ids"},{"type":"uint256","name":"minEthOut"},{"type":"address[]","name":"path"},{"type":"address","name":"to"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintAndSell721WETH","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"ids"},{"type":"uint256","name":"minWethOut"},{"type":"address[]","name":"path"},{"type":"address","name":"to"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"nftxFactory","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"onERC1155BatchReceived","constant":false,"payable":false,"inputs":[{"type":"address"},{"type":"address"},{"type":"uint256[]"},{"type":"uint256[]"},{"type":"bytes"}],"outputs":[{"type":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"onERC1155Received","constant":false,"payable":false,"inputs":[{"type":"address"},{"type":"address"},{"type":"uint256"},{"type":"uint256"},{"type":"bytes"}],"outputs":[{"type":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"onERC721Received","constant":false,"payable":false,"inputs":[{"type":"address"},{"type":"address"},{"type":"uint256"},{"type":"bytes"}],"outputs":[{"type":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"renounceOwnership","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rescue","constant":false,"payable":false,"inputs":[{"type":"address","name":"token"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes4","name":"interfaceId"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"sushiRouter","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"transferOwnership","constant":false,"payable":false,"inputs":[{"type":"address","name":"newOwner"}],"outputs":[],"stateMutability":"nonpayable"}] as const + +export const NFTXRewardDistributionTokenUpgradeable = [{"type":"event","anonymous":false,"name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"spender","indexed":true},{"type":"uint256","name":"value"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":true},{"type":"address","name":"newOwner","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"RewardWithdrawn","inputs":[{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"weiAmount"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"RewardsDistributed","inputs":[{"type":"address","name":"from","indexed":true},{"type":"uint256","name":"weiAmount"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Timelocked","inputs":[{"type":"address","name":"user"},{"type":"uint256","name":"amount"},{"type":"uint256","name":"until"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Transfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"value"}],"stateMutability":"view"},{"type":"function","name":"__TimelockRewardDistributionToken_init","constant":false,"payable":false,"inputs":[{"type":"address","name":"_target"},{"type":"string","name":"_name"},{"type":"string","name":"_symbol"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"accumulativeRewardOf","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"_owner"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"allowance","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"owner"},{"type":"address","name":"spender"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"approve","constant":false,"payable":false,"inputs":[{"type":"address","name":"spender"},{"type":"uint256","name":"amount"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"account"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"burnFrom","constant":false,"payable":false,"inputs":[{"type":"address","name":"account"},{"type":"uint256","name":"amount"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint8"}]},{"type":"function","name":"decreaseAllowance","constant":false,"payable":false,"inputs":[{"type":"address","name":"spender"},{"type":"uint256","name":"subtractedValue"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"distributeRewards","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"amount"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"dividendOf","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"_owner"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"increaseAllowance","constant":false,"payable":false,"inputs":[{"type":"address","name":"spender"},{"type":"uint256","name":"addedValue"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"mint","constant":false,"payable":false,"inputs":[{"type":"address","name":"account"},{"type":"uint256","name":"amount"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"owner","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"renounceOwnership","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"target","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"timelockMint","constant":false,"payable":false,"inputs":[{"type":"address","name":"account"},{"type":"uint256","name":"amount"},{"type":"uint256","name":"timelockLength"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"timelockUntil","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"account"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"totalSupply","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"transfer","constant":false,"payable":false,"inputs":[{"type":"address","name":"recipient"},{"type":"uint256","name":"amount"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","constant":false,"payable":false,"inputs":[{"type":"address","name":"sender"},{"type":"address","name":"recipient"},{"type":"uint256","name":"amount"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","constant":false,"payable":false,"inputs":[{"type":"address","name":"newOwner"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawReward","constant":false,"payable":false,"inputs":[{"type":"address","name":"user"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawnRewardOf","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"_owner"}],"outputs":[{"type":"uint256"}]}] as const + +export const NFTXStakingZap = [{"type":"constructor","payable":false,"inputs":[{"type":"address","name":"_nftxFactory"},{"type":"address","name":"_sushiRouter"}],"stateMutability":"nonpayable"},{"type":"event","anonymous":false,"name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":true},{"type":"address","name":"newOwner","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"UserStaked","inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256","name":"count"},{"type":"uint256","name":"lpBalance"},{"type":"uint256","name":"timelockUntil"},{"type":"address","name":"sender"}],"stateMutability":"view"},{"type":"function","name":"WETH","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"addLiquidity1155","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"ids"},{"type":"uint256[]","name":"amounts"},{"type":"uint256","name":"minWethIn"},{"type":"uint256","name":"wethIn"}],"outputs":[{"type":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"addLiquidity1155ETH","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"ids"},{"type":"uint256[]","name":"amounts"},{"type":"uint256","name":"minEthIn"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"addLiquidity1155ETHTo","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"ids"},{"type":"uint256[]","name":"amounts"},{"type":"uint256","name":"minEthIn"},{"type":"address","name":"to"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"addLiquidity1155To","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"ids"},{"type":"uint256[]","name":"amounts"},{"type":"uint256","name":"minWethIn"},{"type":"uint256","name":"wethIn"},{"type":"address","name":"to"}],"outputs":[{"type":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"addLiquidity721","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"ids"},{"type":"uint256","name":"minWethIn"},{"type":"uint256","name":"wethIn"}],"outputs":[{"type":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"addLiquidity721ETH","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"ids"},{"type":"uint256","name":"minWethIn"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"addLiquidity721ETHTo","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"ids"},{"type":"uint256","name":"minWethIn"},{"type":"address","name":"to"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"addLiquidity721To","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"ids"},{"type":"uint256","name":"minWethIn"},{"type":"uint256","name":"wethIn"},{"type":"address","name":"to"}],"outputs":[{"type":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"inventoryLockTime","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"inventoryStaking","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"lpLockTime","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"lpStaking","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"nftxFactory","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"onERC1155BatchReceived","constant":false,"payable":false,"inputs":[{"type":"address"},{"type":"address"},{"type":"uint256[]"},{"type":"uint256[]"},{"type":"bytes"}],"outputs":[{"type":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"onERC1155Received","constant":false,"payable":false,"inputs":[{"type":"address"},{"type":"address"},{"type":"uint256"},{"type":"uint256"},{"type":"bytes"}],"outputs":[{"type":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"onERC721Received","constant":false,"payable":false,"inputs":[{"type":"address"},{"type":"address"},{"type":"uint256"},{"type":"bytes"}],"outputs":[{"type":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"provideInventory1155","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"tokenIds"},{"type":"uint256[]","name":"amounts"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"provideInventory721","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"tokenIds"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rescue","constant":false,"payable":false,"inputs":[{"type":"address","name":"token"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setInventoryLockTime","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"newInventoryLockTime"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLPLockTime","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"newLPLockTime"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes4","name":"interfaceId"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"sushiRouter","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"transferOwnership","constant":false,"payable":false,"inputs":[{"type":"address","name":"newOwner"}],"outputs":[],"stateMutability":"nonpayable"}] as const + +export const NFTXStakingZapDeprecated = [{"type":"constructor","payable":false,"inputs":[{"type":"address","name":"_nftxFactory"},{"type":"address","name":"_sushiRouter"}],"stateMutability":"nonpayable"},{"type":"event","anonymous":false,"name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":true},{"type":"address","name":"newOwner","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"UserStaked","inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256","name":"count"},{"type":"uint256","name":"lpBalance"},{"type":"uint256","name":"timelockUntil"},{"type":"address","name":"sender"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Withdraw","inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256","name":"lpBalance"},{"type":"address","name":"sender"}],"stateMutability":"view"},{"type":"function","name":"WETH","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"addLiquidity1155","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"ids"},{"type":"uint256[]","name":"amounts"},{"type":"uint256","name":"minWethIn"},{"type":"uint256","name":"wethIn"}],"outputs":[{"type":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"addLiquidity1155ETH","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"ids"},{"type":"uint256[]","name":"amounts"},{"type":"uint256","name":"minEthIn"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"addLiquidity721","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"ids"},{"type":"uint256","name":"minWethIn"},{"type":"uint256","name":"wethIn"}],"outputs":[{"type":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"addLiquidity721ETH","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"ids"},{"type":"uint256","name":"minWethIn"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"lockTime","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"lockedLPBalance","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"address","name":"who"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"lockedUntil","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"address","name":"who"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"lpStaking","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"nftxFactory","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"onERC1155BatchReceived","constant":false,"payable":false,"inputs":[{"type":"address"},{"type":"address"},{"type":"uint256[]"},{"type":"uint256[]"},{"type":"bytes"}],"outputs":[{"type":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"onERC1155Received","constant":false,"payable":false,"inputs":[{"type":"address"},{"type":"address"},{"type":"uint256"},{"type":"uint256"},{"type":"bytes"}],"outputs":[{"type":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"onERC721Received","constant":false,"payable":false,"inputs":[{"type":"address"},{"type":"address"},{"type":"uint256"},{"type":"bytes"}],"outputs":[{"type":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"renounceOwnership","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLockTime","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"newLockTime"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLpStakingAddress","constant":false,"payable":false,"inputs":[{"type":"address","name":"newLpStaking"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes4","name":"interfaceId"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"sushiRouter","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"transferOwnership","constant":false,"payable":false,"inputs":[{"type":"address","name":"newOwner"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawXLPTokens","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"}],"outputs":[],"stateMutability":"nonpayable"}] as const + +export const NFTXUnstakingInventoryZap = [{"type":"event","anonymous":false,"name":"InventoryUnstaked","inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256","name":"xTokensUnstaked"},{"type":"uint256","name":"numNftsRedeemed"},{"type":"address","name":"unstaker"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":true},{"type":"address","name":"newOwner","indexed":true}],"stateMutability":"view"},{"type":"function","name":"inventoryStaking","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"maxNftsUsingXToken","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"address","name":"staker"},{"type":"address","name":"slpToken"}],"outputs":[{"type":"uint256","name":"numNfts"},{"type":"bool","name":"shortByTinyAmount"}]},{"type":"function","name":"owner","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"renounceOwnership","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rescue","constant":false,"payable":false,"inputs":[{"type":"address","name":"token"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setInventoryStaking","constant":false,"payable":false,"inputs":[{"type":"address","name":"addr"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSushiRouterAndWeth","constant":false,"payable":false,"inputs":[{"type":"address","name":"sushiRouterAddr"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setVaultFactory","constant":false,"payable":false,"inputs":[{"type":"address","name":"addr"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sushiRouter","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"transferOwnership","constant":false,"payable":false,"inputs":[{"type":"address","name":"newOwner"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unstakeInventory","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256","name":"numNfts"},{"type":"uint256","name":"remainingPortionToUnstake"}],"outputs":[]},{"type":"function","name":"vaultFactory","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"weth","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]}] as const + +export const NFTXV12 = [{"type":"event","anonymous":false,"name":"Mint","inputs":[{"type":"uint256","name":"vaultId","indexed":true},{"type":"uint256[]","name":"nftIds"},{"type":"uint256","name":"d2Amount"},{"type":"address","name":"sender"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"MintRequested","inputs":[{"type":"uint256","name":"vaultId","indexed":true},{"type":"uint256[]","name":"nftIds"},{"type":"address","name":"sender"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"NewVault","inputs":[{"type":"uint256","name":"vaultId","indexed":true},{"type":"address","name":"sender"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":true},{"type":"address","name":"newOwner","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Redeem","inputs":[{"type":"uint256","name":"vaultId","indexed":true},{"type":"uint256[]","name":"nftIds"},{"type":"uint256","name":"d2Amount"},{"type":"address","name":"sender"}],"stateMutability":"view"},{"type":"function","name":"approveMintRequest","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"nftIds"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeVault","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createVault","constant":false,"payable":false,"inputs":[{"type":"string","name":"name"},{"type":"string","name":"symbol"},{"type":"address","name":"_assetAddress"},{"type":"bool","name":"_isD2Vault"}],"outputs":[{"type":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"finalizeVault","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceMigrationComplete","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"v1VaultId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","constant":false,"payable":false,"inputs":[{"type":"address","name":"storeAddress"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isEligible","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256","name":"nftId"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"isFullyMigrated","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"isVault1155","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"migrateV1Tokens","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"v1VaultId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"migrateVaultToV2","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"v1VaultId"},{"type":"uint256","name":"v2VaultId"},{"type":"uint256","name":"count"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"migrationPair","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"address"}]},{"type":"function","name":"mint","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"nftIds"},{"type":"uint256","name":"d2Amount"}],"outputs":[]},{"type":"function","name":"onERC1155BatchReceived","constant":false,"payable":false,"inputs":[{"type":"address"},{"type":"address"},{"type":"uint256[]"},{"type":"uint256[]"},{"type":"bytes"}],"outputs":[{"type":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"onERC1155Received","constant":false,"payable":false,"inputs":[{"type":"address"},{"type":"address"},{"type":"uint256"},{"type":"uint256"},{"type":"bytes"}],"outputs":[{"type":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"onERC721Received","constant":false,"payable":false,"inputs":[{"type":"address"},{"type":"address"},{"type":"uint256"},{"type":"bytes"}],"outputs":[{"type":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"onlyOwnerIfPaused","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"pauserId"}],"outputs":[]},{"type":"function","name":"owner","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"rangeEnd","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"rangeStart","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"redeem","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256","name":"amount"}],"outputs":[]},{"type":"function","name":"renounceOwnership","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeMintRequests","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"nftIds"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFlipEligOnRedeem","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"bool","name":"flipElig"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setIs1155","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"bool","name":"_boolean"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setIsEligible","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"uint256[]","name":"nftIds"},{"type":"bool","name":"_boolean"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setManager","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"address","name":"newManager"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNegateEligibility","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"vaultId"},{"type":"bool","name":"shouldNegate"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPaused","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"pauserId"},{"type":"bool","name":"_isPaused"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"store","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"supportsInterface","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes4","name":"interfaceId"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"targetRedeem","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"v1VaultId"},{"type":"uint256[]","name":"specificIds"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetWithdraw","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"v1VaultId"},{"type":"uint256[]","name":"specificIds"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","constant":false,"payable":false,"inputs":[{"type":"address","name":"newOwner"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vaultSize","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"vaultId"}],"outputs":[{"type":"uint256"}]}] as const + +export const NFTXVaultFactory = [{"type":"event","anonymous":false,"name":"NewEligibilityManager","inputs":[{"type":"address","name":"oldEligManager"},{"type":"address","name":"newEligManager"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"NewFeeDistributor","inputs":[{"type":"address","name":"oldDistributor"},{"type":"address","name":"newDistributor"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"NewVault","inputs":[{"type":"uint256","name":"vaultId","indexed":true},{"type":"address","name":"vaultAddress"},{"type":"address","name":"assetAddress"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"NewZapContract","inputs":[{"type":"address","name":"oldZap"},{"type":"address","name":"newZap"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":true},{"type":"address","name":"newOwner","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"SetIsGuardian","inputs":[{"type":"address","name":"addr"},{"type":"bool","name":"isGuardian"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"SetPaused","inputs":[{"type":"uint256","name":"lockId"},{"type":"bool","name":"paused"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Upgraded","inputs":[{"type":"address","name":"childImplementation","indexed":true}],"stateMutability":"view"},{"type":"function","name":"__NFTXVaultFactory_init","constant":false,"payable":false,"inputs":[{"type":"address","name":"_vaultImpl"},{"type":"address","name":"_feeDistributor"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"__UpgradeableBeacon__init","constant":false,"payable":false,"inputs":[{"type":"address","name":"childImplementation_"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"allVaults","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"address"}]},{"type":"function","name":"childImplementation","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"createVault","constant":false,"payable":false,"inputs":[{"type":"string","name":"name"},{"type":"string","name":"symbol"},{"type":"address","name":"_assetAddress"},{"type":"bool","name":"is1155"},{"type":"bool","name":"allowAllItems"}],"outputs":[{"type":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"eligibilityManager","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"feeDistributor","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"isGuardian","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"isLocked","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"lockId"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"isPaused","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"numVaults","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"onlyOwnerIfPaused","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"lockId"}],"outputs":[]},{"type":"function","name":"owner","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"pause","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"lockId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setEligibilityManager","constant":false,"payable":false,"inputs":[{"type":"address","name":"_eligibilityManager"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFeeDistributor","constant":false,"payable":false,"inputs":[{"type":"address","name":"_feeDistributor"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setIsGuardian","constant":false,"payable":false,"inputs":[{"type":"address","name":"addr"},{"type":"bool","name":"_isGuardian"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setZapContract","constant":false,"payable":false,"inputs":[{"type":"address","name":"_zapContract"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","constant":false,"payable":false,"inputs":[{"type":"address","name":"newOwner"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"lockId"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeChildTo","constant":false,"payable":false,"inputs":[{"type":"address","name":"newChildImplementation"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vault","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"address"}]},{"type":"function","name":"vaultsForAsset","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"asset"}],"outputs":[{"type":"address[]"}]},{"type":"function","name":"zapContract","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]}] as const + +export const NFTXVaultUpgradeable = [{"type":"event","anonymous":false,"name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"spender","indexed":true},{"type":"uint256","name":"value"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"EligibilityDeployed","inputs":[{"type":"uint256","name":"moduleIndex"},{"type":"address","name":"eligibilityAddr"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"EnableMintUpdated","inputs":[{"type":"bool","name":"enabled"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"EnableRandomRedeemUpdated","inputs":[{"type":"bool","name":"enabled"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"EnableRandomSwapUpdated","inputs":[{"type":"bool","name":"enabled"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"EnableTargetRedeemUpdated","inputs":[{"type":"bool","name":"enabled"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"EnableTargetSwapUpdated","inputs":[{"type":"bool","name":"enabled"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"ManagerSet","inputs":[{"type":"address","name":"manager"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Minted","inputs":[{"type":"uint256[]","name":"nftIds"},{"type":"uint256[]","name":"amounts"},{"type":"address","name":"to"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":true},{"type":"address","name":"newOwner","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Redeemed","inputs":[{"type":"uint256[]","name":"nftIds"},{"type":"uint256[]","name":"specificIds"},{"type":"address","name":"to"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Swapped","inputs":[{"type":"uint256[]","name":"nftIds"},{"type":"uint256[]","name":"amounts"},{"type":"uint256[]","name":"specificIds"},{"type":"uint256[]","name":"redeemedIds"},{"type":"address","name":"to"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Transfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"value"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"VaultInit","inputs":[{"type":"uint256","name":"vaultId","indexed":true},{"type":"address","name":"assetAddress"},{"type":"bool","name":"is1155"},{"type":"bool","name":"allowAllItems"}],"stateMutability":"view"},{"type":"function","name":"__NFTXVault_init","constant":false,"payable":false,"inputs":[{"type":"string","name":"_name"},{"type":"string","name":"_symbol"},{"type":"address","name":"_assetAddress"},{"type":"bool","name":"_is1155"},{"type":"bool","name":"_allowAllItems"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"allHoldings","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256[]"}]},{"type":"function","name":"allValidNFTs","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"allowAllItems","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"bool"}]},{"type":"function","name":"allowance","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"owner"},{"type":"address","name":"spender"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"approve","constant":false,"payable":false,"inputs":[{"type":"address","name":"spender"},{"type":"uint256","name":"amount"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"assetAddress","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"assignDefaultFeatures","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"account"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"decimals","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint8"}]},{"type":"function","name":"decreaseAllowance","constant":false,"payable":false,"inputs":[{"type":"address","name":"spender"},{"type":"uint256","name":"subtractedValue"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"deployEligibilityStorage","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"moduleIndex"},{"type":"bytes","name":"initData"}],"outputs":[{"type":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"disableVaultFees","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"eligibilityStorage","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"enableMint","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"bool"}]},{"type":"function","name":"enableRandomRedeem","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"bool"}]},{"type":"function","name":"enableRandomSwap","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"bool"}]},{"type":"function","name":"enableTargetRedeem","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"bool"}]},{"type":"function","name":"enableTargetSwap","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"bool"}]},{"type":"function","name":"finalizeVault","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"flashFee","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"token"},{"type":"uint256","name":"amount"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"flashLoan","constant":false,"payable":false,"inputs":[{"type":"address","name":"receiver"},{"type":"address","name":"token"},{"type":"uint256","name":"amount"},{"type":"bytes","name":"data"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"increaseAllowance","constant":false,"payable":false,"inputs":[{"type":"address","name":"spender"},{"type":"uint256","name":"addedValue"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"is1155","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"bool"}]},{"type":"function","name":"manager","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"maxFlashLoan","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"token"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"mint","constant":false,"payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"},{"type":"uint256[]","name":"amounts"}],"outputs":[{"type":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"mintFee","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"mintTo","constant":false,"payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"},{"type":"uint256[]","name":"amounts"},{"type":"address","name":"to"}],"outputs":[{"type":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"nftIdAt","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"holdingsIndex"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"onERC1155BatchReceived","constant":false,"payable":false,"inputs":[{"type":"address","name":"operator"},{"type":"address"},{"type":"uint256[]"},{"type":"uint256[]"},{"type":"bytes"}],"outputs":[{"type":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"onERC1155Received","constant":false,"payable":false,"inputs":[{"type":"address","name":"operator"},{"type":"address"},{"type":"uint256"},{"type":"uint256"},{"type":"bytes"}],"outputs":[{"type":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"onERC721Received","constant":false,"payable":false,"inputs":[{"type":"address","name":"operator"},{"type":"address"},{"type":"uint256"},{"type":"bytes"}],"outputs":[{"type":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"randomRedeemFee","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"randomSwapFee","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"redeem","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"amount"},{"type":"uint256[]","name":"specificIds"}],"outputs":[{"type":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"redeemTo","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"amount"},{"type":"uint256[]","name":"specificIds"},{"type":"address","name":"to"}],"outputs":[{"type":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFees","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"_mintFee"},{"type":"uint256","name":"_randomRedeemFee"},{"type":"uint256","name":"_targetRedeemFee"},{"type":"uint256","name":"_randomSwapFee"},{"type":"uint256","name":"_targetSwapFee"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setManager","constant":false,"payable":false,"inputs":[{"type":"address","name":"_manager"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setVaultFeatures","constant":false,"payable":false,"inputs":[{"type":"bool","name":"_enableMint"},{"type":"bool","name":"_enableRandomRedeem"},{"type":"bool","name":"_enableTargetRedeem"},{"type":"bool","name":"_enableRandomSwap"},{"type":"bool","name":"_enableTargetSwap"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setVaultMetadata","constant":false,"payable":false,"inputs":[{"type":"string","name":"name_"},{"type":"string","name":"symbol_"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes4","name":"interfaceId"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"swap","constant":false,"payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"},{"type":"uint256[]","name":"amounts"},{"type":"uint256[]","name":"specificIds"}],"outputs":[{"type":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapTo","constant":false,"payable":false,"inputs":[{"type":"uint256[]","name":"tokenIds"},{"type":"uint256[]","name":"amounts"},{"type":"uint256[]","name":"specificIds"},{"type":"address","name":"to"}],"outputs":[{"type":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"targetRedeemFee","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"targetSwapFee","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"totalHoldings","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"totalSupply","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"transfer","constant":false,"payable":false,"inputs":[{"type":"address","name":"recipient"},{"type":"uint256","name":"amount"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","constant":false,"payable":false,"inputs":[{"type":"address","name":"sender"},{"type":"address","name":"recipient"},{"type":"uint256","name":"amount"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","constant":false,"payable":false,"inputs":[{"type":"address","name":"newOwner"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vaultFactory","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"vaultFees","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"},{"type":"uint256"},{"type":"uint256"},{"type":"uint256"},{"type":"uint256"}]},{"type":"function","name":"vaultId","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"version","constant":true,"stateMutability":"pure","payable":false,"inputs":[],"outputs":[{"type":"string"}]}] as const + +export const UniswapQuoter = [{"type":"constructor","payable":false,"inputs":[{"type":"address","name":"_factory"},{"type":"address","name":"_WETH9"}],"stateMutability":"nonpayable"},{"type":"function","name":"WETH9","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"factory","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"quoteExactInput","constant":false,"payable":false,"inputs":[{"type":"bytes","name":"path"},{"type":"uint256","name":"amountIn"}],"outputs":[{"type":"uint256","name":"amountOut"}],"stateMutability":"nonpayable"},{"type":"function","name":"quoteExactInputSingle","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"tokenIn"},{"type":"address","name":"tokenOut"},{"type":"uint24","name":"fee"},{"type":"uint256","name":"amountIn"},{"type":"uint160","name":"sqrtPriceLimitX96"}],"outputs":[{"type":"uint256","name":"amountOut"}]},{"type":"function","name":"quoteExactOutput","constant":false,"payable":false,"inputs":[{"type":"bytes","name":"path"},{"type":"uint256","name":"amountOut"}],"outputs":[{"type":"uint256","name":"amountIn"}],"stateMutability":"nonpayable"},{"type":"function","name":"quoteExactOutputSingle","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address","name":"tokenIn"},{"type":"address","name":"tokenOut"},{"type":"uint24","name":"fee"},{"type":"uint256","name":"amountOut"},{"type":"uint160","name":"sqrtPriceLimitX96"}],"outputs":[{"type":"uint256","name":"amountIn"}]},{"type":"function","name":"uniswapV3SwapCallback","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"int256","name":"amount0Delta"},{"type":"int256","name":"amount1Delta"},{"type":"bytes","name":"path"}],"outputs":[]}] as const + +export const UniswapV2Factory = [{"type":"constructor","payable":false,"inputs":[{"type":"address","name":"_feeToSetter"}],"stateMutability":"nonpayable"},{"type":"event","anonymous":false,"name":"PairCreated","inputs":[{"type":"address","name":"token0","indexed":true},{"type":"address","name":"token1","indexed":true},{"type":"address","name":"pair"},{"type":"uint256"}],"stateMutability":"view"},{"type":"function","name":"allPairs","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256"}],"outputs":[{"type":"address"}]},{"type":"function","name":"allPairsLength","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"createPair","constant":false,"payable":false,"inputs":[{"type":"address","name":"tokenA"},{"type":"address","name":"tokenB"}],"outputs":[{"type":"address","name":"pair"}],"stateMutability":"nonpayable"},{"type":"function","name":"feeTo","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"feeToSetter","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"getPair","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address"},{"type":"address"}],"outputs":[{"type":"address"}]},{"type":"function","name":"migrator","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"pairCodeHash","constant":true,"stateMutability":"pure","payable":false,"inputs":[],"outputs":[{"type":"bytes32"}]},{"type":"function","name":"setFeeTo","constant":false,"payable":false,"inputs":[{"type":"address","name":"_feeTo"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFeeToSetter","constant":false,"payable":false,"inputs":[{"type":"address","name":"_feeToSetter"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMigrator","constant":false,"payable":false,"inputs":[{"type":"address","name":"_migrator"}],"outputs":[],"stateMutability":"nonpayable"}] as const + +export const UniswapV2Pair = [{"type":"constructor","payable":false,"inputs":[],"stateMutability":"nonpayable"},{"type":"event","anonymous":false,"name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"spender","indexed":true},{"type":"uint256","name":"value"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Burn","inputs":[{"type":"address","name":"sender","indexed":true},{"type":"uint256","name":"amount0"},{"type":"uint256","name":"amount1"},{"type":"address","name":"to","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Mint","inputs":[{"type":"address","name":"sender","indexed":true},{"type":"uint256","name":"amount0"},{"type":"uint256","name":"amount1"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Swap","inputs":[{"type":"address","name":"sender","indexed":true},{"type":"uint256","name":"amount0In"},{"type":"uint256","name":"amount1In"},{"type":"uint256","name":"amount0Out"},{"type":"uint256","name":"amount1Out"},{"type":"address","name":"to","indexed":true}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Sync","inputs":[{"type":"uint112","name":"reserve0"},{"type":"uint112","name":"reserve1"}],"stateMutability":"view"},{"type":"event","anonymous":false,"name":"Transfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"value"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_SEPARATOR","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"bytes32"}]},{"type":"function","name":"MINIMUM_LIQUIDITY","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"PERMIT_TYPEHASH","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"bytes32"}]},{"type":"function","name":"allowance","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address"},{"type":"address"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"approve","constant":false,"payable":false,"inputs":[{"type":"address","name":"spender"},{"type":"uint256","name":"value"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"burn","constant":false,"payable":false,"inputs":[{"type":"address","name":"to"}],"outputs":[{"type":"uint256","name":"amount0"},{"type":"uint256","name":"amount1"}],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint8"}]},{"type":"function","name":"factory","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"getReserves","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint112","name":"_reserve0"},{"type":"uint112","name":"_reserve1"},{"type":"uint32","name":"_blockTimestampLast"}]},{"type":"function","name":"initialize","constant":false,"payable":false,"inputs":[{"type":"address","name":"_token0"},{"type":"address","name":"_token1"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"kLast","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"mint","constant":false,"payable":false,"inputs":[{"type":"address","name":"to"}],"outputs":[{"type":"uint256","name":"liquidity"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"nonces","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"address"}],"outputs":[{"type":"uint256"}]},{"type":"function","name":"permit","constant":false,"payable":false,"inputs":[{"type":"address","name":"owner"},{"type":"address","name":"spender"},{"type":"uint256","name":"value"},{"type":"uint256","name":"deadline"},{"type":"uint8","name":"v"},{"type":"bytes32","name":"r"},{"type":"bytes32","name":"s"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"price0CumulativeLast","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"price1CumulativeLast","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"skim","constant":false,"payable":false,"inputs":[{"type":"address","name":"to"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swap","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"amount0Out"},{"type":"uint256","name":"amount1Out"},{"type":"address","name":"to"},{"type":"bytes","name":"data"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"string"}]},{"type":"function","name":"sync","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"token0","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"token1","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"totalSupply","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"uint256"}]},{"type":"function","name":"transfer","constant":false,"payable":false,"inputs":[{"type":"address","name":"to"},{"type":"uint256","name":"value"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","constant":false,"payable":false,"inputs":[{"type":"address","name":"from"},{"type":"address","name":"to"},{"type":"uint256","name":"value"}],"outputs":[{"type":"bool"}],"stateMutability":"nonpayable"}] as const + +export const UniswapV2Router = [{"type":"constructor","payable":false,"inputs":[{"type":"address","name":"_factory"},{"type":"address","name":"_WETH"}],"stateMutability":"nonpayable"},{"type":"function","name":"WETH","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"addLiquidity","constant":false,"payable":false,"inputs":[{"type":"address","name":"tokenA"},{"type":"address","name":"tokenB"},{"type":"uint256","name":"amountADesired"},{"type":"uint256","name":"amountBDesired"},{"type":"uint256","name":"amountAMin"},{"type":"uint256","name":"amountBMin"},{"type":"address","name":"to"},{"type":"uint256","name":"deadline"}],"outputs":[{"type":"uint256","name":"amountA"},{"type":"uint256","name":"amountB"},{"type":"uint256","name":"liquidity"}],"stateMutability":"nonpayable"},{"type":"function","name":"addLiquidityETH","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"address","name":"token"},{"type":"uint256","name":"amountTokenDesired"},{"type":"uint256","name":"amountTokenMin"},{"type":"uint256","name":"amountETHMin"},{"type":"address","name":"to"},{"type":"uint256","name":"deadline"}],"outputs":[{"type":"uint256","name":"amountToken"},{"type":"uint256","name":"amountETH"},{"type":"uint256","name":"liquidity"}]},{"type":"function","name":"factory","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"getAmountIn","constant":true,"stateMutability":"pure","payable":false,"inputs":[{"type":"uint256","name":"amountOut"},{"type":"uint256","name":"reserveIn"},{"type":"uint256","name":"reserveOut"}],"outputs":[{"type":"uint256","name":"amountIn"}]},{"type":"function","name":"getAmountOut","constant":true,"stateMutability":"pure","payable":false,"inputs":[{"type":"uint256","name":"amountIn"},{"type":"uint256","name":"reserveIn"},{"type":"uint256","name":"reserveOut"}],"outputs":[{"type":"uint256","name":"amountOut"}]},{"type":"function","name":"getAmountsIn","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"amountOut"},{"type":"address[]","name":"path"}],"outputs":[{"type":"uint256[]","name":"amounts"}]},{"type":"function","name":"getAmountsOut","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"uint256","name":"amountIn"},{"type":"address[]","name":"path"}],"outputs":[{"type":"uint256[]","name":"amounts"}]},{"type":"function","name":"quote","constant":true,"stateMutability":"pure","payable":false,"inputs":[{"type":"uint256","name":"amountA"},{"type":"uint256","name":"reserveA"},{"type":"uint256","name":"reserveB"}],"outputs":[{"type":"uint256","name":"amountB"}]},{"type":"function","name":"removeLiquidity","constant":false,"payable":false,"inputs":[{"type":"address","name":"tokenA"},{"type":"address","name":"tokenB"},{"type":"uint256","name":"liquidity"},{"type":"uint256","name":"amountAMin"},{"type":"uint256","name":"amountBMin"},{"type":"address","name":"to"},{"type":"uint256","name":"deadline"}],"outputs":[{"type":"uint256","name":"amountA"},{"type":"uint256","name":"amountB"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeLiquidityETH","constant":false,"payable":false,"inputs":[{"type":"address","name":"token"},{"type":"uint256","name":"liquidity"},{"type":"uint256","name":"amountTokenMin"},{"type":"uint256","name":"amountETHMin"},{"type":"address","name":"to"},{"type":"uint256","name":"deadline"}],"outputs":[{"type":"uint256","name":"amountToken"},{"type":"uint256","name":"amountETH"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeLiquidityETHSupportingFeeOnTransferTokens","constant":false,"payable":false,"inputs":[{"type":"address","name":"token"},{"type":"uint256","name":"liquidity"},{"type":"uint256","name":"amountTokenMin"},{"type":"uint256","name":"amountETHMin"},{"type":"address","name":"to"},{"type":"uint256","name":"deadline"}],"outputs":[{"type":"uint256","name":"amountETH"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeLiquidityETHWithPermit","constant":false,"payable":false,"inputs":[{"type":"address","name":"token"},{"type":"uint256","name":"liquidity"},{"type":"uint256","name":"amountTokenMin"},{"type":"uint256","name":"amountETHMin"},{"type":"address","name":"to"},{"type":"uint256","name":"deadline"},{"type":"bool","name":"approveMax"},{"type":"uint8","name":"v"},{"type":"bytes32","name":"r"},{"type":"bytes32","name":"s"}],"outputs":[{"type":"uint256","name":"amountToken"},{"type":"uint256","name":"amountETH"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens","constant":false,"payable":false,"inputs":[{"type":"address","name":"token"},{"type":"uint256","name":"liquidity"},{"type":"uint256","name":"amountTokenMin"},{"type":"uint256","name":"amountETHMin"},{"type":"address","name":"to"},{"type":"uint256","name":"deadline"},{"type":"bool","name":"approveMax"},{"type":"uint8","name":"v"},{"type":"bytes32","name":"r"},{"type":"bytes32","name":"s"}],"outputs":[{"type":"uint256","name":"amountETH"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeLiquidityWithPermit","constant":false,"payable":false,"inputs":[{"type":"address","name":"tokenA"},{"type":"address","name":"tokenB"},{"type":"uint256","name":"liquidity"},{"type":"uint256","name":"amountAMin"},{"type":"uint256","name":"amountBMin"},{"type":"address","name":"to"},{"type":"uint256","name":"deadline"},{"type":"bool","name":"approveMax"},{"type":"uint8","name":"v"},{"type":"bytes32","name":"r"},{"type":"bytes32","name":"s"}],"outputs":[{"type":"uint256","name":"amountA"},{"type":"uint256","name":"amountB"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapETHForExactTokens","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"amountOut"},{"type":"address[]","name":"path"},{"type":"address","name":"to"},{"type":"uint256","name":"deadline"}],"outputs":[{"type":"uint256[]","name":"amounts"}]},{"type":"function","name":"swapExactETHForTokens","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"amountOutMin"},{"type":"address[]","name":"path"},{"type":"address","name":"to"},{"type":"uint256","name":"deadline"}],"outputs":[{"type":"uint256[]","name":"amounts"}]},{"type":"function","name":"swapExactETHForTokensSupportingFeeOnTransferTokens","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"uint256","name":"amountOutMin"},{"type":"address[]","name":"path"},{"type":"address","name":"to"},{"type":"uint256","name":"deadline"}],"outputs":[]},{"type":"function","name":"swapExactTokensForETH","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"amountIn"},{"type":"uint256","name":"amountOutMin"},{"type":"address[]","name":"path"},{"type":"address","name":"to"},{"type":"uint256","name":"deadline"}],"outputs":[{"type":"uint256[]","name":"amounts"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactTokensForETHSupportingFeeOnTransferTokens","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"amountIn"},{"type":"uint256","name":"amountOutMin"},{"type":"address[]","name":"path"},{"type":"address","name":"to"},{"type":"uint256","name":"deadline"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactTokensForTokens","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"amountIn"},{"type":"uint256","name":"amountOutMin"},{"type":"address[]","name":"path"},{"type":"address","name":"to"},{"type":"uint256","name":"deadline"}],"outputs":[{"type":"uint256[]","name":"amounts"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"amountIn"},{"type":"uint256","name":"amountOutMin"},{"type":"address[]","name":"path"},{"type":"address","name":"to"},{"type":"uint256","name":"deadline"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swapTokensForExactETH","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"amountOut"},{"type":"uint256","name":"amountInMax"},{"type":"address[]","name":"path"},{"type":"address","name":"to"},{"type":"uint256","name":"deadline"}],"outputs":[{"type":"uint256[]","name":"amounts"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapTokensForExactTokens","constant":false,"payable":false,"inputs":[{"type":"uint256","name":"amountOut"},{"type":"uint256","name":"amountInMax"},{"type":"address[]","name":"path"},{"type":"address","name":"to"},{"type":"uint256","name":"deadline"}],"outputs":[{"type":"uint256[]","name":"amounts"}],"stateMutability":"nonpayable"}] as const + +export const VaultCreationZap = [{"type":"constructor","payable":false,"inputs":[{"type":"address","name":"_vaultFactory"},{"type":"address","name":"_inventoryStaking"},{"type":"address","name":"_lpStaking"},{"type":"address","name":"_sushiRouter"},{"type":"address","name":"_sushiHelper"},{"type":"address","name":"_weth"}],"stateMutability":"nonpayable"},{"type":"event","anonymous":false,"name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":true},{"type":"address","name":"newOwner","indexed":true}],"stateMutability":"view"},{"type":"function","name":"WETH","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"createVault","constant":false,"stateMutability":"payable","payable":true,"inputs":[{"type":"tuple","name":"vaultData","components":[{"type":"address","name":"assetAddress"},{"type":"bool","name":"is1155"},{"type":"bool","name":"allowAllItems"},{"type":"string","name":"name"},{"type":"string","name":"symbol"}]},{"type":"uint256","name":"vaultFeatures"},{"type":"tuple","name":"vaultFees","components":[{"type":"uint32","name":"mintFee"},{"type":"uint32","name":"randomRedeemFee"},{"type":"uint32","name":"targetRedeemFee"},{"type":"uint32","name":"randomSwapFee"},{"type":"uint32","name":"targetSwapFee"}]},{"type":"tuple","name":"eligibilityStorage","components":[{"type":"int256","name":"moduleIndex"},{"type":"bytes","name":"initData"}]},{"type":"tuple","name":"assetTokens","components":[{"type":"uint256[]","name":"assetTokenIds"},{"type":"uint256[]","name":"assetTokenAmounts"},{"type":"uint256","name":"minTokenIn"},{"type":"uint256","name":"minWethIn"},{"type":"uint256","name":"wethIn"}]}],"outputs":[{"type":"uint256","name":"vaultId_"}]},{"type":"function","name":"inventoryStaking","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"lpStaking","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"onERC1155BatchReceived","constant":false,"payable":false,"inputs":[{"type":"address"},{"type":"address"},{"type":"uint256[]"},{"type":"uint256[]"},{"type":"bytes"}],"outputs":[{"type":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"onERC1155Received","constant":false,"payable":false,"inputs":[{"type":"address"},{"type":"address"},{"type":"uint256"},{"type":"uint256"},{"type":"bytes"}],"outputs":[{"type":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"pause","constant":false,"payable":false,"inputs":[{"type":"bool","name":"_paused"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"bool"}]},{"type":"function","name":"renounceOwnership","constant":false,"payable":false,"inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","constant":true,"stateMutability":"view","payable":false,"inputs":[{"type":"bytes4","name":"interfaceId"}],"outputs":[{"type":"bool"}]},{"type":"function","name":"sushiRouter","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]},{"type":"function","name":"transferOwnership","constant":false,"payable":false,"inputs":[{"type":"address","name":"newOwner"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vaultFactory","constant":true,"stateMutability":"view","payable":false,"inputs":[],"outputs":[{"type":"address"}]}] as const \ No newline at end of file diff --git a/packages/constants/abis/BaseRegistrarImplementation.json b/packages/abi/src/json/BaseRegistrarImplementation.json similarity index 100% rename from packages/constants/abis/BaseRegistrarImplementation.json rename to packages/abi/src/json/BaseRegistrarImplementation.json diff --git a/packages/abi/src/json/CryptoPunks.json b/packages/abi/src/json/CryptoPunks.json new file mode 100644 index 00000000..2566ac0f --- /dev/null +++ b/packages/abi/src/json/CryptoPunks.json @@ -0,0 +1,325 @@ +[ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [{ "name": "", "type": "string" }], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [{ "name": "", "type": "uint256" }], + "name": "punksOfferedForSale", + "outputs": [ + { "name": "isForSale", "type": "bool" }, + { "name": "punkIndex", "type": "uint256" }, + { "name": "seller", "type": "address" }, + { "name": "minValue", "type": "uint256" }, + { "name": "onlySellTo", "type": "address" } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [{ "name": "punkIndex", "type": "uint256" }], + "name": "enterBidForPunk", + "outputs": [], + "payable": true, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [{ "name": "", "type": "uint256" }], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { "name": "punkIndex", "type": "uint256" }, + { "name": "minPrice", "type": "uint256" } + ], + "name": "acceptBidForPunk", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [{ "name": "", "type": "uint8" }], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { "name": "addresses", "type": "address[]" }, + { "name": "indices", "type": "uint256[]" } + ], + "name": "setInitialOwners", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "withdraw", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "imageHash", + "outputs": [{ "name": "", "type": "string" }], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "nextPunkIndexToAssign", + "outputs": [{ "name": "", "type": "uint256" }], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [{ "name": "", "type": "uint256" }], + "name": "punkIndexToAddress", + "outputs": [{ "name": "", "type": "address" }], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "standard", + "outputs": [{ "name": "", "type": "string" }], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [{ "name": "", "type": "uint256" }], + "name": "punkBids", + "outputs": [ + { "name": "hasBid", "type": "bool" }, + { "name": "punkIndex", "type": "uint256" }, + { "name": "bidder", "type": "address" }, + { "name": "value", "type": "uint256" } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [{ "name": "", "type": "address" }], + "name": "balanceOf", + "outputs": [{ "name": "", "type": "uint256" }], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "allInitialOwnersAssigned", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "allPunksAssigned", + "outputs": [{ "name": "", "type": "bool" }], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [{ "name": "punkIndex", "type": "uint256" }], + "name": "buyPunk", + "outputs": [], + "payable": true, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { "name": "to", "type": "address" }, + { "name": "punkIndex", "type": "uint256" } + ], + "name": "transferPunk", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [{ "name": "", "type": "string" }], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [{ "name": "punkIndex", "type": "uint256" }], + "name": "withdrawBidForPunk", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { "name": "to", "type": "address" }, + { "name": "punkIndex", "type": "uint256" } + ], + "name": "setInitialOwner", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { "name": "punkIndex", "type": "uint256" }, + { "name": "minSalePriceInWei", "type": "uint256" }, + { "name": "toAddress", "type": "address" } + ], + "name": "offerPunkForSaleToAddress", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "punksRemainingToAssign", + "outputs": [{ "name": "", "type": "uint256" }], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { "name": "punkIndex", "type": "uint256" }, + { "name": "minSalePriceInWei", "type": "uint256" } + ], + "name": "offerPunkForSale", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [{ "name": "punkIndex", "type": "uint256" }], + "name": "getPunk", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [{ "name": "", "type": "address" }], + "name": "pendingWithdrawals", + "outputs": [{ "name": "", "type": "uint256" }], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [{ "name": "punkIndex", "type": "uint256" }], + "name": "punkNoLongerForSale", + "outputs": [], + "payable": false, + "type": "function" + }, + { "inputs": [], "payable": true, "type": "constructor" }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "name": "to", "type": "address" }, + { "indexed": false, "name": "punkIndex", "type": "uint256" } + ], + "name": "Assign", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "name": "from", "type": "address" }, + { "indexed": true, "name": "to", "type": "address" }, + { "indexed": false, "name": "value", "type": "uint256" } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "name": "from", "type": "address" }, + { "indexed": true, "name": "to", "type": "address" }, + { "indexed": false, "name": "punkIndex", "type": "uint256" } + ], + "name": "PunkTransfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "name": "punkIndex", "type": "uint256" }, + { "indexed": false, "name": "minValue", "type": "uint256" }, + { "indexed": true, "name": "toAddress", "type": "address" } + ], + "name": "PunkOffered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "name": "punkIndex", "type": "uint256" }, + { "indexed": false, "name": "value", "type": "uint256" }, + { "indexed": true, "name": "fromAddress", "type": "address" } + ], + "name": "PunkBidEntered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "name": "punkIndex", "type": "uint256" }, + { "indexed": false, "name": "value", "type": "uint256" }, + { "indexed": true, "name": "fromAddress", "type": "address" } + ], + "name": "PunkBidWithdrawn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "name": "punkIndex", "type": "uint256" }, + { "indexed": false, "name": "value", "type": "uint256" }, + { "indexed": true, "name": "fromAddress", "type": "address" }, + { "indexed": true, "name": "toAddress", "type": "address" } + ], + "name": "PunkBought", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": true, "name": "punkIndex", "type": "uint256" }], + "name": "PunkNoLongerForSale", + "type": "event" + } +] diff --git a/packages/constants/abis/ERC20.json b/packages/abi/src/json/ERC20.json similarity index 100% rename from packages/constants/abis/ERC20.json rename to packages/abi/src/json/ERC20.json diff --git a/packages/abi/src/json/ERC721.json b/packages/abi/src/json/ERC721.json new file mode 100644 index 00000000..db2fefe7 --- /dev/null +++ b/packages/abi/src/json/ERC721.json @@ -0,0 +1,244 @@ +[ + { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" } + ], + "name": "balanceOf", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "getApproved", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "operator", "type": "address" } + ], + "name": "isApprovedForAll", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "string", "name": "tokenURI", "type": "string" } + ], + "name": "mint", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "ownerOf", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, + { "internalType": "bytes", "name": "_data", "type": "bytes" } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "operator", "type": "address" }, + { "internalType": "bool", "name": "approved", "type": "bool" } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } + ], + "name": "supportsInterface", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "index", "type": "uint256" } + ], + "name": "tokenByIndex", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "uint256", "name": "index", "type": "uint256" } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "tokenURI", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/packages/constants/abis/KittyCore.json b/packages/abi/src/json/KittyCore.json similarity index 100% rename from packages/constants/abis/KittyCore.json rename to packages/abi/src/json/KittyCore.json diff --git a/packages/constants/abis/NFTXENSMerkleEligibility.json b/packages/abi/src/json/NFTXENSMerkleEligibility.json similarity index 100% rename from packages/constants/abis/NFTXENSMerkleEligibility.json rename to packages/abi/src/json/NFTXENSMerkleEligibility.json diff --git a/packages/abi/src/json/NFTXEligibility.json b/packages/abi/src/json/NFTXEligibility.json new file mode 100644 index 00000000..ad440b61 --- /dev/null +++ b/packages/abi/src/json/NFTXEligibility.json @@ -0,0 +1,104 @@ +[ + { + "inputs": [ + { "internalType": "bytes", "name": "initData", "type": "bytes" } + ], + "name": "__NFTXEligibility_init_bytes", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } + ], + "name": "afterMintHook", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } + ], + "name": "afterRedeemHook", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } + ], + "name": "beforeMintHook", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } + ], + "name": "beforeRedeemHook", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } + ], + "name": "checkAllEligible", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } + ], + "name": "checkAllIneligible", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } + ], + "name": "checkEligible", + "outputs": [{ "internalType": "bool[]", "name": "", "type": "bool[]" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "checkIsEligible", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "finalized", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "targetAsset", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "pure", + "type": "function" + } +] diff --git a/packages/constants/abis/NFTXEligibilityManager.json b/packages/abi/src/json/NFTXEligibilityManager.json similarity index 100% rename from packages/constants/abis/NFTXEligibilityManager.json rename to packages/abi/src/json/NFTXEligibilityManager.json diff --git a/packages/constants/abis/NFTXInventoryStaking.json b/packages/abi/src/json/NFTXInventoryStaking.json similarity index 100% rename from packages/constants/abis/NFTXInventoryStaking.json rename to packages/abi/src/json/NFTXInventoryStaking.json diff --git a/packages/constants/abis/NFTXLpStaking.json b/packages/abi/src/json/NFTXLpStaking.json similarity index 100% rename from packages/constants/abis/NFTXLpStaking.json rename to packages/abi/src/json/NFTXLpStaking.json diff --git a/packages/constants/abis/NFTXMarketplace0xZap.json b/packages/abi/src/json/NFTXMarketplace0xZap.json similarity index 100% rename from packages/constants/abis/NFTXMarketplace0xZap.json rename to packages/abi/src/json/NFTXMarketplace0xZap.json diff --git a/packages/constants/abis/NFTXMarketplaceZap.json b/packages/abi/src/json/NFTXMarketplaceZap.json similarity index 100% rename from packages/constants/abis/NFTXMarketplaceZap.json rename to packages/abi/src/json/NFTXMarketplaceZap.json diff --git a/packages/constants/abis/NFTXRewardDistributionTokenUpgradeable.json b/packages/abi/src/json/NFTXRewardDistributionTokenUpgradeable.json similarity index 100% rename from packages/constants/abis/NFTXRewardDistributionTokenUpgradeable.json rename to packages/abi/src/json/NFTXRewardDistributionTokenUpgradeable.json diff --git a/packages/constants/abis/NFTXStakingZap.json b/packages/abi/src/json/NFTXStakingZap.json similarity index 100% rename from packages/constants/abis/NFTXStakingZap.json rename to packages/abi/src/json/NFTXStakingZap.json diff --git a/packages/constants/abis/NFTXStakingZapDeprecated.json b/packages/abi/src/json/NFTXStakingZapDeprecated.json similarity index 100% rename from packages/constants/abis/NFTXStakingZapDeprecated.json rename to packages/abi/src/json/NFTXStakingZapDeprecated.json diff --git a/packages/constants/abis/NFTXUnstakingInventoryZap.json b/packages/abi/src/json/NFTXUnstakingInventoryZap.json similarity index 100% rename from packages/constants/abis/NFTXUnstakingInventoryZap.json rename to packages/abi/src/json/NFTXUnstakingInventoryZap.json diff --git a/packages/constants/abis/NFTXV12.json b/packages/abi/src/json/NFTXV12.json similarity index 100% rename from packages/constants/abis/NFTXV12.json rename to packages/abi/src/json/NFTXV12.json diff --git a/packages/constants/abis/NFTXVaultFactory.json b/packages/abi/src/json/NFTXVaultFactory.json similarity index 100% rename from packages/constants/abis/NFTXVaultFactory.json rename to packages/abi/src/json/NFTXVaultFactory.json diff --git a/packages/constants/abis/NFTXVaultUpgradeable.json b/packages/abi/src/json/NFTXVaultUpgradeable.json similarity index 100% rename from packages/constants/abis/NFTXVaultUpgradeable.json rename to packages/abi/src/json/NFTXVaultUpgradeable.json diff --git a/packages/constants/abis/UniswapQuoter.json b/packages/abi/src/json/UniswapQuoter.json similarity index 100% rename from packages/constants/abis/UniswapQuoter.json rename to packages/abi/src/json/UniswapQuoter.json diff --git a/packages/constants/abis/UniswapV2Factory.json b/packages/abi/src/json/UniswapV2Factory.json similarity index 100% rename from packages/constants/abis/UniswapV2Factory.json rename to packages/abi/src/json/UniswapV2Factory.json diff --git a/packages/constants/abis/UniswapV2Pair.json b/packages/abi/src/json/UniswapV2Pair.json similarity index 100% rename from packages/constants/abis/UniswapV2Pair.json rename to packages/abi/src/json/UniswapV2Pair.json diff --git a/packages/constants/abis/UniswapV2Router.json b/packages/abi/src/json/UniswapV2Router.json similarity index 100% rename from packages/constants/abis/UniswapV2Router.json rename to packages/abi/src/json/UniswapV2Router.json diff --git a/packages/constants/abis/VaultCreationZap.json b/packages/abi/src/json/VaultCreationZap.json similarity index 100% rename from packages/constants/abis/VaultCreationZap.json rename to packages/abi/src/json/VaultCreationZap.json diff --git a/packages/abi/tsconfig.json b/packages/abi/tsconfig.json new file mode 100644 index 00000000..52d43eaa --- /dev/null +++ b/packages/abi/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src/**/*"] +} diff --git a/packages/api/package.json b/packages/api/package.json index edbc5805..e717d03b 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -25,13 +25,8 @@ }, "dependencies": { "@nftx/config": "^0.9.5", - "@nftx/types": "^0.9.0" - }, - "peerDependencies": { - "@ethersproject/bignumber": "^5.6.0" - }, - "devDependencies": { - "@ethersproject/bignumber": "^5.6.0" + "@nftx/types": "^0.9.0", + "viem": "0.1.19" }, "bugs": { "url": "https://github.com/NFTX-project/nftxjs/issues" diff --git a/packages/api/rollup.config.js b/packages/api/rollup.config.js index 2d42fd1d..5a63469a 100644 --- a/packages/api/rollup.config.js +++ b/packages/api/rollup.config.js @@ -1,13 +1,7 @@ -import { readdirSync } from 'fs'; import base from '../../rollup.base'; -const abis = readdirSync('../constants/abis') - .filter((filename) => filename.endsWith('.json')) - .map((filename) => `@nftx/constants/abis/${filename}`); - const config = { ...base, - external: [...base.external, ...abis], }; export default config; diff --git a/packages/api/src/assets/Stream.ts b/packages/api/src/assets/Stream.ts index 1f9d08d9..a53348cf 100644 --- a/packages/api/src/assets/Stream.ts +++ b/packages/api/src/assets/Stream.ts @@ -57,7 +57,7 @@ export default class Stream implements IStream { const revert = () => { this.reading = false; - this.listeners.data = null; + this.listeners.data = undefined; this.listeners.error = onError; this.listeners.end = onEnd; }; diff --git a/packages/api/src/assets/fetchUserCollections.ts b/packages/api/src/assets/fetchUserCollections.ts index a1163f25..e39ae058 100644 --- a/packages/api/src/assets/fetchUserCollections.ts +++ b/packages/api/src/assets/fetchUserCollections.ts @@ -1,5 +1,5 @@ import config from '@nftx/config'; -import type { Collection } from '@nftx/types'; +import type { Address, Collection } from '@nftx/types'; import { queryApi } from '../utils'; /** Returns a list of all collections held by a user */ @@ -8,7 +8,7 @@ const fetchUserCollections = ({ userAddress, }: { network?: number; - userAddress: string; + userAddress: Address; }) => { const url = `/${network}/users/${userAddress}/collections`; return queryApi({ diff --git a/packages/api/src/assets/fetchUserVaultCollections.ts b/packages/api/src/assets/fetchUserVaultCollections.ts index b69a0471..aeca00fa 100644 --- a/packages/api/src/assets/fetchUserVaultCollections.ts +++ b/packages/api/src/assets/fetchUserVaultCollections.ts @@ -1,4 +1,5 @@ import config from '@nftx/config'; +import type { Address } from '@nftx/types'; import { queryApi } from '../utils'; type Response = { vaultId: string; assetAddress: string }[]; @@ -9,7 +10,7 @@ const fetchUserVaultCollections = ({ userAddress, }: { network?: number; - userAddress: string; + userAddress: Address; }) => { const url = `/${network}/users/${userAddress}/vault-collections`; return queryApi({ diff --git a/packages/api/src/assets/userCollectionAssets/fetchAllUserCollectionAssets.ts b/packages/api/src/assets/userCollectionAssets/fetchAllUserCollectionAssets.ts index 023500fe..843c77dd 100644 --- a/packages/api/src/assets/userCollectionAssets/fetchAllUserCollectionAssets.ts +++ b/packages/api/src/assets/userCollectionAssets/fetchAllUserCollectionAssets.ts @@ -1,5 +1,5 @@ import config from '@nftx/config'; -import type { Asset } from '@nftx/types'; +import type { Address, Asset } from '@nftx/types'; import streamUserCollectionAssets from './streamUserCollectionAssets'; /** @@ -14,8 +14,8 @@ const fetchAllUserCollectionAssets = ({ assetAddress, }: { network?: number; - userAddress: string; - assetAddress: string; + userAddress: Address; + assetAddress: Address; }) => { return new Promise((res, rej) => { const allAssets: Asset[] = []; diff --git a/packages/api/src/assets/userCollectionAssets/fetchUserCollectionAssets.ts b/packages/api/src/assets/userCollectionAssets/fetchUserCollectionAssets.ts index 429cfe84..f8c41909 100644 --- a/packages/api/src/assets/userCollectionAssets/fetchUserCollectionAssets.ts +++ b/packages/api/src/assets/userCollectionAssets/fetchUserCollectionAssets.ts @@ -1,10 +1,10 @@ import config from '@nftx/config'; -import type { Asset } from '@nftx/types'; +import type { Address, Asset } from '@nftx/types'; import streamUserCollectionAssets from './streamUserCollectionAssets'; type Result = { assets: Asset[]; - next: () => Promise; + next?: () => Promise; }; /** @@ -27,8 +27,8 @@ const fetchUserCollectionAssets = async ({ assetAddress, }: { network?: number; - userAddress: string; - assetAddress: string; + userAddress: Address; + assetAddress: Address; }) => { const stream = streamUserCollectionAssets({ userAddress, diff --git a/packages/api/src/assets/userCollectionAssets/streamUserCollectionAssets.ts b/packages/api/src/assets/userCollectionAssets/streamUserCollectionAssets.ts index 0dd5fded..28d9c45b 100644 --- a/packages/api/src/assets/userCollectionAssets/streamUserCollectionAssets.ts +++ b/packages/api/src/assets/userCollectionAssets/streamUserCollectionAssets.ts @@ -1,5 +1,5 @@ import config from '@nftx/config'; -import type { Asset } from '@nftx/types'; +import type { Address, Asset } from '@nftx/types'; import { queryApi } from '../../utils'; import Stream, { type IStream } from '../Stream'; @@ -10,9 +10,9 @@ const getUrl = ({ userAddress, assetAddress, }: { - assetAddress: string; + assetAddress: Address; network: number; - userAddress: string; + userAddress: Address; }) => { return `/${network}/users/${userAddress}/assets/${assetAddress}`; }; @@ -41,8 +41,8 @@ const streamUserCollectionAssets = ({ assetAddress, }: { network?: number; - userAddress: string; - assetAddress: string; + userAddress: Address; + assetAddress: Address; }): IStream => { let cursor: string; diff --git a/packages/api/src/assets/userVaultAssets/fetchAllUserVaultAssets.ts b/packages/api/src/assets/userVaultAssets/fetchAllUserVaultAssets.ts index 3ed4e50b..e9ba4fbe 100644 --- a/packages/api/src/assets/userVaultAssets/fetchAllUserVaultAssets.ts +++ b/packages/api/src/assets/userVaultAssets/fetchAllUserVaultAssets.ts @@ -1,5 +1,5 @@ import config from '@nftx/config'; -import type { Asset } from '@nftx/types'; +import type { Address, Asset } from '@nftx/types'; import streamUserVaultAssets from './streamUserVaultAssets'; /** @@ -14,7 +14,7 @@ const fetchAllUserVaultAssets = ({ vaultId, }: { network?: number; - userAddress: string; + userAddress: Address; vaultId?: string; }) => { return new Promise((res, rej) => { diff --git a/packages/api/src/assets/userVaultAssets/fetchUserVaultAssets.ts b/packages/api/src/assets/userVaultAssets/fetchUserVaultAssets.ts index 8aab1317..98557d28 100644 --- a/packages/api/src/assets/userVaultAssets/fetchUserVaultAssets.ts +++ b/packages/api/src/assets/userVaultAssets/fetchUserVaultAssets.ts @@ -1,10 +1,10 @@ import config from '@nftx/config'; -import type { Asset } from '@nftx/types'; +import type { Address, Asset } from '@nftx/types'; import streamUserVaultAssets from './streamUserVaultAssets'; type Result = { assets: Asset[]; - next: () => Promise; + next?: () => Promise; }; /** @@ -27,7 +27,7 @@ const fetchUserVaultAssets = async ({ vaultId, }: { network?: number; - userAddress: string; + userAddress: Address; vaultId?: string; }) => { const stream = streamUserVaultAssets({ userAddress, network, vaultId }); diff --git a/packages/api/src/assets/userVaultAssets/streamUserVaultAssets.ts b/packages/api/src/assets/userVaultAssets/streamUserVaultAssets.ts index 2b83a4e1..4b737fc2 100644 --- a/packages/api/src/assets/userVaultAssets/streamUserVaultAssets.ts +++ b/packages/api/src/assets/userVaultAssets/streamUserVaultAssets.ts @@ -1,5 +1,5 @@ import config from '@nftx/config'; -import type { Asset } from '@nftx/types'; +import type { Address, Asset } from '@nftx/types'; import { queryApi } from '../../utils'; import Stream, { type IStream } from '../Stream'; @@ -10,7 +10,7 @@ const getUrl = ({ userAddress, vaultId, }: { - vaultId: string; + vaultId?: string; network: number; userAddress: string; }) => { @@ -44,7 +44,7 @@ const streamUserVaultAssets = ({ vaultId, }: { network?: number; - userAddress: string; + userAddress: Address; vaultId?: string; }): IStream => { let cursor: string; diff --git a/packages/api/src/pools/fetchPools.ts b/packages/api/src/pools/fetchPools.ts index 4b5311b5..ff3078e7 100644 --- a/packages/api/src/pools/fetchPools.ts +++ b/packages/api/src/pools/fetchPools.ts @@ -1,5 +1,5 @@ import config from '@nftx/config'; -import type { Pool } from '@nftx/types'; +import type { Address, Pool } from '@nftx/types'; import { queryApi } from '../utils'; /** Get all pools that match the given criteria. If no arguments are given, it will return all pools */ @@ -18,9 +18,9 @@ const fetchPools = ({ /** Get pools that match the given liquidity pool addresses */ liquidityPoolIds?: string[]; /** Get a pool that matches the given vault address */ - vaultAddress?: string; + vaultAddress?: Address; /** Get pools that match the given vault addresses */ - vaultAddresses?: string[]; + vaultAddresses?: Address[]; /** Get a pool for a specific vault id */ vaultId?: string; /** Get pools that match the given vault ids */ diff --git a/packages/api/src/positions/fetchPosition.ts b/packages/api/src/positions/fetchPosition.ts index 9bb355d2..87cc159d 100644 --- a/packages/api/src/positions/fetchPosition.ts +++ b/packages/api/src/positions/fetchPosition.ts @@ -1,5 +1,5 @@ import config from '@nftx/config'; -import type { Position } from '@nftx/types'; +import type { Address, Position } from '@nftx/types'; import { queryApi } from '../utils'; /** Get a position for specific user and vault */ @@ -9,7 +9,7 @@ const fetchPosition = ({ network = config.network, }: { network?: number; - userAddress: string; + userAddress: Address; vaultId: string; }) => { return queryApi({ diff --git a/packages/api/src/positions/fetchPositionYield.ts b/packages/api/src/positions/fetchPositionYield.ts index a849c0fd..e50ef803 100644 --- a/packages/api/src/positions/fetchPositionYield.ts +++ b/packages/api/src/positions/fetchPositionYield.ts @@ -1,11 +1,11 @@ -import type { BigNumber } from '@ethersproject/bignumber'; import config from '@nftx/config'; +import type { Address } from '@nftx/types'; import { queryApi } from '../utils'; type Response = Array<{ type: 'inventory' | 'liquidity'; - amount: BigNumber; - ethValue: BigNumber; + amount: bigint; + ethValue: bigint; }>; /** Get the lifetime yield amount for a specific position */ @@ -15,7 +15,7 @@ const fetchPositionYield = ({ network = config.network, }: { network?: number; - userAddress: string; + userAddress: Address; vaultId: string; }) => { return queryApi({ diff --git a/packages/api/src/positions/fetchUserPositions.ts b/packages/api/src/positions/fetchUserPositions.ts index 43d9f494..0708ed2d 100644 --- a/packages/api/src/positions/fetchUserPositions.ts +++ b/packages/api/src/positions/fetchUserPositions.ts @@ -1,5 +1,5 @@ import config from '@nftx/config'; -import type { Position } from '@nftx/types'; +import type { Address, Position } from '@nftx/types'; import { queryApi } from '../utils'; /** Get all positions for a given user */ @@ -8,7 +8,7 @@ const fetchUserPositions = ({ network = config.network, }: { network?: number; - userAddress: string; + userAddress: Address; }) => { return queryApi({ url: `/${network}/users/${userAddress}/positions`, diff --git a/packages/api/src/reserves/fetchReserve.ts b/packages/api/src/reserves/fetchReserve.ts index bbb2bd27..fb87bb20 100644 --- a/packages/api/src/reserves/fetchReserve.ts +++ b/packages/api/src/reserves/fetchReserve.ts @@ -1,5 +1,5 @@ import config from '@nftx/config'; -import type { TokenReserve } from '@nftx/types'; +import type { Address, TokenReserve } from '@nftx/types'; import { queryApi } from '../utils'; /** Get token reserves for a contract address */ @@ -8,7 +8,7 @@ const fetchReserve = ({ address, }: { network?: number; - address: string; + address: Address; }) => { return queryApi({ url: `/${network}/reserves/${address}`, diff --git a/packages/api/src/reserves/fetchReserves.ts b/packages/api/src/reserves/fetchReserves.ts index d503584b..e36d0075 100644 --- a/packages/api/src/reserves/fetchReserves.ts +++ b/packages/api/src/reserves/fetchReserves.ts @@ -1,4 +1,4 @@ -import type { TokenReserve } from '@nftx/types'; +import type { Address, TokenReserve } from '@nftx/types'; import { queryApi } from '../utils'; /** Get token reserves for the given contract addresses */ @@ -7,7 +7,7 @@ const fetchReserves = ({ addresses, }: { network?: number; - addresses?: string[]; + addresses?: Address[]; }) => { return queryApi({ url: `/${network}/reserves`, diff --git a/packages/api/src/users/fetchBalances.ts b/packages/api/src/users/fetchBalances.ts index 740a4f27..038a9aea 100644 --- a/packages/api/src/users/fetchBalances.ts +++ b/packages/api/src/users/fetchBalances.ts @@ -1,5 +1,5 @@ import config from '@nftx/config'; -import type { UserVaultBalance, NftxTokenType } from '@nftx/types'; +import type { UserVaultBalance, NftxTokenType, Address } from '@nftx/types'; import { queryApi } from '../utils'; type Type = keyof typeof NftxTokenType; @@ -17,7 +17,7 @@ const fetchBalances = ({ vaultIds, }: { network?: number; - userAddress: string; + userAddress: Address; type?: Type; types?: Type[]; vaultId?: string; diff --git a/packages/api/src/users/fetchUserYield.ts b/packages/api/src/users/fetchUserYield.ts index a706015f..35c57f99 100644 --- a/packages/api/src/users/fetchUserYield.ts +++ b/packages/api/src/users/fetchUserYield.ts @@ -1,9 +1,9 @@ import config from '@nftx/config'; -import type { BigNumber } from '@ethersproject/bignumber'; +import type { Address } from '@nftx/types'; import { queryApi } from '../utils'; type Response = { - lifetimeYield: BigNumber; + lifetimeYield: bigint; }; /** @@ -14,7 +14,7 @@ const fetchUserYield = ({ userAddress, }: { network?: number; - userAddress: string; + userAddress: Address; }) => { return queryApi({ url: `/${network}/users/${userAddress}/yield`, diff --git a/packages/api/src/users/fetchVaultBalances.ts b/packages/api/src/users/fetchVaultBalances.ts index 1c6877ad..91f42870 100644 --- a/packages/api/src/users/fetchVaultBalances.ts +++ b/packages/api/src/users/fetchVaultBalances.ts @@ -1,7 +1,9 @@ import config from '@nftx/config'; -import type { UserVaultBalance } from '@nftx/types'; +import type { Address, NftxTokenType, UserVaultBalance } from '@nftx/types'; import { queryApi } from '../utils'; +type Type = keyof typeof NftxTokenType; + /** * Get a list of NFTX balances for a given user/vault. * You can further filter the balances by type. @@ -14,9 +16,9 @@ const fetchVaultBalances = ({ vaultId, }: { network?: number; - userAddress: string; - type?: string; - types?: string[]; + userAddress: Address; + type?: Type; + types?: Type[]; vaultId: string; }) => { return queryApi({ diff --git a/packages/api/src/users/invalidateUser.ts b/packages/api/src/users/invalidateUser.ts index 935a0ebc..95864975 100644 --- a/packages/api/src/users/invalidateUser.ts +++ b/packages/api/src/users/invalidateUser.ts @@ -1,4 +1,5 @@ import config from '@nftx/config'; +import type { Address } from '@nftx/types'; import { bustCache, queryApi } from '../utils'; /** @@ -9,7 +10,7 @@ const invalidateUser = async ({ userAddress, }: { network?: number; - userAddress: string; + userAddress: Address; }) => { await queryApi({ url: `/${network}/users/${userAddress}`, diff --git a/packages/api/src/utils/index.ts b/packages/api/src/utils/index.ts new file mode 100644 index 00000000..3a28afea --- /dev/null +++ b/packages/api/src/utils/index.ts @@ -0,0 +1,7 @@ +import config from '@nftx/config'; + +export { default as queryApi } from './queryApi'; + +export const bustCache = () => { + config.internal.cacheKey = Math.floor(Math.random() * 100000).toString(16); +}; diff --git a/packages/api/src/utils/nsync.ts b/packages/api/src/utils/nsync.ts new file mode 100644 index 00000000..6c7a4563 --- /dev/null +++ b/packages/api/src/utils/nsync.ts @@ -0,0 +1,79 @@ +import config from '@nftx/config'; +import queryApi from './queryApi'; + +const isApiBehind = () => { + const { apiBlockNumber, requiredBlockNumber } = config.internal; + + return apiBlockNumber < requiredBlockNumber; +}; + +// Wraps an async function. +// While the promise is unresolved, all subsequent calls will receive the same promise +const throttleFn = Promise>(fn: F): F => { + let p: Promise | undefined; + return ((...args: Parameters) => { + if (p) { + return p; + } + p = fn(...args).then( + (result) => { + p = undefined; + return result; + }, + (e) => { + p = undefined; + throw e; + } + ); + return p; + }) as any as F; +}; + +const fetchLastIndexedBlock = throttleFn(async () => { + const url = `/${config.network}/block`; + type Response = { block: number }; + const response = await queryApi({ + url, + query: { source: 'live' }, + }); + return response?.block; +}); + +const updateApiBlock = ({ source }: { source: 'live' | 'api' }) => { + // Switch to live mode + if (source !== 'live') { + config.internal.source = 'live'; + } + // Wait a few seconds before polling the api again + setTimeout(async () => { + // Get the last indexed block on the api + config.internal.apiBlockNumber = await fetchLastIndexedBlock(); + // Run this fn again until we're up to date... + checkApiBlock(); + }, 5000); +}; + +const resetRequiredBlock = () => { + // Reset the required block number + config.internal.requiredBlockNumber = 0; + // Switch back to using the api as the SoT + config.internal.source = 'api'; +}; + +export const checkApiBlock = (): void => { + const { requiredBlockNumber } = config.internal; + + // We don't need to worry about syncing if there's no required block number + if (!requiredBlockNumber) { + return; + } + + const { source } = config.internal; + + // The API is behind the required block + if (isApiBehind()) { + updateApiBlock({ source }); + } else if (source === 'live') { + resetRequiredBlock(); + } +}; diff --git a/packages/api/src/utils.ts b/packages/api/src/utils/queryApi.ts similarity index 66% rename from packages/api/src/utils.ts rename to packages/api/src/utils/queryApi.ts index be52e108..5de0e75d 100644 --- a/packages/api/src/utils.ts +++ b/packages/api/src/utils/queryApi.ts @@ -1,32 +1,17 @@ -import { BigNumber } from '@ethersproject/bignumber'; import config from '@nftx/config'; - -let cacheKey: string; - -(() => { - if (typeof window !== 'undefined' && window?.localStorage?.getItem) { - cacheKey = window.localStorage.getItem('NFTXJS_CACHE_KEY'); - } -})(); +import { checkApiBlock } from './nsync'; const parseResponse = (str: string) => { return JSON.parse(str, (key, value) => { if (typeof value === 'string' && value.startsWith('BigNumber(')) { - const [, v] = value.match(/BigNumber\((.+)?\)/); - return BigNumber.from(v); + const [, v] = value.match(/BigNumber\((.+)?\)/) ?? []; + return BigInt(v); } return value; }); }; -export const bustCache = () => { - cacheKey = Math.floor(Math.random() * 100000).toString(16); - if (typeof window !== 'undefined') { - window.localStorage?.setItem?.('NFTXJS_CACHE_KEY', cacheKey); - } -}; - -export const queryApi = async ({ +const queryApi = async ({ url, query = {}, method = 'GET', @@ -35,8 +20,11 @@ export const queryApi = async ({ query?: Record; method?: string; }) => { + checkApiBlock(); const uri = new URL(url, config.urls.NFTX_API_URL); + // Tell the api to wrap all big numbers in an identifier so we can find and deserialise them uri.searchParams.set('ebn', 'true'); + // Add all query params Object.entries(query).forEach(([key, value]) => { if (value == null) { return; @@ -52,18 +40,29 @@ export const queryApi = async ({ uri.searchParams.set(key, value); } }); + // Append a cache-busting key to the query + const { cacheKey } = config.internal; if (cacheKey) { uri.searchParams.set('_c', cacheKey); } + // Set the source + if (config.internal.source !== 'api') { + uri.searchParams.set('source', config.internal.source); + } + // Add the api key header const headers: Record = {}; if (config.keys.NFTX_API) { headers['Authorization'] = config.keys.NFTX_API; + } else { + console.warn('No NFTX API key found'); } + // Send the request const response = await fetch(uri.toString(), { method, headers }); if (!response.ok) { throw new Error(`Failed to fetch ${uri}`); } + // We get the text response as we need to manually parse big numbers in the payload const text = await response.text(); const contentType = response.headers.get('Content-Type'); if (!contentType?.includes('application/json')) { @@ -76,3 +75,5 @@ export const queryApi = async ({ return data as T; }; + +export default queryApi; diff --git a/packages/api/src/vaults/fetchActivity.ts b/packages/api/src/vaults/fetchActivity.ts index 8f5badad..755d4879 100644 --- a/packages/api/src/vaults/fetchActivity.ts +++ b/packages/api/src/vaults/fetchActivity.ts @@ -1,5 +1,5 @@ import config from '@nftx/config'; -import type { VaultActivity } from '@nftx/types'; +import type { Address, VaultActivity } from '@nftx/types'; import { queryApi } from '../utils'; /** Get recent vault activity across all vaults */ @@ -14,12 +14,12 @@ const fetchActivity = ({ network?: number; /** Timestamp (in seconds). The given timestamp will be rounded to the nearest hour */ fromTimestamp?: number; - vaultAddress?: string; - vaultAddresses?: string[]; + vaultAddress?: Address; + vaultAddresses?: Address[]; vaultId?: string; vaultIds?: string[]; }) => { - if (fromTimestamp) { + if (fromTimestamp != null) { // Round timestamps to the nearest 60m fromTimestamp = Math.floor(Math.round(fromTimestamp / 3600) * 3600); } diff --git a/packages/api/src/vaults/fetchFees.ts b/packages/api/src/vaults/fetchFees.ts index f9a51d01..4e32ff12 100644 --- a/packages/api/src/vaults/fetchFees.ts +++ b/packages/api/src/vaults/fetchFees.ts @@ -1,5 +1,5 @@ import config from '@nftx/config'; -import type { VaultFeeReceipt } from '@nftx/types'; +import type { Address, VaultFeeReceipt } from '@nftx/types'; import { queryApi } from '../utils'; /** Get recent fee receipts across all vaults */ @@ -14,12 +14,12 @@ const fetchFees = ({ network?: number; /** Timestamp (in seconds). The given timestamp will be rounded to the nearest hour */ fromTimestamp?: number; - vaultAddress?: string; - vaultAddresses?: string[]; + vaultAddress?: Address; + vaultAddresses?: Address[]; vaultId?: string; vaultIds?: string[]; }) => { - if (fromTimestamp) { + if (fromTimestamp != null) { // Round timestamps to the nearest 60m fromTimestamp = Math.floor(Math.round(fromTimestamp / 3600) * 3600); } diff --git a/packages/api/src/vaults/fetchManagedVaults.ts b/packages/api/src/vaults/fetchManagedVaults.ts index 851f6782..97413209 100644 --- a/packages/api/src/vaults/fetchManagedVaults.ts +++ b/packages/api/src/vaults/fetchManagedVaults.ts @@ -1,5 +1,5 @@ import config from '@nftx/config'; -import type { Vault } from '@nftx/types'; +import type { Address, Vault } from '@nftx/types'; import { queryApi } from '../utils'; /** Get vaults created and managed by a user */ @@ -8,7 +8,7 @@ const fetchManagedVaults = ({ network = config.network, }: { network?: number; - userAddress: string; + userAddress: Address; }) => { return queryApi({ url: `/${network}/users/${userAddress}/vaults`, diff --git a/packages/api/src/vaults/fetchVaultActivity.ts b/packages/api/src/vaults/fetchVaultActivity.ts index 930928a0..bfa128b9 100644 --- a/packages/api/src/vaults/fetchVaultActivity.ts +++ b/packages/api/src/vaults/fetchVaultActivity.ts @@ -12,7 +12,7 @@ const fetchVaultActivity = ({ fromTimestamp?: number; vaultId: string; }) => { - if (fromTimestamp) { + if (fromTimestamp != null) { // Round timestamps to the nearest 60m fromTimestamp = Math.floor(Math.round(fromTimestamp / 3600) * 3600); } diff --git a/packages/api/src/vaults/fetchVaultFees.ts b/packages/api/src/vaults/fetchVaultFees.ts index cc01a2ed..6974f4af 100644 --- a/packages/api/src/vaults/fetchVaultFees.ts +++ b/packages/api/src/vaults/fetchVaultFees.ts @@ -12,7 +12,7 @@ const fetchVaultFees = ({ fromTimestamp?: number; vaultId: string; }) => { - if (fromTimestamp) { + if (fromTimestamp != null) { // Round timestamps to the nearest 60m fromTimestamp = Math.floor(Math.round(fromTimestamp / 3600) * 3600); } diff --git a/packages/api/src/vaults/fetchVaults.ts b/packages/api/src/vaults/fetchVaults.ts index e62bceae..fab7e606 100644 --- a/packages/api/src/vaults/fetchVaults.ts +++ b/packages/api/src/vaults/fetchVaults.ts @@ -1,5 +1,5 @@ import config from '@nftx/config'; -import type { Vault } from '@nftx/types'; +import type { Address, Vault } from '@nftx/types'; import { queryApi } from '../utils'; const fetchVaults = ({ @@ -16,9 +16,9 @@ const fetchVaults = ({ network?: number; vaultId?: string; vaultIds?: string[]; - vaultAddress?: string; - vaultAddresses?: string[]; - manager?: string; + vaultAddress?: Address; + vaultAddresses?: Address[]; + manager?: Address; includeEmptyVaults?: boolean; finalisedOnly?: boolean; enabledOnly?: boolean; diff --git a/packages/config/rollup.config.js b/packages/config/rollup.config.js index a234616d..f79fddc3 100644 --- a/packages/config/rollup.config.js +++ b/packages/config/rollup.config.js @@ -1,13 +1,7 @@ -import { readdirSync } from 'fs'; import base from '../../rollup.base'; -const abis = readdirSync('../constants/abis') - .filter((filename) => filename.endsWith('.json')) - .map((filename) => `@nftx/constants/abis/${filename}`); - const config = { ...base, - external: [...base.external, ...abis], output: base.output.map((o) => ({ ...o, exports: 'default', diff --git a/packages/config/src/index.ts b/packages/config/src/index.ts index 8d827b85..b866db31 100644 --- a/packages/config/src/index.ts +++ b/packages/config/src/index.ts @@ -66,8 +66,43 @@ export interface Config { NFTX_API: string; ALCHEMY: Record; }; + /** Internal config settings managed by nftx.js */ + internal: { + source: 'api' | 'live'; + requiredBlockNumber: number; + apiBlockNumber: number; + cacheKey: string; + }; } +const storeSetting = (obj: T, name: K) => { + if ( + typeof window === 'undefined' || + typeof window?.localStorage?.getItem !== 'function' + ) { + return; + } + let defaultValue = JSON.stringify(obj[name]); + const key = `nftxjs_itl_${String(name)}`; + Object.defineProperty(obj, name, { + configurable: true, + enumerable: true, + get() { + return JSON.parse(window.localStorage.getItem(key) ?? defaultValue); + }, + set(v) { + const formatted = JSON.stringify(v); + defaultValue = formatted; + window.localStorage.setItem(key, formatted); + }, + }); +}; +const storeSettings = >(obj: T) => { + Object.keys(obj).forEach((key: keyof T) => { + storeSetting(obj, key); + }); +}; + const defaultConfig: Config = { network: Network.Mainnet, subgraph: { @@ -96,9 +131,16 @@ const defaultConfig: Config = { }, keys: { - NFTX_API: null, + NFTX_API: null as unknown as string, ALCHEMY: {}, }, + + internal: { + source: 'api', + requiredBlockNumber: 0, + apiBlockNumber: 0, + cacheKey: '', + }, }; export type DeepPartial = { @@ -129,9 +171,13 @@ const config: Config & { configure(opts: DeepPartial) { const merged = merge(config, opts, { arrayMerge: (_, arr) => arr }); Object.entries(merged).forEach(([key, value]) => { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore config[key] = value; }); }, }; +storeSettings(config.internal); + export default config; diff --git a/packages/constants/abis/CryptoPunks.json b/packages/constants/abis/CryptoPunks.json deleted file mode 100644 index 957cc75a..00000000 --- a/packages/constants/abis/CryptoPunks.json +++ /dev/null @@ -1 +0,0 @@ -[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"punksOfferedForSale","outputs":[{"name":"isForSale","type":"bool"},{"name":"punkIndex","type":"uint256"},{"name":"seller","type":"address"},{"name":"minValue","type":"uint256"},{"name":"onlySellTo","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"punkIndex","type":"uint256"}],"name":"enterBidForPunk","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"punkIndex","type":"uint256"},{"name":"minPrice","type":"uint256"}],"name":"acceptBidForPunk","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"addresses","type":"address[]"},{"name":"indices","type":"uint256[]"}],"name":"setInitialOwners","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"imageHash","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"nextPunkIndexToAssign","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"punkIndexToAddress","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"standard","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"punkBids","outputs":[{"name":"hasBid","type":"bool"},{"name":"punkIndex","type":"uint256"},{"name":"bidder","type":"address"},{"name":"value","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"allInitialOwnersAssigned","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"allPunksAssigned","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"punkIndex","type":"uint256"}],"name":"buyPunk","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"punkIndex","type":"uint256"}],"name":"transferPunk","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"punkIndex","type":"uint256"}],"name":"withdrawBidForPunk","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"punkIndex","type":"uint256"}],"name":"setInitialOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"punkIndex","type":"uint256"},{"name":"minSalePriceInWei","type":"uint256"},{"name":"toAddress","type":"address"}],"name":"offerPunkForSaleToAddress","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"punksRemainingToAssign","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"punkIndex","type":"uint256"},{"name":"minSalePriceInWei","type":"uint256"}],"name":"offerPunkForSale","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"punkIndex","type":"uint256"}],"name":"getPunk","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"pendingWithdrawals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"punkIndex","type":"uint256"}],"name":"punkNoLongerForSale","outputs":[],"payable":false,"type":"function"},{"inputs":[],"payable":true,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"punkIndex","type":"uint256"}],"name":"Assign","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"punkIndex","type":"uint256"}],"name":"PunkTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"punkIndex","type":"uint256"},{"indexed":false,"name":"minValue","type":"uint256"},{"indexed":true,"name":"toAddress","type":"address"}],"name":"PunkOffered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"punkIndex","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":true,"name":"fromAddress","type":"address"}],"name":"PunkBidEntered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"punkIndex","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":true,"name":"fromAddress","type":"address"}],"name":"PunkBidWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"punkIndex","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":true,"name":"fromAddress","type":"address"},{"indexed":true,"name":"toAddress","type":"address"}],"name":"PunkBought","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"punkIndex","type":"uint256"}],"name":"PunkNoLongerForSale","type":"event"}] diff --git a/packages/constants/abis/ERC721.json b/packages/constants/abis/ERC721.json deleted file mode 100644 index 400a2d10..00000000 --- a/packages/constants/abis/ERC721.json +++ /dev/null @@ -1 +0,0 @@ -[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"string","name":"tokenURI","type":"string"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}] diff --git a/packages/constants/abis/NFTXEligibility.json b/packages/constants/abis/NFTXEligibility.json deleted file mode 100644 index 35471f34..00000000 --- a/packages/constants/abis/NFTXEligibility.json +++ /dev/null @@ -1 +0,0 @@ -[{"inputs":[{"internalType":"bytes","name":"initData","type":"bytes"}],"name":"__NFTXEligibility_init_bytes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"afterMintHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"afterRedeemHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"beforeMintHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"beforeRedeemHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"checkAllEligible","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"checkAllIneligible","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"checkEligible","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"checkIsEligible","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"targetAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"}] diff --git a/packages/constants/package.json b/packages/constants/package.json index 90ec87fa..750ba672 100644 --- a/packages/constants/package.json +++ b/packages/constants/package.json @@ -19,18 +19,11 @@ }, "scripts": { "test": "echo \"no tests\"", - "gen-abi-types": "find abis -name '*.json' -exec yarn abi-types-generator {} --provider=ethers_v5 \\;", - "build": "rm -rf dist && rollup -c && tsc -d --outDir dist/ts --emitDeclarationOnly && yarn gen-abi-types", + "build": "rm -rf dist && rollup -c && tsc -d --outDir dist/ts --emitDeclarationOnly", "prepublishOnly": "yarn build", "docs": "jsdoc -c ../../jsdoc.js src" }, "bugs": { "url": "https://github.com/NFTX-project/nftxjs/issues" - }, - "devDependencies": { - "ethereum-abi-types-generator": "^1.3.2" - }, - "peeDependencies": { - "ethereum-abi-types-generator": "^1.3.2" } } diff --git a/packages/constants/src/addresses.ts b/packages/constants/src/addresses.ts index 942597da..bbb0d38e 100644 --- a/packages/constants/src/addresses.ts +++ b/packages/constants/src/addresses.ts @@ -1,99 +1,104 @@ import { Network } from './networks'; +type Address = `0x${string}`; + /** * The Cryptokitty contract (Doesn't implement 721 properly) */ -export const CRYPTOKITTIES = '0x06012c8cf97bead5deae237070f9587f8e7a266d'; +export const CRYPTOKITTIES = + '0x06012c8cf97bead5deae237070f9587f8e7a266d' as Address; /** * The Punk contract (doesn't implement 721) */ -export const CRYPTOPUNKS = '0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb'; +export const CRYPTOPUNKS = + '0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb' as Address; /** The address for WETH across networks */ export const WETH_TOKEN = { - [Network.Mainnet]: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', - [Network.Arbitrum]: '0x82af49447d8a07e3bd95bd0d56f35241523fbab1', - [Network.Goerli]: '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6', + [Network.Mainnet]: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' as Address, + [Network.Arbitrum]: '0x82af49447d8a07e3bd95bd0d56f35241523fbab1' as Address, + [Network.Goerli]: '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6' as Address, }; /** The address for USDC across networks */ export const USDC = { - [Network.Mainnet]: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', - [Network.Arbitrum]: '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8', - [Network.Goerli]: '0x2f3a40a3db8a7e3d09b0adfefbce4f6f81927557', + [Network.Mainnet]: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' as Address, + [Network.Arbitrum]: '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8' as Address, + [Network.Goerli]: '0x2f3a40a3db8a7e3d09b0adfefbce4f6f81927557' as Address, }; -export const OPENSEA_COLLECTION = '0x495f947276749ce646f68ac8c248420045cb7b5e'; +export const OPENSEA_COLLECTION = + '0x495f947276749ce646f68ac8c248420045cb7b5e' as Address; export const MULTICALL = { - [Network.Mainnet]: '0xeefba1e63905ef1d7acba5a8513c70307c1ce441', - [Network.Arbitrum]: '0x8a0bd1773139C6609e861B9ab68082587a3cD581', - [Network.Goerli]: '0x77dCa2C955b15e9dE4dbBCf1246B4B85b651e50e', + [Network.Mainnet]: '0xeefba1e63905ef1d7acba5a8513c70307c1ce441' as Address, + [Network.Arbitrum]: '0x8a0bd1773139C6609e861B9ab68082587a3cD581' as Address, + [Network.Goerli]: '0x77dCa2C955b15e9dE4dbBCf1246B4B85b651e50e' as Address, }; export const NFTX_LP_STAKING = { - [Network.Mainnet]: '0x688c3E4658B5367da06fd629E41879beaB538E37', - [Network.Arbitrum]: '0x5326A720f76CFbDfE9e18fA618C3a3f7AbDF3934', - [Network.Goerli]: '0xAfC303423580239653aFB6fb06d37D666ea0f5cA', + [Network.Mainnet]: '0x688c3E4658B5367da06fd629E41879beaB538E37' as Address, + [Network.Arbitrum]: '0x5326A720f76CFbDfE9e18fA618C3a3f7AbDF3934' as Address, + [Network.Goerli]: '0xAfC303423580239653aFB6fb06d37D666ea0f5cA' as Address, }; export const NFTX_INVENTORY_STAKING = { - [Network.Mainnet]: '0x3E135c3E981fAe3383A5aE0d323860a34CfAB893', - [Network.Arbitrum]: '0x1A2C03ABD4Af7C87d8b4d5aD39b56fa98E8C4Cc6', - [Network.Goerli]: '0x6e91A3f27cE6753f47C66B76B03E6A7bFdDB605B', + [Network.Mainnet]: '0x3E135c3E981fAe3383A5aE0d323860a34CfAB893' as Address, + [Network.Arbitrum]: '0x1A2C03ABD4Af7C87d8b4d5aD39b56fa98E8C4Cc6' as Address, + [Network.Goerli]: '0x6e91A3f27cE6753f47C66B76B03E6A7bFdDB605B' as Address, }; export const NFTX_STAKING_ZAP = { - [Network.Mainnet]: '0xdc774d5260ec66e5dd4627e1dd800eff3911345c', - [Network.Arbitrum]: '0xfb8664E4EB4d2F8B0220d358d0d9C4896DC84959', - [Network.Goerli]: '0x775e23b64610dA2806dc5ed3b0862955e122DDc6', + [Network.Mainnet]: '0xdc774d5260ec66e5dd4627e1dd800eff3911345c' as Address, + [Network.Arbitrum]: '0xfb8664E4EB4d2F8B0220d358d0d9C4896DC84959' as Address, + [Network.Goerli]: '0x775e23b64610dA2806dc5ed3b0862955e122DDc6' as Address, }; export const NFTX_UNSTAKING_INVENTORY_ZAP = { - [Network.Mainnet]: '0x2374a32ab7b4f7BE058A69EA99cb214BFF4868d3', - [Network.Arbitrum]: '0xB25Ea886FcE4bfDC8750Cb2D4464FE3F7A67bc07', - [Network.Goerli]: '0x8B9D81fF1845375379865c0997bcFf538513Eae1', + [Network.Mainnet]: '0x2374a32ab7b4f7BE058A69EA99cb214BFF4868d3' as Address, + [Network.Arbitrum]: '0xB25Ea886FcE4bfDC8750Cb2D4464FE3F7A67bc07' as Address, + [Network.Goerli]: '0x8B9D81fF1845375379865c0997bcFf538513Eae1' as Address, }; export const NFTX_MARKETPLACE_ZAP = { - [Network.Mainnet]: '0x0fc584529a2AEfA997697FAfAcbA5831faC0c22d', - [Network.Arbitrum]: '0x66f26E38bD50FD52A50da8E87E435f04f98001B7', - [Network.Goerli]: '0x528bDBe1DB8452bD4643F85695eE0628D900C195', + [Network.Mainnet]: '0x0fc584529a2AEfA997697FAfAcbA5831faC0c22d' as Address, + [Network.Arbitrum]: '0x66f26E38bD50FD52A50da8E87E435f04f98001B7' as Address, + [Network.Goerli]: '0x528bDBe1DB8452bD4643F85695eE0628D900C195' as Address, }; export const NFTX_MARKETPLACE_0X_ZAP = { - [Network.Mainnet]: '0x941A6d105802CCCaa06DE58a13a6F49ebDCD481C', - [Network.Arbitrum]: '0x3BD7512966CbC3406962f8877edbE80aea8A2904', - [Network.Goerli]: '0x177246Adb119ed83f982d1e3c4859F354578D5eF', + [Network.Mainnet]: '0x941A6d105802CCCaa06DE58a13a6F49ebDCD481C' as Address, + [Network.Arbitrum]: '0x3BD7512966CbC3406962f8877edbE80aea8A2904' as Address, + [Network.Goerli]: '0x177246Adb119ed83f982d1e3c4859F354578D5eF' as Address, }; export const NFTX_VAULT_FACTORY = { - [Network.Mainnet]: '0xBE86f647b167567525cCAAfcd6f881F1Ee558216', - [Network.Arbitrum]: '0xE77b89FEc41A7b7dC74eb33602e82F0672FbB33C', - [Network.Goerli]: '0x1478bEB5D18B23d2bA90FcEe91d66460AC585e6b', + [Network.Mainnet]: '0xBE86f647b167567525cCAAfcd6f881F1Ee558216' as Address, + [Network.Arbitrum]: '0xE77b89FEc41A7b7dC74eb33602e82F0672FbB33C' as Address, + [Network.Goerli]: '0x1478bEB5D18B23d2bA90FcEe91d66460AC585e6b' as Address, }; export const SUSHISWAP_ROUTER = { - [Network.Mainnet]: '0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9F', - [Network.Arbitrum]: '0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506', - [Network.Goerli]: '0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506', + [Network.Mainnet]: '0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9F' as Address, + [Network.Arbitrum]: '0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506' as Address, + [Network.Goerli]: '0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506' as Address, }; export const UNISWAP_QUOTER = { - [Network.Mainnet]: '0xb27308f9f90d607463bb33ea1bebb41c27ce5ab6', - [Network.Goerli]: '0xb27308f9f90d607463bb33ea1bebb41c27ce5ab6', + [Network.Mainnet]: '0xb27308f9f90d607463bb33ea1bebb41c27ce5ab6' as Address, + [Network.Goerli]: '0xb27308f9f90d607463bb33ea1bebb41c27ce5ab6' as Address, }; /** ENS Address */ export const ENS_REGISTRAR = { - [Network.Mainnet]: '0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85', - [Network.Arbitrum]: '0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85', - [Network.Goerli]: '0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85', + [Network.Mainnet]: '0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85' as Address, + [Network.Arbitrum]: '0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85' as Address, + [Network.Goerli]: '0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85' as Address, }; export const VAULT_CREATION_ZAP = { - [Network.Mainnet]: '0xA42ecABB4ADEd01600d6e84A3Ee7785e3A506D37', - [Network.Arbitrum]: '0x4164C90589E596239a31579417775C980f446103', - [Network.Goerli]: '0x4Af99Db0DF1cb904933C6622C01b93496a567823', + [Network.Mainnet]: '0xA42ecABB4ADEd01600d6e84A3Ee7785e3A506D37' as Address, + [Network.Arbitrum]: '0x4164C90589E596239a31579417775C980f446103' as Address, + [Network.Goerli]: '0x4Af99Db0DF1cb904933C6622C01b93496a567823' as Address, }; diff --git a/packages/constants/src/index.ts b/packages/constants/src/index.ts index b3387f85..bfe44ae2 100644 --- a/packages/constants/src/index.ts +++ b/packages/constants/src/index.ts @@ -2,3 +2,4 @@ export * from './addresses'; export * from './networks'; export * from './subgraph'; export * from './urls'; +export * from './values'; diff --git a/packages/constants/src/urls.ts b/packages/constants/src/urls.ts index 52af25d1..bee4a087 100644 --- a/packages/constants/src/urls.ts +++ b/packages/constants/src/urls.ts @@ -25,4 +25,4 @@ export const ALCHEMY_URL = { [Network.Arbitrum]: 'https://arb-mainnet.g.alchemy.com', }; -export const NFTX_API_URL = 'https://api-v4.nftx.xyz'; +export const NFTX_API_URL = 'https://api-v3.nftx.xyz'; diff --git a/packages/constants/src/values.ts b/packages/constants/src/values.ts new file mode 100644 index 00000000..2cb60208 --- /dev/null +++ b/packages/constants/src/values.ts @@ -0,0 +1,4 @@ +export const WeiPerEther = 1000000000000000000n; +export const Zero = 0n; +export const MaxUint256 = + 115792089237316195423570985008687907853269984665640564039457584007913129639936n; diff --git a/packages/core/package.json b/packages/core/package.json index b5da77f7..5ed24c87 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -19,23 +19,17 @@ }, "scripts": { "lint": "eslint --fix -c ../../.eslintrc.js --ext ts,tsx src && tsc --noEmit", - "test": "echo \"no tests\" #jest --config ../../jest.config.js", + "test": "jest --config ../../jest.config.js", "build": "rm -rf dist && rollup -c && tsc -d --outDir dist/ts --emitDeclarationOnly", "prepublishOnly": "yarn build" }, - "peerDependencies": { - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/providers": "^5.6.2", - "@ethersproject/units": "^5.6.0", - "ethers": "^5.6.2" - }, "dependencies": { + "@nftx/abi": "^0.9.0", "@nftx/config": "^0.9.5", "@nftx/constants": "^0.9.5", "@nftx/subgraph": "^0.9.5", "@nftx/types": "^0.9.0", - "@nftx/utils": "^0.9.5" + "@nftx/utils": "^0.9.0" }, "devDependencies": { "@ethersproject/abi": "^5.6.0", diff --git a/packages/core/rollup.config.js b/packages/core/rollup.config.js index 2d42fd1d..5a63469a 100644 --- a/packages/core/rollup.config.js +++ b/packages/core/rollup.config.js @@ -1,13 +1,7 @@ -import { readdirSync } from 'fs'; import base from '../../rollup.base'; -const abis = readdirSync('../constants/abis') - .filter((filename) => filename.endsWith('.json')) - .map((filename) => `@nftx/constants/abis/${filename}`); - const config = { ...base, - external: [...base.external, ...abis], }; export default config; diff --git a/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsAlchemy/__tests__/fetchAssetsAlchemy.test.ts b/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsAlchemy/__tests__/fetchAssetsAlchemy.test.ts new file mode 100644 index 00000000..8e2782dd --- /dev/null +++ b/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsAlchemy/__tests__/fetchAssetsAlchemy.test.ts @@ -0,0 +1,126 @@ +import type { Address } from '@nftx/types'; +import { parseEther } from 'viem'; +import { createCursor } from '../cursor'; +import fetchAssetsAlchemy from '../fetchAssetsAlchemy'; +import type { Response } from '../types'; + +let response: Response; +let fetch: jest.Mock; +let assetAddresses: Address[]; +let cursor: string | undefined; +let userAddress: Address; +let run: () => ReturnType; + +beforeEach(() => { + response = { + blockHash: '', + totalCount: '1', + ownedNfts: [ + { + id: { + tokenId: '1', + }, + balance: '1', + contract: { + address: '0x0', + }, + }, + ], + }; + fetch = jest.fn().mockResolvedValue({ + ok: true, + json: jest.fn().mockResolvedValue(response), + text: jest.fn().mockResolvedValue('some error text'), + }); + assetAddresses = new Array(5).fill('0x001'); + cursor = ''; + userAddress = '0x000'; + + run = () => + fetchAssetsAlchemy({ + assetAddresses, + cursor, + fetch, + network: 1, + userAddress, + }); +}); + +describe('when there are no asset addresses', () => { + beforeEach(() => { + assetAddresses = []; + }); + + it('returns an empty list', async () => { + const { assets } = await run(); + + expect(assets).toHaveLength(0); + expect(fetch).not.toBeCalled(); + }); +}); + +it('fetches assets from alchemy for the given owner', async () => { + await run(); + + expect(fetch).toHaveBeenCalled(); +}); + +describe('when there is a cursor', () => { + beforeEach(() => { + cursor = createCursor('', assetAddresses, 'xyz'); + }); + + it('appends a pageKey parameter', async () => { + await run(); + + const url = fetch.mock.calls[0][0]; + expect(url).toContain('pageKey=xyz'); + }); +}); + +it('returns an array of all assets', async () => { + const { assets } = await run(); + + expect(assets).toEqual([ + { + assetAddress: '0x0', + id: '0x0/1', + metaUrl: 'https://api.nftx.xyz/asset/0x0/1?chainId=1', + quantity: parseEther('1'), + tokenId: '1', + }, + ]); +}); + +describe('when alchemy returns paginated results', () => { + beforeEach(() => { + response.pageKey = 'xyz'; + }); + + it('returns a cursor', async () => { + const { cursor } = await run(); + + expect(cursor).toBe('a__0x001__xyz'); + }); +}); + +describe('when alchemy returns a single page of results', () => { + it('does not return a cursor', async () => { + const { cursor } = await run(); + + expect(cursor).toBe(undefined); + }); +}); + +describe('when alchemy call fails', () => { + beforeEach(() => { + fetch = jest.fn().mockResolvedValue({ + ok: false, + json: jest.fn().mockResolvedValue(response), + text: jest.fn().mockResolvedValue('some error text'), + }); + }); + it('throws an error', async () => { + await expect(run()).rejects.toThrow(); + }); +}); diff --git a/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsAlchemy/cursor.ts b/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsAlchemy/cursor.ts index e4b5afa0..204a3506 100644 --- a/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsAlchemy/cursor.ts +++ b/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsAlchemy/cursor.ts @@ -1,7 +1,10 @@ -export const parseCursor = (cursor: string, assetAddresses: string[]) => { +export const parseCursor = ( + cursor: string | undefined, + assetAddresses: string[] +) => { let source: string; let firstAssetId: string = assetAddresses[0]; - let pageKey: string; + let pageKey: string | undefined; let startIndex = 0; let endIndex = Math.min(10, assetAddresses.length); @@ -18,9 +21,9 @@ export const parseCursor = (cursor: string, assetAddresses: string[]) => { }; export const createCursor = ( - cursor: string, + cursor: string | undefined, assetAddresses: string[], - pageKey: string + pageKey: string | undefined ) => { const { endIndex, firstAssetId } = parseCursor(cursor, assetAddresses); const parts = ['a']; @@ -30,7 +33,7 @@ export const createCursor = ( if (nextAssetId) { parts[1] = nextAssetId; } else { - return null; + return undefined; } } else { parts[1] = firstAssetId; diff --git a/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsAlchemy/fetchAssetsAlchemy.ts b/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsAlchemy/fetchAssetsAlchemy.ts index 5dbd060a..e3a222df 100644 --- a/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsAlchemy/fetchAssetsAlchemy.ts +++ b/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsAlchemy/fetchAssetsAlchemy.ts @@ -1,36 +1,41 @@ -import { parseEther } from '@ethersproject/units'; -import type { Asset } from '@nftx/types'; +import type { Address, Asset } from '@nftx/types'; +import { parseEther } from 'viem'; import { processAssetItems } from '../utils'; import { createCursor } from './cursor'; import getNextSet from './getNextSet'; import { BigNumber } from '@ethersproject/bignumber'; +type Fetch = typeof fetch; + const fetchAssetsAlchemy = async ({ assetAddresses, cursor, network, userAddress, + fetch, }: { - assetAddresses: string[]; + assetAddresses: Address[]; network: number; - userAddress: string; - cursor: string; -}): Promise<{ assets: Asset[]; cursor: string }> => { + userAddress: Address; + cursor?: string; + fetch: Fetch; +}): Promise<{ assets: Asset[]; cursor?: string }> => { if (!assetAddresses.length) { - return { assets: [], cursor: null }; + return { assets: [] }; } const data = await getNextSet({ assetAddresses, cursor, network, userAddress, + fetch, }); const assets = await processAssetItems({ network, items: data.ownedNfts.map((x) => ({ assetAddress: x.contract.address, - tokenId: BigNumber.from(x.id.tokenId).toString(), + tokenId: BigInt(x.id.tokenId).toString() as `${number}`, quantity: parseEther(x.balance ?? '1'), })), }); diff --git a/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsAlchemy/getNextSet.ts b/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsAlchemy/getNextSet.ts index e8ad1fb1..7dcf12ad 100644 --- a/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsAlchemy/getNextSet.ts +++ b/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsAlchemy/getNextSet.ts @@ -3,16 +3,20 @@ import { getChainConstant } from '@nftx/utils'; import { parseCursor } from './cursor'; import type { Response } from './types'; +type Fetch = typeof fetch; + const getNextSet = async ({ assetAddresses, cursor, network, userAddress, + fetch, }: { network: number; userAddress: string; assetAddresses: string[]; - cursor: string; + cursor?: string; + fetch: Fetch; }) => { let url = [ getChainConstant(config.urls.ALCHEMY_URL, network), diff --git a/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsAlchemy/types.ts b/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsAlchemy/types.ts index e8d49213..c63548d8 100644 --- a/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsAlchemy/types.ts +++ b/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsAlchemy/types.ts @@ -1,11 +1,13 @@ +import type { Address } from '@nftx/types'; + type OwnedNft = { - contract: { address: string }; - balance: string; - id: { tokenId: string }; + contract: { address: Address }; + balance: `${number}`; + id: { tokenId: `${number}` }; }; export type Response = { - pageKey: string; + pageKey?: string; totalCount: string; blockHash: string; ownedNfts: OwnedNft[]; diff --git a/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsSubgraph/cursor.ts b/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsSubgraph/cursor.ts index d227f57f..37aeba3a 100644 --- a/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsSubgraph/cursor.ts +++ b/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsSubgraph/cursor.ts @@ -1,7 +1,7 @@ -export const parseCursor = (cursor: string) => { - let next721Id: string; - let next1155Id: string; - let nextNonStandardId: number; +export const parseCursor = (cursor?: string) => { + let next721Id: string | undefined; + let next1155Id: string | undefined; + let nextNonStandardId: number | undefined; if (cursor) { const [source, n7, n1, nn] = cursor.split('__'); @@ -17,9 +17,9 @@ export const parseCursor = (cursor: string) => { }; export const createCursor = ( - next721Id: string, - next1155Id: string, - nextNonStandardId: number + next721Id?: string, + next1155Id?: string, + nextNonStandardId?: number ) => { if (next721Id || next1155Id || nextNonStandardId != null) { return [ diff --git a/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsSubgraph/erc1155.ts b/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsSubgraph/erc1155.ts index 28a27ba0..819f344b 100644 --- a/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsSubgraph/erc1155.ts +++ b/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsSubgraph/erc1155.ts @@ -1,23 +1,22 @@ -import { BigNumber } from '@ethersproject/bignumber'; -import { parseEther } from '@ethersproject/units'; import config from '@nftx/config'; import { gql, querySubgraph } from '@nftx/subgraph'; -import type { Asset } from '@nftx/types'; +import type { Address, Asset } from '@nftx/types'; import { getChainConstant } from '@nftx/utils'; +import { parseEther } from 'viem'; import { processAssetItems } from '../utils'; const LIMIT = 1000; type Response = { account: { - id: string; + id: Address; balances: Array<{ - id: string; - contract: { id: string }; + id: Address; + contract: { id: Address }; token: { - identifier: string; + identifier: `${number}`; }; - value: string; + value: `${number}`; }>; }; }; @@ -34,8 +33,8 @@ const erc1155 = async ({ assetAddresses: string[]; lastId?: string; retryCount?: number; -}): Promise<{ assets: Asset[]; nextId: string }> => { - let nextId: string; +}): Promise<{ assets: Asset[]; nextId?: string }> => { + let nextId: string | undefined; if (!assetAddresses.length) { return { assets: [], nextId }; @@ -90,9 +89,9 @@ const erc1155 = async ({ items: data?.account?.balances?.map((x) => { const assetAddress = x.contract.id; - const tokenId = BigNumber.from(x.token.identifier).toString(); + const tokenId = BigInt(x.token.identifier).toString() as `${number}`; const quantity = - Number(x.value) < 1 ? parseEther(x.value) : BigNumber.from(x.value); + Number(x.value) < 1 ? parseEther(x.value) : BigInt(x.value); return { assetAddress, tokenId, quantity }; }) ?? [], diff --git a/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsSubgraph/erc721.ts b/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsSubgraph/erc721.ts index 468c4685..c81b6c8e 100644 --- a/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsSubgraph/erc721.ts +++ b/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsSubgraph/erc721.ts @@ -2,7 +2,7 @@ import { Network } from '@nftx/constants'; import { gql, querySubgraph } from '@nftx/subgraph'; import config from '@nftx/config'; import { getChainConstant } from '@nftx/utils'; -import type { Asset } from '@nftx/types'; +import type { Address, Asset } from '@nftx/types'; import { processAssetItems } from '../utils'; const LIMIT = 1000; @@ -15,13 +15,13 @@ const erc721 = async ({ retryCount = 0, }: { network: number; - userAddress: string; - assetAddresses: string[]; + userAddress: Address; + assetAddresses: Address[]; lastId?: string; retryCount?: number; -}): Promise<{ assets: Asset[]; nextId: string }> => { +}): Promise<{ assets: Asset[]; nextId?: string }> => { let assets: Asset[] = []; - let nextId: string; + let nextId: string | undefined; if (!assetAddresses.length) { return { assets, nextId }; @@ -31,12 +31,12 @@ const erc721 = async ({ if (network === Network.Mainnet || network === Network.Goerli) { type Response = { account: { - id: string; + id: Address; tokens: Array<{ - id: string; - identifier: string; + id: Address; + identifier: `${number}`; contract: { - id: string; + id: Address; }; }>; }; @@ -81,12 +81,12 @@ const erc721 = async ({ } else if (network === Network.Arbitrum) { type Response = { account: { - id: string; + id: Address; tokens: Array<{ - id: string; - identifier: string; + id: Address; + identifier: `${number}`; contract: { - id: string; + id: Address; }; }>; }; @@ -123,7 +123,7 @@ const erc721 = async ({ assets = await processAssetItems({ network, items: data.account.tokens.map((x) => { - const [assetAddress] = x.id.split('/'); + const [assetAddress] = x.id.split('/') as [Address]; const tokenId = x.identifier; return { assetAddress, tokenId }; diff --git a/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsSubgraph/fetchAssetsSubgraph.ts b/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsSubgraph/fetchAssetsSubgraph.ts index cf4be9e8..df66df25 100644 --- a/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsSubgraph/fetchAssetsSubgraph.ts +++ b/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsSubgraph/fetchAssetsSubgraph.ts @@ -1,4 +1,4 @@ -import type { Asset } from '@nftx/types'; +import type { Address, Asset } from '@nftx/types'; import { createCursor, parseCursor } from './cursor'; import erc1155 from './erc1155'; import erc721 from './erc721'; @@ -11,10 +11,10 @@ const fetchAssetsSubgraph = async ({ userAddress, }: { cursor?: string; - assetAddresses: string[]; + assetAddresses: Address[]; network: number; - userAddress: string; -}): Promise<{ cursor: string; assets: Asset[] }> => { + userAddress: Address; +}): Promise<{ cursor?: string; assets: Asset[] }> => { let { next1155Id, next721Id, nextNonStandardId } = parseCursor(cursor); const allAssets: Asset[] = []; diff --git a/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsSubgraph/nonstandard.ts b/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsSubgraph/nonstandard.ts index f3b062d5..9ba48ff4 100644 --- a/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsSubgraph/nonstandard.ts +++ b/packages/core/src/assets/fetchUserCollectionAssets/fetchAssetsSubgraph/nonstandard.ts @@ -1,8 +1,7 @@ -import { BigNumber } from '@ethersproject/bignumber'; import { gql, querySubgraph } from '@nftx/subgraph'; import config from '@nftx/config'; import { getChainConstant } from '@nftx/utils'; -import type { Asset } from '@nftx/types'; +import type { Address, Asset } from '@nftx/types'; import { processAssetItems } from '../utils'; const LIMIT = 1000; @@ -10,8 +9,8 @@ const LIMIT = 1000; type Response = { account: { tokens: Array<{ - id: string; - identifier: string; + id: Address; + identifier: `${number}`; }>; }; }; @@ -24,12 +23,12 @@ const nonstandard = async ({ retryCount = 0, }: { network: number; - userAddress: string; - assetAddresses: string[]; + userAddress: Address; + assetAddresses: Address[]; lastId?: number; retryCount?: number; -}): Promise<{ assets: Asset[]; nextId: number }> => { - let nextId: number; +}): Promise<{ assets: Asset[]; nextId?: number }> => { + let nextId: number | undefined; if (!assetAddresses.length) { return { assets: [], nextId }; @@ -81,8 +80,8 @@ const nonstandard = async ({ network, items: data?.account?.tokens?.map((x) => { - const [assetAddress] = x.id.split('-'); - const tokenId = BigNumber.from(x.identifier).toString(); + const [assetAddress] = x.id.split('-') as [`${Address}`]; + const tokenId = BigInt(x.identifier).toString() as `${number}`; return { assetAddress, tokenId }; }) ?? [], }); diff --git a/packages/core/src/assets/fetchUserCollectionAssets/fetchUserCollectionAssets.ts b/packages/core/src/assets/fetchUserCollectionAssets/fetchUserCollectionAssets.ts index 2488601d..9d06f685 100644 --- a/packages/core/src/assets/fetchUserCollectionAssets/fetchUserCollectionAssets.ts +++ b/packages/core/src/assets/fetchUserCollectionAssets/fetchUserCollectionAssets.ts @@ -1,4 +1,5 @@ import config from '@nftx/config'; +import type { Address } from '@nftx/types'; import { getChainConstant } from '@nftx/utils'; import fetchAssetsAlchemy from './fetchAssetsAlchemy'; import fetchAssetsSubgraph from './fetchAssetsSubgraph'; @@ -10,9 +11,9 @@ const fetchUserCollectionAssets = async ({ cursor, }: { network: number; - userAddress: string; + userAddress: Address; cursor?: string; - assetAddresses: string[]; + assetAddresses: Address[]; }) => { if ( getChainConstant(config.urls.ALCHEMY_URL, network, null) && @@ -25,8 +26,9 @@ const fetchUserCollectionAssets = async ({ cursor, network, userAddress, + fetch, }); - } catch (e) { + } catch (e: any) { if (e.message?.includes?.('falling back to subgraph')) { console.info(e.message); } else if (cursor == null) { diff --git a/packages/core/src/assets/fetchUserCollectionAssets/utils.ts b/packages/core/src/assets/fetchUserCollectionAssets/utils.ts index 58f65c6e..d22eba4e 100644 --- a/packages/core/src/assets/fetchUserCollectionAssets/utils.ts +++ b/packages/core/src/assets/fetchUserCollectionAssets/utils.ts @@ -14,7 +14,6 @@ export const processAssetItems = async ({ id: `${item.assetAddress}/${item.tokenId}`, assetAddress: item.assetAddress, tokenId: item.tokenId, - vaultId: null, metaUrl: `https://api.nftx.xyz/asset/${item.assetAddress}/${item.tokenId}?chainId=${network}`, quantity: item.quantity, }; diff --git a/packages/core/src/assets/fetchUserCollections/__tests__/fetchUserCollections.test.ts b/packages/core/src/assets/fetchUserCollections/__tests__/fetchUserCollections.test.ts new file mode 100644 index 00000000..03094234 --- /dev/null +++ b/packages/core/src/assets/fetchUserCollections/__tests__/fetchUserCollections.test.ts @@ -0,0 +1,83 @@ +import fetchUserCollectionsAlchemy from '../alchemy'; +import type { Response } from '../alchemy'; +import type { Address } from '@nftx/types'; + +let userAddress: Address; +let fetch: jest.Mock; +let response: { + ok: boolean; + json: jest.Mock; + text: jest.Mock; +}; +let data: Response; +let run: () => ReturnType; + +beforeEach(() => { + userAddress = '0x00'; + data = { + totalCount: 5, + contracts: [ + { + address: '0x0', + isSpam: false, + media: [{ bytes: 0, format: '', gateway: '', raw: '', thumbnail: '' }], + name: 'Gump', + numDistinctTokensOwned: 1, + symbol: 'GUMP', + tokenId: '1', + tokenType: 'ERC721', + totalBalance: 1, + totalSupply: '1', + }, + ], + }; + response = { + ok: true, + json: jest.fn().mockResolvedValue(data), + text: jest.fn().mockResolvedValue('some error text'), + }; + fetch = jest.fn().mockResolvedValue(response); + run = () => fetchUserCollectionsAlchemy({ fetch, network: 1, userAddress }); +}); + +it('fetches collection data from alchemy', async () => { + await run(); + + expect(fetch).toBeCalledTimes(1); +}); + +it('returns all collections owned by a user', async () => { + const result = await run(); + + expect(result).toEqual(data.contracts); +}); + +describe('when alchemy fails', () => { + beforeEach(() => { + response.ok = false; + }); + + it('throws an error', async () => { + await expect(run()).rejects.toThrow(); + }); +}); + +describe('when there are multiple pages', () => { + beforeEach(() => { + response.json.mockResolvedValueOnce({ + ...data, + pageKey: 'example-page-key', + }); + response.json.mockResolvedValueOnce({ + ...data, + pageKey: 'example-page-key-2', + }); + }); + + it('calls alchemy multiple times', async () => { + const result = await run(); + + expect(fetch).toBeCalledTimes(3); + expect(result).toHaveLength(3); + }); +}); diff --git a/packages/core/src/assets/fetchUserCollections/alchemy.ts b/packages/core/src/assets/fetchUserCollections/alchemy.ts index 8c2f7524..6321349f 100644 --- a/packages/core/src/assets/fetchUserCollections/alchemy.ts +++ b/packages/core/src/assets/fetchUserCollections/alchemy.ts @@ -1,26 +1,30 @@ import config from '@nftx/config'; -import type { Collection } from '@nftx/types'; +import type { Address, Collection } from '@nftx/types'; import { getChainConstant } from '@nftx/utils'; -type Response = { +export type Response = { totalCount: number; - pageKey: string; + pageKey?: string; contracts: Collection[]; }; +type Fetch = typeof fetch; + const fetchUserCollectionsAlchemy = async ({ network, userAddress, + fetch, }: { network: number; - userAddress: string; + userAddress: Address; + fetch: Fetch; }) => { const baseUrl = getChainConstant(config.urls.ALCHEMY_URL, network); const apiKey = getChainConstant(config.keys.ALCHEMY, network); const ownedCollections: Collection[] = []; - let cursor: string = null; + let cursor: string | undefined; do { const uri = new URL(`/nft/v2/${apiKey}/getContractsForOwner`, baseUrl); diff --git a/packages/core/src/assets/fetchUserCollections/fetchUserCollections.ts b/packages/core/src/assets/fetchUserCollections/fetchUserCollections.ts index e17a5589..02a684b6 100644 --- a/packages/core/src/assets/fetchUserCollections/fetchUserCollections.ts +++ b/packages/core/src/assets/fetchUserCollections/fetchUserCollections.ts @@ -1,20 +1,21 @@ import config from '@nftx/config'; +import type { Address } from '@nftx/types'; import { getChainConstant } from '@nftx/utils'; import fetchUserCollectionsAlchemy from './alchemy'; const fetchUserCollections = async ({ - network, + network = config.network, userAddress, }: { - network: number; - userAddress: string; + network?: number; + userAddress: Address; }) => { if ( getChainConstant(config.urls.ALCHEMY_URL, network, null) && getChainConstant(config.keys.ALCHEMY, network, null) ) { console.debug('fetching collections from alchemy'); - return fetchUserCollectionsAlchemy({ network, userAddress }); + return fetchUserCollectionsAlchemy({ network, userAddress, fetch }); } // @TODO do we need a painful and difficult opensea fallback? console.debug('no alchemy, no bueno'); diff --git a/packages/core/src/assets/fetchUserVaultAssets/__tests__/fetchUserVaultAssets.test.ts b/packages/core/src/assets/fetchUserVaultAssets/__tests__/fetchUserVaultAssets.test.ts new file mode 100644 index 00000000..3c25f6b3 --- /dev/null +++ b/packages/core/src/assets/fetchUserVaultAssets/__tests__/fetchUserVaultAssets.test.ts @@ -0,0 +1,210 @@ +import makeFetchUserVaultAssets from '../fetchUserVaultAssets'; +import type { Address, Asset } from '@nftx/types'; + +let fetchUserVaultAssets: ReturnType; +let run: () => ReturnType; +type Args = Parameters[0]; +let vaults: Args['vaults']; +let userAddress: Address; +let provider: any; +let assets: Asset[]; +let fetchUserCollectionAssets: jest.Mock; +let checkEligible: jest.Mock; +let fetchMerkleLeaves: jest.Mock; + +beforeEach(() => { + provider = {}; + userAddress = '0x00'; + vaults = [ + { + asset: { id: '0x01', name: 'Test', symbol: 'TEST' }, + eligibilityModule: null as any, + features: { + enableMint: true, + enableRandomRedeem: true, + enableRandomSwap: true, + enableTargetRedeem: true, + enableTargetSwap: true, + }, + vaultId: '999', + }, + ]; + assets = [ + { + assetAddress: '0x01', + id: '0x01/1', + metaUrl: '', + tokenId: '1', + }, + { + assetAddress: '0x01', + id: '0x01/2', + metaUrl: '', + tokenId: '2', + }, + { + assetAddress: '0x02', + id: '0x01/3', + metaUrl: '', + tokenId: '3', + }, + ]; + fetchUserCollectionAssets = jest.fn().mockResolvedValue({ assets }); + checkEligible = jest.fn(async ({ tokenIds }: { tokenIds: string[] }) => { + return tokenIds.map((tokenId) => ({ tokenId, eligible: true })); + }); + fetchMerkleLeaves = jest.fn().mockResolvedValue([]); + fetchUserVaultAssets = makeFetchUserVaultAssets({ + fetchUserCollectionAssets, + checkEligible, + fetchMerkleLeaves, + }); + run = () => + fetchUserVaultAssets({ network: 1, provider, userAddress, vaults }); +}); + +it('fetches all of a users assets', async () => { + await run(); + + expect(fetchUserCollectionAssets).toBeCalled(); + expect(fetchUserCollectionAssets).toBeCalledWith({ + assetAddresses: ['0x01'], + network: 1, + userAddress, + }); +}); + +it('returns all assets that have valid vaults', async () => { + const { assets } = await run(); + + expect(assets).toHaveLength(2); + expect(assets).toEqual([ + { + assetAddress: '0x01', + id: '0x01/1', + metaUrl: expect.any(String), + tokenId: '1', + vaultId: '999', + quantity: undefined, + }, + { + assetAddress: '0x01', + id: '0x01/2', + metaUrl: expect.any(String), + tokenId: '2', + vaultId: '999', + quantity: undefined, + }, + ]); +}); + +describe('when an asset is eligible for multiple vaults', () => { + beforeEach(() => { + vaults.push({ + asset: { id: '0x01', name: 'Test2', symbol: 'TEST2' }, + eligibilityModule: null as any, + features: { + enableMint: true, + enableRandomRedeem: true, + enableRandomSwap: true, + enableTargetRedeem: true, + enableTargetSwap: true, + }, + vaultId: '998', + }); + }); + + it('includes the asset multiple times', async () => { + const { assets } = await run(); + + expect(assets).toHaveLength(4); + expect(assets.map((x) => x.vaultId)).toEqual(['999', '999', '998', '998']); + }); +}); + +describe('when vault has a list of eligible ids', () => { + beforeEach(() => { + vaults[0].eligibilityModule = { + id: '0x1', + eligibleIds: ['2'], + eligibleRange: null as any, + merkleReference: null as any, + name: null as any, + }; + }); + + it('filters out ineligible assets', async () => { + const { assets } = await run(); + + expect(assets).toHaveLength(1); + expect(assets[0].id).toBe('0x01/2'); + + expect(checkEligible).toBeCalled(); + }); +}); +describe('when vault has an eligibility module', () => { + beforeEach(() => { + vaults[0].eligibilityModule = { + id: '0x1', + eligibleIds: null as any, + eligibleRange: null as any, + merkleReference: null as any, + name: null as any, + }; + checkEligible.mockImplementation( + async ({ tokenIds }: { tokenIds: string[] }) => { + return tokenIds.map((tokenId) => ({ + tokenId, + eligible: tokenId === '1', + })); + } + ); + }); + + it('filters out ineligible assets', async () => { + const { assets } = await run(); + + expect(assets).toHaveLength(1); + expect(assets[0].id).toBe('0x01/1'); + + expect(checkEligible).toHaveBeenCalled(); + expect(checkEligible).toHaveBeenCalledWith({ + provider, + tokenIds: ['1', '2'], + vault: vaults[0], + }); + }); +}); +describe('when vault has merkle eligibility', () => { + beforeEach(() => { + vaults[0].eligibilityModule = { + id: '0x1', + name: 'MerkleEligibilityTest', + eligibleIds: null as any, + eligibleRange: null as any, + merkleReference: null as any, + }; + fetchMerkleLeaves.mockResolvedValue(['1']); + }); + + it('filters out ineligible assets', async () => { + const { assets } = await run(); + + expect(assets).toHaveLength(1); + expect(assets[0].tokenId).toBe('1'); + + expect(fetchMerkleLeaves).toHaveBeenCalled(); + expect(checkEligible).not.toBeCalled(); + }); +}); +describe('when vault does not allow minting', () => { + beforeEach(() => { + vaults[0].features.enableMint = false; + }); + + it('filters out all assets for the vault', async () => { + const { assets } = await run(); + + expect(assets).toHaveLength(0); + }); +}); diff --git a/packages/core/src/assets/fetchUserVaultAssets/fetchUserVaultAssets.ts b/packages/core/src/assets/fetchUserVaultAssets/fetchUserVaultAssets.ts index 45420e32..67022664 100644 --- a/packages/core/src/assets/fetchUserVaultAssets/fetchUserVaultAssets.ts +++ b/packages/core/src/assets/fetchUserVaultAssets/fetchUserVaultAssets.ts @@ -1,39 +1,55 @@ -import type { Provider } from '@ethersproject/providers'; -import type { Vault } from '@nftx/types'; -import fetchUserCollectionAssets from '../fetchUserCollectionAssets'; +import type { Address, Provider, Vault } from '@nftx/types'; +import type { checkEligible, fetchMerkleLeaves } from '@nftx/utils'; +import type fetchUserCollectionAssets from '../fetchUserCollectionAssets'; import { processAssetItems } from './utils'; -const fetchUserVaultAssets = async ({ - network, - vaults, - userAddress, - cursor, - provider, -}: { - network: number; - userAddress: string; - cursor?: string; - vaults: Pick[]; - provider: Provider; -}) => { - const assetAddresses = [...new Set(vaults.map((v) => v.asset.id))]; +type FetchUserCollectionAssets = typeof fetchUserCollectionAssets; +type CheckEligible = typeof checkEligible; +type FetchMerkleLeaves = typeof fetchMerkleLeaves; - const { assets: allAssets, cursor: newCursor } = - await fetchUserCollectionAssets({ - assetAddresses, - network, - userAddress, - cursor, - }); - - const assets = await processAssetItems({ - items: allAssets, +export default ({ + fetchUserCollectionAssets, + checkEligible, + fetchMerkleLeaves, +}: { + fetchUserCollectionAssets: FetchUserCollectionAssets; + checkEligible: CheckEligible; + fetchMerkleLeaves: FetchMerkleLeaves; +}) => + async function fetchUserVaultAssets({ network, - provider, vaults, - }); + userAddress, + cursor, + provider, + }: { + network: number; + userAddress: Address; + cursor?: string; + vaults: Pick< + Vault, + 'asset' | 'vaultId' | 'eligibilityModule' | 'features' + >[]; + provider: Provider; + }) { + const assetAddresses = [...new Set(vaults.map((v) => v.asset.id))]; + + const { assets: allAssets, cursor: newCursor } = + await fetchUserCollectionAssets({ + assetAddresses, + network, + userAddress, + cursor, + }); - return { assets, cursor: newCursor }; -}; + const assets = await processAssetItems({ + items: allAssets, + network, + provider, + vaults, + checkEligible, + fetchMerkleLeaves, + }); -export default fetchUserVaultAssets; + return { assets, cursor: newCursor }; + }; diff --git a/packages/core/src/assets/fetchUserVaultAssets/utils.ts b/packages/core/src/assets/fetchUserVaultAssets/utils.ts index 68804b58..8c82aa8c 100644 --- a/packages/core/src/assets/fetchUserVaultAssets/utils.ts +++ b/packages/core/src/assets/fetchUserVaultAssets/utils.ts @@ -1,24 +1,29 @@ -import type { Provider } from '@ethersproject/providers'; -import type { Asset, Vault } from '@nftx/types'; +import type { Asset, Provider, Vault } from '@nftx/types'; import { addressEqual, - checkEligible, - fetchMerkleLeaves, + type checkEligible, + type fetchMerkleLeaves, isMerkleVault, } from '@nftx/utils'; type Item = Pick; +type CheckEligible = typeof checkEligible; +type FetchMerkleLeaves = typeof fetchMerkleLeaves; export const processAssetItems = async ({ items, network, provider, vaults, + checkEligible, + fetchMerkleLeaves, }: { items: Item[]; vaults: Pick[]; provider: Provider; network: number; + checkEligible: CheckEligible; + fetchMerkleLeaves: FetchMerkleLeaves; }) => { // Group all of the items by asset address const tokensByAsset = items.reduce((acc, item) => { @@ -51,28 +56,29 @@ export const processAssetItems = async ({ const leaves = await fetchMerkleLeaves({ provider, vault, - network, }); mintableItems = mintableItems.filter((item) => leaves.includes(item.tokenId) ); } else if (vault.eligibilityModule?.id && provider != null) { + // If we have an upfront list of eligible ids, we can quickly filter them out if (vault.eligibilityModule.eligibleIds) { mintableItems = mintableItems.filter(({ tokenId }) => vault.eligibilityModule.eligibleIds.includes(tokenId) ); } - // If the vault has an eligibility module, we need to verify they assets are eligible - const tokenIds = mintableItems.map((item) => item.tokenId); - const eligibleResults = await checkEligible({ - provider, - tokenIds, - vault, - network, - }); - mintableItems = mintableItems.filter( - (_, i) => eligibleResults[i].eligible - ); + if (mintableItems.length) { + // If the vault has an eligibility module, we need to verify they assets are eligible + const tokenIds = mintableItems.map((item) => item.tokenId); + const eligibleResults = await checkEligible({ + provider, + tokenIds, + vault, + }); + mintableItems = mintableItems.filter( + (_, i) => eligibleResults[i].eligible + ); + } } return mintableItems.map((item) => { diff --git a/packages/core/src/assets/fetchUserVaultCollections/alchemy.ts b/packages/core/src/assets/fetchUserVaultCollections/alchemy.ts index 7d082ad5..6bdc558a 100644 --- a/packages/core/src/assets/fetchUserVaultCollections/alchemy.ts +++ b/packages/core/src/assets/fetchUserVaultCollections/alchemy.ts @@ -1,4 +1,4 @@ -import type { Vault } from '@nftx/types'; +import type { Address, Vault } from '@nftx/types'; import { addressEqual, isCryptoKitty } from '@nftx/utils'; import fetchUserCollections from '../fetchUserCollections'; @@ -8,7 +8,7 @@ const fetchUserVaultCollectionsAlchemy = async ({ vaults, }: { network: number; - userAddress: string; + userAddress: Address; vaults: Pick[]; }) => { const contracts = await fetchUserCollections({ network, userAddress }); diff --git a/packages/core/src/assets/fetchUserVaultCollections/fetchUserVaultCollections.ts b/packages/core/src/assets/fetchUserVaultCollections/fetchUserVaultCollections.ts index 2d4cd670..8bcfa210 100644 --- a/packages/core/src/assets/fetchUserVaultCollections/fetchUserVaultCollections.ts +++ b/packages/core/src/assets/fetchUserVaultCollections/fetchUserVaultCollections.ts @@ -1,13 +1,14 @@ -import type { Vault } from '@nftx/types'; +import config from '@nftx/config'; +import type { Address, Vault } from '@nftx/types'; import fetchUserVaultCollectionsAlchemy from './alchemy'; const fetchUserVaultCollections = async ({ - network, + network = config.network, userAddress, vaults, }: { - network: number; - userAddress: string; + network?: number; + userAddress: Address; vaults: Pick[]; }) => { return fetchUserVaultCollectionsAlchemy({ network, userAddress, vaults }); diff --git a/packages/core/src/assets/index.ts b/packages/core/src/assets/index.ts index 824460c6..bc932996 100644 --- a/packages/core/src/assets/index.ts +++ b/packages/core/src/assets/index.ts @@ -1,5 +1,18 @@ -export { default as fetchUserCollectionAssets } from './fetchUserCollectionAssets'; -export { default as fetchUserCollections } from './fetchUserCollections'; -export { default as fetchUserVaultAssets } from './fetchUserVaultAssets'; -export { default as fetchUserVaultCollections } from './fetchUserVaultCollections'; +import { checkEligible, fetchMerkleLeaves } from '@nftx/utils'; +import fetchUserCollectionAssets from './fetchUserCollectionAssets'; +import fetchUserCollections from './fetchUserCollections'; +import makeFetchUserVaultAssets from './fetchUserVaultAssets'; +import fetchUserVaultCollections from './fetchUserVaultCollections'; export * from './types'; + +export { + fetchUserCollectionAssets, + fetchUserCollections, + fetchUserVaultCollections, +}; + +export const fetchUserVaultAssets = makeFetchUserVaultAssets({ + fetchUserCollectionAssets, + checkEligible, + fetchMerkleLeaves, +}); diff --git a/packages/core/src/assets/types.ts b/packages/core/src/assets/types.ts index 9152fe5b..e12f03bd 100644 --- a/packages/core/src/assets/types.ts +++ b/packages/core/src/assets/types.ts @@ -1,11 +1,11 @@ -import type { BigNumber } from '@ethersproject/bignumber'; +import type { Address } from '@nftx/types'; export type Asset = { id: string; - tokenId: string; - assetAddress: string; + tokenId: `${number}`; + assetAddress: Address; metaUrl: string; - quantity?: BigNumber; + quantity?: bigint; vaultId?: string; }; @@ -13,7 +13,7 @@ export type AssetMetadata = { name: string; traits: Record; api: 'covalent' | 'opensea'; - tokenId: string; + tokenId: `${number}`; assetName: string; openseaSlug: string; openseaBlocked: boolean; diff --git a/packages/core/src/pools/fetchLiquidityPools.ts b/packages/core/src/pools/fetchLiquidityPools.ts index d2a0a52b..745561a8 100644 --- a/packages/core/src/pools/fetchLiquidityPools.ts +++ b/packages/core/src/pools/fetchLiquidityPools.ts @@ -2,12 +2,12 @@ import { Network } from '@nftx/constants'; import { buildWhere, gql, querySubgraph } from '@nftx/subgraph'; import type { LiquidityPool } from './types'; import config from '@nftx/config'; -import type { Token, Vault } from '@nftx/types'; +import type { Address, Token, Vault } from '@nftx/types'; import { getChainConstant } from '@nftx/utils'; type Response = { pools: Array<{ - id: string; + id: Address; vault: Pick; deployBlock: string; stakingToken: Token; diff --git a/packages/core/src/pools/types.ts b/packages/core/src/pools/types.ts index 2eb4a7ae..5c281d20 100644 --- a/packages/core/src/pools/types.ts +++ b/packages/core/src/pools/types.ts @@ -1,7 +1,7 @@ -import type { Token } from '@nftx/types'; +import type { Address, Token } from '@nftx/types'; export type LiquidityPool = { - id: string; + id: Address; /** the sushi token i.e. PUNK-ETH */ stakingToken: Token; /** The address of the token you mint when you stake i.e. xPUNK */ @@ -9,14 +9,14 @@ export type LiquidityPool = { /** The token rewarded for staking i.e. PUNK */ rewardToken: Token; deployBlock: string; - vaultAddress: string; + vaultAddress: Address; vaultId: string; }; export type InventoryPool = { /** the xToken address */ - id: string; + id: Address; dividendToken: Token; - vaultAddress: string; + vaultAddress: Address; vaultId: string; }; diff --git a/packages/core/src/positions/__tests__/fetchPosition.test.ts b/packages/core/src/positions/__tests__/fetchPosition.test.ts new file mode 100644 index 00000000..09c3e7cf --- /dev/null +++ b/packages/core/src/positions/__tests__/fetchPosition.test.ts @@ -0,0 +1,162 @@ +import type { + Address, + TokenReserve, + UserVaultBalance, + Vault, +} from '@nftx/types'; +import { formatEther, parseEther } from 'viem'; +import type { LiquidityPool } from '../../pools'; +import makeFetchPositon from '../fetchPosition'; + +let fetchClaimableTokens: jest.Mock; +let fetchPool: jest.Mock; +let fetchTotalSupply: jest.Mock; +let fetchUserVaultBalance: jest.Mock; +let fetchVault: jest.Mock; +let fetchVaultAprs: jest.Mock; +let fetchXTokenShare: jest.Mock; +let fetchReservesForToken: jest.Mock; +let liquidityPool: { + stakingToken: { + id: LiquidityPool['stakingToken']['id']; + }; + dividendToken: { + id: LiquidityPool['dividendToken']['id']; + }; +}; +let userVaultBalances: UserVaultBalance[]; +let balanceOf: jest.Mock; +let fetchVaultFees: jest.Mock; +let vault: { + id: Vault['id']; + vaultId: Vault['vaultId']; + inventoryStakingPool?: { + id: Vault['inventoryStakingPool']['id']; + }; + createdAt: Vault['createdAt']; +}; +let reserves: TokenReserve; +let userAddress: Address; +let provider: any; +let fetchPosition: ReturnType; +let run: () => ReturnType; + +beforeEach(() => { + provider = {}; + userAddress = '0x00'; + vault = { + createdAt: new Date('2022-01-01').getTime() / 1000, + id: '0x01', + vaultId: '999', + inventoryStakingPool: { + id: '0x02', + }, + }; + liquidityPool = { + dividendToken: { + id: '0x03', + }, + stakingToken: { + id: '0x04', + }, + }; + reserves = { + derivedEth: '', + midPrice: parseEther('0.01'), + reserveVtoken: parseEther('10'), + reserveWeth: parseEther('10'), + tokenId: vault.id, + }; + userVaultBalances = [ + { + type: 'xToken' as any, + address: '0x', + name: '', + symbol: '', + vaultId: vault.vaultId, + balance: parseEther('1'), + }, + { + type: 'xTokenWETH' as any, + address: '0x', + name: '', + symbol: '', + vaultId: vault.vaultId, + balance: parseEther('1'), + }, + ]; + + // The Staking Contract's LP balance (amount of staked lp in the pool) + balanceOf = jest.fn().mockResolvedValue(parseEther('10')); + // Amount of vToken the user can claim + fetchClaimableTokens = jest.fn().mockResolvedValue(parseEther('0.1')); + fetchPool = jest.fn().mockResolvedValue(liquidityPool); + fetchReservesForToken = jest.fn().mockResolvedValue(reserves); + fetchTotalSupply = jest.fn( + async ({ tokenAddress }: { tokenAddress: string }) => { + switch (tokenAddress) { + // Total LP in the pool (for this test we're just saying that 100% of the LP in the pool is staked) + case liquidityPool.stakingToken.id: + return parseEther('10'); + // The total amount of IP in the pool + case vault.inventoryStakingPool?.id: + return parseEther('5'); + // xSlpSupply + case liquidityPool.dividendToken.id: + return parseEther('10'); + } + } + ); + fetchUserVaultBalance = jest.fn().mockResolvedValue(userVaultBalances); + fetchVault = jest.fn().mockResolvedValue(vault); + fetchVaultAprs = jest.fn().mockResolvedValue([ + { + vaultAddress: vault.id, + inventoryApr: 0.2, + liquidityApr: 0.8, + }, + ]); + fetchVaultFees = jest.fn().mockResolvedValue([ + { + amount: parseEther('0.001'), + }, + ]); + fetchXTokenShare = jest.fn().mockResolvedValue(parseEther('1')); + + fetchPosition = makeFetchPositon({ + balanceOf, + fetchClaimableTokens, + fetchPool, + fetchReservesForToken, + fetchTotalSupply, + fetchUserVaultBalance, + fetchVault, + fetchVaultAprs, + fetchVaultFees, + fetchXTokenShare, + }); + run = () => + fetchPosition({ + provider, + userAddress, + vaultAddress: vault.id, + }); +}); + +it('returns a single position for a user/vault', async () => { + const position = await run(); + + expect(formatEther(position.claimableAmount)).toBe('0.1'); + expect(formatEther(position.claimableValue)).toBe('0.1'); + expect(position.inventoryApr).toBe(0.2); + expect(formatEther(position.inventoryShare)).toBe('0.2'); + expect(position.inventorySplit).toBe(1 / 3); + expect(formatEther(position.inventoryTokens)).toBe('1'); + expect(formatEther(position.inventoryValue)).toBe('0.01'); + expect(position.liquidityApr).toBe(0.8); + expect(formatEther(position.liquidityEth)).toBe('1'); + expect(formatEther(position.liquidityShare)).toBe('0.1'); + expect(position.liquiditySplit).toBe(1 - 1 / 3); + expect(formatEther(position.liquidityTokens)).toBe('1'); + expect(formatEther(position.liquidityValue)).toBe('2'); +}); diff --git a/packages/core/src/positions/fetchPosition.ts b/packages/core/src/positions/fetchPosition.ts index 4dc11956..6cf3f277 100644 --- a/packages/core/src/positions/fetchPosition.ts +++ b/packages/core/src/positions/fetchPosition.ts @@ -1,12 +1,9 @@ -import type { BigNumber } from '@ethersproject/bignumber'; -import { Zero } from '@ethersproject/constants'; -import type { Provider } from '@ethersproject/providers'; import config from '@nftx/config'; -import { NFTX_LP_STAKING } from '@nftx/constants'; +import { NFTX_LP_STAKING, Zero } from '@nftx/constants'; import type { fetchLiquidityPool, LiquidityPool } from '../pools'; import type { fetchClaimableTokens } from '../staking'; import { t } from '../utils'; -import { fetchVault, fetchVaultFees } from '../vaults'; +import type { fetchVault, fetchVaultFees } from '../vaults'; import { calculateClaimableEth, calculateInventoryBalance, @@ -18,19 +15,21 @@ import { calculateStakeSplit, } from './utils'; import type { + Address, Position, + Provider, TokenReserve, Vault, VaultFeeReceipt, } from '@nftx/types'; import { addressEqual, - balanceOf, - fetchReservesForToken, - fetchUserVaultBalance, - fetchXTokenShare, + type balanceOf, + type fetchReservesForToken, + type fetchUserVaultBalance, + type fetchXTokenShare, getChainConstant, - totalSupply, + type totalSupply, } from '@nftx/utils'; import type fetchVaultAprs from '../vaults/fetchVaultAprs'; @@ -42,6 +41,8 @@ type FetchVaultAprs = typeof fetchVaultAprs; type FetchXTokenShare = typeof fetchXTokenShare; type FetchTotalSupply = typeof totalSupply; type FetchReservesForToken = typeof fetchReservesForToken; +type FetchVaultFees = typeof fetchVaultFees; +type BalanceOf = typeof balanceOf; export default ({ fetchClaimableTokens, @@ -52,6 +53,8 @@ export default ({ fetchVaultAprs, fetchXTokenShare, fetchReservesForToken, + fetchVaultFees, + balanceOf, }: { fetchPool: FetchPool; fetchClaimableTokens: FetchClaimableTokens; @@ -61,6 +64,8 @@ export default ({ fetchXTokenShare: FetchXTokenShare; fetchTotalSupply: FetchTotalSupply; fetchReservesForToken: FetchReservesForToken; + fetchVaultFees: FetchVaultFees; + balanceOf: BalanceOf; }) => /** Fetch useful information about a user's position such as their inventory/liquidity balances, pool split, pool share */ async function fetchPosition({ @@ -70,9 +75,9 @@ export default ({ userAddress, ...args }: { - vaultAddress: string; + vaultAddress: Address; provider: Provider; - userAddress: string; + userAddress: Address; vault?: { id: Vault['id']; vaultId: Vault['vaultId']; @@ -83,14 +88,14 @@ export default ({ }; pool?: LiquidityPool; reserves?: TokenReserve; - xTokenBalance?: BigNumber; - xSlpBalance?: BigNumber; - xTokenShare?: BigNumber; + xTokenBalance?: bigint; + xSlpBalance?: bigint; + xTokenShare?: bigint; network?: number; inventoryApr?: number; liquidityApr?: number; - slpSupply?: BigNumber; - slpBalance?: BigNumber; + slpSupply?: bigint; + slpBalance?: bigint; feeReceipts?: VaultFeeReceipt[]; }) { const vault = @@ -141,7 +146,6 @@ export default ({ if (!slpBalance && pool?.stakingToken?.id) { [, slpBalance] = await t( balanceOf({ - network, provider, ownerAddress: getChainConstant(NFTX_LP_STAKING, network), tokenAddress: pool.stakingToken.id, @@ -156,7 +160,6 @@ export default ({ if (!slpSupply && pool?.stakingToken?.id) { [, slpSupply] = await t( fetchTotalSupply({ - network, provider, tokenAddress: pool.stakingToken.id, }) @@ -173,7 +176,6 @@ export default ({ [, xTokenSupply] = await t( fetchTotalSupply({ provider, - network, tokenAddress: xTokenAddress, }) ); @@ -182,7 +184,7 @@ export default ({ let xSlpSupply = Zero; if (xSlpAddress) { [, xSlpSupply] = await t( - fetchTotalSupply({ network, provider, tokenAddress: xSlpAddress }) + fetchTotalSupply({ provider, tokenAddress: xSlpAddress }) ); } @@ -230,7 +232,7 @@ export default ({ // The total eth value of their liquidity position // This is only a rough estimate but the vToken value should be equal to the eth value // So we can get away with just * 2 the eth amount - const liquidityValue = liquidityEth.mul(2); + const liquidityValue = liquidityEth * 2n; // CLAIMABLE // The amount of LP rewards that are claimable @@ -239,7 +241,6 @@ export default ({ pool, provider, userAddress, - network, }) ); // The eth value of the amount @@ -252,13 +253,13 @@ export default ({ // The % of the user's total position that is inventory or liquidity const [inventorySplit, liquiditySplit] = calculateStakeSplit({ inventoryBalance: inventoryTokens, - liquidityBalance: liquidityTokens.mul(2), + liquidityBalance: liquidityTokens * 2n, }); // The total eth value of all staked assets - const valueStaked = liquidityValue.add(inventoryValue); + const valueStaked = liquidityValue + inventoryValue; // The total value including claimable amounts - const totalValue = valueStaked.add(claimableValue); + const totalValue = valueStaked + claimableValue; const position: Omit< Position, @@ -302,7 +303,7 @@ export default ({ slpSupply, periodFees: feeReceipts.reduce( - (total, receipt) => total.add(receipt.amount), + (total, receipt) => total + receipt.amount, Zero ), createdAt: vault.createdAt, diff --git a/packages/core/src/positions/fetchPositions.ts b/packages/core/src/positions/fetchPositions.ts index c97725cc..e4afde62 100644 --- a/packages/core/src/positions/fetchPositions.ts +++ b/packages/core/src/positions/fetchPositions.ts @@ -1,10 +1,7 @@ -import type { BigNumber } from '@ethersproject/bignumber'; -import type { Provider } from '@ethersproject/providers'; import config from '@nftx/config'; import type { fetchLiquidityPools, LiquidityPool } from '../pools'; import { fetchVaultFees, fetchVaults } from '../vaults'; import type fetchPosition from './fetchPosition'; -import { Zero } from '@ethersproject/constants'; import { addressEqual, fetchReservesForTokens, @@ -12,12 +9,15 @@ import { fetchXTokenShares, } from '@nftx/utils'; import type { + Address, + Provider, TokenReserve, UserVaultBalance, Vault, VaultFeeReceipt, } from '@nftx/types'; import type fetchVaultAprs from '../vaults/fetchVaultAprs'; +import { Zero } from '@nftx/constants'; type FetchPools = typeof fetchLiquidityPools; type FetchReservesForTokens = typeof fetchReservesForTokens; @@ -52,12 +52,12 @@ export default ({ minimumBalance = Zero, ...args }: { - userAddress: string; + userAddress: Address; network?: number; provider: Provider; vaults?: Vault[]; aprs?: { - vaultAddress: string; + vaultAddress: Address; liquidityApr: string; inventoryApr: string; }[]; @@ -67,9 +67,9 @@ export default ({ xSlp: UserVaultBalance[]; xTokens: UserVaultBalance[]; }; - xTokenShares?: { share: BigNumber; vaultId: string }[]; + xTokenShares?: { share: bigint; vaultId: string }[]; feeReceipts?: VaultFeeReceipt[]; - minimumBalance?: BigNumber; + minimumBalance?: bigint; }) { const allVaults = args.vaults ?? (await fetchVaults({ network, provider })); const balances = @@ -77,7 +77,7 @@ export default ({ const userVaultIds = [ ...new Set( [...balances.xTokens, ...balances.xSlp] - .filter(({ balance }) => balance.gte(minimumBalance)) + .filter(({ balance }) => balance >= minimumBalance) .map(({ vaultId }) => vaultId) ), ]; diff --git a/packages/core/src/positions/fetchUsers/__tests__/fetchUsers.test.ts b/packages/core/src/positions/fetchUsers/__tests__/fetchUsers.test.ts new file mode 100644 index 00000000..70aeb835 --- /dev/null +++ b/packages/core/src/positions/fetchUsers/__tests__/fetchUsers.test.ts @@ -0,0 +1,145 @@ +import type { Response as ContractsResponse } from '../fetchErc20Contracts'; +import makeFetchUsers from '../fetchUsers'; +import makeFetchContractBalances from '../fetchContractBalances'; +import makeFetchErc20Contracts from '../fetchErc20Contracts'; + +let queryBalancesSubgraph: jest.Mock; +let queryContractsSubgraph: jest.Mock; +let contractsResponse: ContractsResponse; +let fetchUsers: ReturnType; +let run: () => ReturnType; +let vaults: Parameters['0']['vaults']; + +beforeEach(() => { + contractsResponse = { + erc20Contracts: [ + { + id: '0x01', + balances: [ + { + id: '', + account: { + id: '0x03', + }, + }, + { + id: '', + account: { id: '0x04' }, + }, + ], + }, + { + id: '0x02', + balances: [ + { + id: '', + account: { + id: '0x03', + }, + }, + { + id: '', + account: { + id: '0x05', + }, + }, + ], + }, + ], + }; + vaults = [ + { + vaultId: '0', + lpStakingPool: { + dividendToken: { + id: '0x01', + }, + }, + inventoryStakingPool: { + id: '0x02', + }, + }, + ]; + + queryBalancesSubgraph = jest.fn(); + queryContractsSubgraph = jest.fn().mockResolvedValue(contractsResponse); + + fetchUsers = makeFetchUsers({ + fetchErc20Contracts: makeFetchErc20Contracts({ + querySubgraph: queryContractsSubgraph, + fetchContractBalances: makeFetchContractBalances({ + querySubgraph: queryBalancesSubgraph, + }), + }), + }); + run = () => fetchUsers({ vaults }); +}); + +it('fetches all staking user addresses for a collection of vaults', async () => { + const result = await run(); + + expect(result).toEqual([ + { + vaultId: '0', + users: ['0x03', '0x04', '0x05'], + }, + ]); +}); + +describe('when there are more than 1000 contracts', () => { + beforeEach(() => { + const firstResponse = { + ...contractsResponse, + erc20Contracts: contractsResponse.erc20Contracts + .flatMap((x) => { + return new Array(1000).fill(x); + }) + .slice(0, 1000), + }; + queryContractsSubgraph.mockResolvedValueOnce(firstResponse); + }); + it('fetches more contracts recursively', async () => { + const result = await run(); + + expect(queryContractsSubgraph).toBeCalledTimes(2); + + expect(result).toEqual([ + { + vaultId: '0', + users: ['0x03', '0x04', '0x05'], + }, + ]); + }); +}); + +describe('when there are more than 1000 balances for a single contract', () => { + beforeEach(() => { + contractsResponse.erc20Contracts[0].balances = new Array(1000).fill( + contractsResponse.erc20Contracts[0].balances[0] + ); + queryBalancesSubgraph.mockResolvedValue({ + erc20Contract: { + balances: [ + { + id: '', + account: { + id: '0x06', + }, + }, + ], + }, + }); + }); + + it('fetches more balances recursively', async () => { + const result = await run(); + + expect(queryBalancesSubgraph).toBeCalledTimes(1); + expect(result).toEqual([ + { + vaultId: '0', + users: new Array(1000).fill('0x03').concat(['0x06', '0x05']), + }, + ]); + }); +}); diff --git a/packages/core/src/positions/fetchUsers/fetchContractBalances.ts b/packages/core/src/positions/fetchUsers/fetchContractBalances.ts index 5e39150b..68def7d2 100644 --- a/packages/core/src/positions/fetchUsers/fetchContractBalances.ts +++ b/packages/core/src/positions/fetchUsers/fetchContractBalances.ts @@ -1,8 +1,11 @@ import config from '@nftx/config'; -import { gql, querySubgraph } from '@nftx/subgraph'; +import { gql, type querySubgraph } from '@nftx/subgraph'; +import type { Address } from '@nftx/types'; import { getChainConstant } from '@nftx/utils'; -type Account = { id: string }; +type QuerySubgraph = typeof querySubgraph; + +type Account = { id: Address }; type Balance = { id: string; account: Account; @@ -15,59 +18,65 @@ type Response = { erc20Contract: Erc20Contract; }; type Args = { - id: string; + id: Address; lastId: string; }; -const fetchContractBalances = async ({ - id, - lastId = '0', - network = config.network, -}: { - id: string; - lastId?: string; - retryCount?: number; - network?: number; -}): Promise => { - const query = gql` - { - erc20Contract(id: $id) { - balances( - first: 1000 - orderBy: valueExact - orderDirection: asc - where: { id_gt: $lastId } - ) { - id - account { +// Fetch balances for a single contract +// We only use this when a contract in fetchEerc20Contracts has more than 1000 balances +// and we need to fetch the next page +export default ({ querySubgraph }: { querySubgraph: QuerySubgraph }) => + async function fetchContractBalances({ + id, + lastId = '0', + network = config.network, + }: { + id: Address; + lastId?: string; + retryCount?: number; + network?: number; + }): Promise { + const query = gql` + { + erc20Contract(id: $id) { + balances( + first: 1000 + orderBy: valueExact + orderDirection: asc + where: { id_gt: $lastId } + ) { id + account { + id + } } } } - } - `; - - const response = await querySubgraph({ - url: getChainConstant(config.subgraph.NFTX_TOKEN_BALANCE_SUBGRAPH, network), - query, - variables: { - id, - lastId, - }, - }); + `; - let balances = response?.erc20Contract?.balances ?? []; - - if (balances.length === 1000) { - const lastId = balances[balances.length - 1].id; - const moreBalances = await fetchContractBalances({ - id, - lastId, + const response = await querySubgraph({ + url: getChainConstant( + config.subgraph.NFTX_TOKEN_BALANCE_SUBGRAPH, + network + ), + query, + variables: { + id, + lastId, + }, }); - balances = [...balances, ...moreBalances]; - } - return balances; -}; + let balances = response?.erc20Contract?.balances ?? []; + + // Handle pagination + if (balances.length === 1000) { + const lastId = balances[balances.length - 1].id; + const moreBalances = await fetchContractBalances({ + id, + lastId, + }); + balances = [...balances, ...moreBalances]; + } -export default fetchContractBalances; + return balances; + }; diff --git a/packages/core/src/positions/fetchUsers/fetchErc20Contracts.ts b/packages/core/src/positions/fetchUsers/fetchErc20Contracts.ts index b3d1072b..97a5227e 100644 --- a/packages/core/src/positions/fetchUsers/fetchErc20Contracts.ts +++ b/packages/core/src/positions/fetchUsers/fetchErc20Contracts.ts @@ -1,86 +1,101 @@ import config from '@nftx/config'; -import { gql, querySubgraph } from '@nftx/subgraph'; +import { gql, type querySubgraph } from '@nftx/subgraph'; +import type { Address } from '@nftx/types'; import { getChainConstant } from '@nftx/utils'; -import fetchContractBalances from './fetchContractBalances'; +import type fetchContractBalances from './fetchContractBalances'; -type Account = { id: string }; +type FetchContractBalances = ReturnType; +type QuerySubgraph = typeof querySubgraph; + +type Account = { id: Address }; type Balance = { id: string; account: Account; }; type Erc20Contract = { - id: string; + id: Address; balances: Balance[]; }; -type Response = { +export type Response = { erc20Contracts: Erc20Contract[]; }; type Args = { - addresses: string[]; + addresses: Address[]; lastId: string; }; -const fetchErc20Contracts = async ({ - contractAddresses, - network = config.network, - lastId = '0', +// Fetch all contracts and balances for the given addresses +export default ({ + fetchContractBalances, + querySubgraph, }: { - contractAddresses: string[]; - lastId?: string; - retryCount?: number; - network?: number; -}): Promise => { - const query = gql` - { - erc20Contracts( - first: 1000 - orderBy: id - orderDirection: asc - where: { id_in: $addresses, id_gt: $lastId } - ) { - id - balances(first: 1000, orderBy: valueExact, orderDirection: asc) { + querySubgraph: QuerySubgraph; + fetchContractBalances: FetchContractBalances; +}) => + async function fetchErc20Contracts({ + contractAddresses, + network = config.network, + lastId = '0', + }: { + contractAddresses: Address[]; + lastId?: string; + retryCount?: number; + network?: number; + }): Promise { + const query = gql` + { + erc20Contracts( + first: 1000 + orderBy: id + orderDirection: asc + where: { id_in: $addresses, id_gt: $lastId } + ) { id - account { + balances(first: 1000, orderBy: valueExact, orderDirection: asc) { id + account { + id + } } } } - } - `; - - const response = await querySubgraph({ - url: getChainConstant(config.subgraph.NFTX_TOKEN_BALANCE_SUBGRAPH, network), - query, - variables: { - addresses: contractAddresses, - lastId, - }, - }); - let contracts = response.erc20Contracts ?? []; + `; - if (contracts.length === 1000) { - const lastId = contracts[contracts.length - 1].id; - const moreContracts = await fetchErc20Contracts({ - contractAddresses, - lastId, + const response = await querySubgraph({ + url: getChainConstant( + config.subgraph.NFTX_TOKEN_BALANCE_SUBGRAPH, + network + ), + query, + variables: { + addresses: contractAddresses, + lastId, + }, }); - contracts = [...contracts, ...moreContracts]; - } + let contracts = response.erc20Contracts ?? []; - for (const contract of contracts) { - if (contract.balances.length === 1000) { - const lastId = contract.balances[contract.balances.length - 1].id; - const moreBalances = await fetchContractBalances({ - id: contract.id, + // Handle contract pagination + if (contracts.length === 1000) { + const lastId = contracts[contracts.length - 1].id; + const moreContracts = await fetchErc20Contracts({ + contractAddresses, lastId, }); - contract.balances = [...contract.balances, ...moreBalances]; + contracts = [...contracts, ...moreContracts]; } - } - return contracts; -}; + for (const contract of contracts) { + // Handle balance pagination + if (contract.balances.length === 1000) { + const lastId = contract.balances[contract.balances.length - 1].id; + const moreBalances = await fetchContractBalances({ + id: contract.id, + lastId, + }); + contract.balances = [...contract.balances, ...moreBalances]; + } + } -export default fetchErc20Contracts; + return contracts; + }; diff --git a/packages/core/src/positions/fetchUsers/fetchUsers.ts b/packages/core/src/positions/fetchUsers/fetchUsers.ts index 4e471a37..64a7f481 100644 --- a/packages/core/src/positions/fetchUsers/fetchUsers.ts +++ b/packages/core/src/positions/fetchUsers/fetchUsers.ts @@ -1,60 +1,124 @@ +import type { Address, Vault as IVault } from '@nftx/types'; import { addressEqual } from '@nftx/utils'; -import fetchErc20Contracts from './fetchErc20Contracts'; +import type fetchErc20Contracts from './fetchErc20Contracts'; -const fetchUsers = async ({ - vaults, -}: { - vaults: Array<{ +type FetchErc20Contracts = ReturnType; + +type Vault = { + vaultId: string; + inventoryStakingPool?: { id: IVault['inventoryStakingPool']['id'] }; + lpStakingPool?: { + dividendToken?: { id?: IVault['lpStakingPool']['dividendToken']['id'] }; + }; +}; + +type UserGroups = Record< + string, + { vaultId: string; - inventoryStakingPool?: { id: string }; - lpStakingPool?: { dividendToken?: { id?: string } }; - }>; -}): Promise> => { + users: Address[]; + } +>; + +// Get all contract addresses we want to fetch balances for +const getContractAddresses = (vaults: Vault[]) => { const xTokenAddresses = vaults .map((vault) => vault.inventoryStakingPool?.id) - .filter(Boolean); + .filter((x): x is Address => !!x); const xSlpAddresses = vaults .map((vault) => vault.lpStakingPool?.dividendToken?.id) - .filter(Boolean); - const contractAddresses = [ - ...new Set([...xTokenAddresses, ...xSlpAddresses]), - ]; + .filter((x): x is Address => !!x); - const contracts = await fetchErc20Contracts({ - contractAddresses, - }); + return [...new Set([...xTokenAddresses, ...xSlpAddresses])]; +}; - const groupedUsers: Record = {}; +const getVaultForContract = (vaults: Vault[], contract: { id: string }) => { + return vaults.find((vault) => { + return ( + addressEqual(vault.inventoryStakingPool?.id, contract.id) || + addressEqual(vault.lpStakingPool?.dividendToken?.id, contract.id) + ); + }); +}; - contracts.forEach((contract) => { - const vault = vaults.find((vault) => { - return ( - addressEqual(vault.inventoryStakingPool?.id, contract.id) || - addressEqual(vault.lpStakingPool?.dividendToken?.id, contract.id) - ); +// Get all of the user addresses for the given contract +// Filters out users that are already in the list +// (i.e. this is an LP contract but a user also has an IP position for this vault) +const getContractUsers = ( + contract: { balances: Array<{ account: { id: Address } }> }, + users: string[] +) => { + return contract.balances + .map((balance) => { + return balance?.account?.id; + }) + .filter((id) => { + return id && !users.includes(id); }); - const { vaultId } = vault; +}; + +// From a hash of vault:users get users for the given vaultId +// If we haven't had any users for this vaultId, it will create a new array +const getVaultUsers = (groupedUsers: UserGroups, vaultId: string) => { + let users = groupedUsers[vaultId]?.users; + if (!users) { + users = []; + groupedUsers[vaultId] = { vaultId, users }; + } + return users; +}; + +const groupContractBalanceHoldersByVault = ( + contracts: Array<{ + id: string; + balances: Array<{ account: { id: Address } }>; + }>, + vaults: Vault[] +) => { + const groupedUsers: UserGroups = {}; - let users = groupedUsers[vaultId]?.users; - if (!users) { - users = []; - groupedUsers[vaultId] = { vaultId, users }; + contracts.forEach((contract) => { + // Find a vault associated with this contract + const vaultId = getVaultForContract(vaults, contract)?.vaultId; + if (!vaultId) { + return; } + const users = getVaultUsers(groupedUsers, vaultId); - const holders = contract.balances - .map((balance) => { - return balance?.account?.id; - }) - .filter((id) => { - return id && !users.includes(id); - }); + // Get each balance holder for this contract and add them to the contract group + const holders = getContractUsers(contract, users); users.push(...holders); }); - const users = Object.values(groupedUsers); - - return users; + return groupedUsers; }; -export default fetchUsers; +export default ({ + fetchErc20Contracts, +}: { + fetchErc20Contracts: FetchErc20Contracts; +}) => + /** Fetches a list of all staked user addresses for a collection of vaults */ + async function fetchUsers({ + vaults, + }: { + vaults: Vault[]; + }): Promise> { + // Get a list of all addresses we want to get balances for + // This will be all IP and LP addresses for the given vaults + const contractAddresses = getContractAddresses(vaults); + + // Fetch all contracts and their balances + const contracts = await fetchErc20Contracts({ + contractAddresses, + }); + + // We now want to group the contract balances by vault + const groupedUsers = groupContractBalanceHoldersByVault(contracts, vaults); + + // Return a flat list of { vaultId, users } + const users = Object.values(groupedUsers); + + return users; + }; diff --git a/packages/core/src/positions/fetchUsers/index.ts b/packages/core/src/positions/fetchUsers/index.ts index b8135e71..a4e851d5 100644 --- a/packages/core/src/positions/fetchUsers/index.ts +++ b/packages/core/src/positions/fetchUsers/index.ts @@ -1 +1,13 @@ -export { default } from './fetchUsers'; +import makeFetchUsers from './fetchUsers'; +import makeFetchErc20Contracts from './fetchErc20Contracts'; +import makeFetchContractBalances from './fetchContractBalances'; +import { querySubgraph } from '@nftx/subgraph'; + +const fetchContractBalances = makeFetchContractBalances({ querySubgraph }); +const fetchErc20Contracts = makeFetchErc20Contracts({ + fetchContractBalances, + querySubgraph, +}); +const fetchUsers = makeFetchUsers({ fetchErc20Contracts }); + +export default fetchUsers; diff --git a/packages/core/src/positions/index.ts b/packages/core/src/positions/index.ts index 92aa7474..4ebf6f2f 100644 --- a/packages/core/src/positions/index.ts +++ b/packages/core/src/positions/index.ts @@ -1,4 +1,5 @@ import { + balanceOf, fetchReservesForToken, fetchReservesForTokens, fetchUserVaultBalance, @@ -9,7 +10,7 @@ import { } from '@nftx/utils'; import { fetchLiquidityPool, fetchLiquidityPools } from '../pools'; import { fetchClaimableTokens } from '../staking'; -import { fetchVault, fetchVaults } from '../vaults'; +import { fetchVault, fetchVaultFees, fetchVaults } from '../vaults'; import fetchVaultAprs from '../vaults/fetchVaultAprs'; import makeFetchPosition from './fetchPosition'; import makeFetchPositions from './fetchPositions'; @@ -25,6 +26,8 @@ export const fetchPosition = makeFetchPosition({ fetchVault, fetchVaultAprs, fetchXTokenShare, + balanceOf, + fetchVaultFees, }); export const fetchPositions = makeFetchPositions({ diff --git a/packages/core/src/positions/types.ts b/packages/core/src/positions/types.ts index c7365f96..cd93e6fe 100644 --- a/packages/core/src/positions/types.ts +++ b/packages/core/src/positions/types.ts @@ -1,33 +1,32 @@ -import type { BigNumber } from '@ethersproject/bignumber'; -import type { TokenReserve, VaultFeeReceipt } from '@nftx/types'; +import type { Address, TokenReserve, VaultFeeReceipt } from '@nftx/types'; export type Position = { vaultId: string; - vaultAddress: string; - poolId: string; - liquidityEth: BigNumber; - inventoryValue: BigNumber; - liquidityValue: BigNumber; - inventoryTokens: BigNumber; - liquidityTokens: BigNumber; - inventoryShare: BigNumber; - liquidityShare: BigNumber; + vaultAddress: Address; + poolId: Address; + liquidityEth: bigint; + inventoryValue: bigint; + liquidityValue: bigint; + inventoryTokens: bigint; + liquidityTokens: bigint; + inventoryShare: bigint; + liquidityShare: bigint; inventoryApr: number; liquidityApr: number; inventorySplit: number; liquiditySplit: number; - claimableAmount: BigNumber; - valueStaked: BigNumber; - claimableValue: BigNumber; - totalValue: BigNumber; + claimableAmount: bigint; + valueStaked: bigint; + claimableValue: bigint; + totalValue: bigint; poolReserves: TokenReserve; - xToken: BigNumber; - xTokenSupply: BigNumber; - xTokenShare: BigNumber; - xSlp: BigNumber; - xSlpSupply: BigNumber; - slpBalance: BigNumber; - slpSupply: BigNumber; + xToken: bigint; + xTokenSupply: bigint; + xTokenShare: bigint; + xSlp: bigint; + xSlpSupply: bigint; + slpBalance: bigint; + slpSupply: bigint; feeReceipts: VaultFeeReceipt[]; createdAt: number; }; diff --git a/packages/core/src/positions/utils.ts b/packages/core/src/positions/utils.ts index 3fbeceb5..1cb2dc6b 100644 --- a/packages/core/src/positions/utils.ts +++ b/packages/core/src/positions/utils.ts @@ -1,47 +1,48 @@ -import { WeiPerEther, Zero } from '@ethersproject/constants'; -import type { BigNumber } from '@ethersproject/bignumber'; -import { formatEther } from '@ethersproject/units'; +import { WeiPerEther, Zero } from '@nftx/constants'; import type { TokenReserve } from '@nftx/types'; +import { formatEther } from 'viem'; export const calculateLiquidityBalance = ({ liquidityShare, reserves, }: { - liquidityShare: BigNumber; + liquidityShare: bigint; reserves: TokenReserve; }) => { - return liquidityShare.mul(reserves?.reserveVtoken ?? '0').div(WeiPerEther); + return (liquidityShare * (reserves?.reserveVtoken ?? Zero)) / WeiPerEther; }; export const calculateLiquidityEth = ({ liquidityShare, reserves, }: { - liquidityShare: BigNumber; + liquidityShare: bigint; reserves: TokenReserve; }) => { - return liquidityShare.mul(reserves?.reserveWeth ?? '0').div(WeiPerEther); + return ( + ((liquidityShare ?? Zero) * (reserves?.reserveWeth ?? Zero)) / WeiPerEther + ); }; export const calculateInventoryBalance = ({ xTokenShare, xToken, }: { - xTokenShare: BigNumber; - xToken: BigNumber; + xTokenShare: bigint; + xToken: bigint; }) => { - return xTokenShare?.mul(xToken ?? '0').div(WeiPerEther) ?? Zero; + return ((xTokenShare ?? Zero) * (xToken ?? Zero)) / WeiPerEther; }; export const calculateInventoryEth = ({ inventoryBalance, reserves, }: { - inventoryBalance: BigNumber; + inventoryBalance: bigint; reserves: TokenReserve; }) => { return ( - inventoryBalance.mul(reserves?.midPrice ?? '0').div(WeiPerEther) ?? Zero + ((inventoryBalance ?? Zero) * (reserves?.midPrice ?? Zero)) / WeiPerEther ); }; @@ -50,28 +51,27 @@ export function calculateClaimableEth({ claimableTokens, stakedTokens, }: { - stakedEth: BigNumber; - claimableTokens: BigNumber; - stakedTokens: BigNumber; + stakedEth: bigint; + claimableTokens: bigint; + stakedTokens: bigint; }) { - return stakedEth - .mul(claimableTokens) - .div(stakedTokens.gt(0) ? stakedTokens : '1'); + return ( + (stakedEth * claimableTokens) / (stakedTokens > Zero ? stakedTokens : 1n) + ); } export const calculateStakeSplit = ({ inventoryBalance, liquidityBalance, }: { - inventoryBalance: BigNumber; - liquidityBalance: BigNumber; + inventoryBalance: bigint; + liquidityBalance: bigint; }) => { - const totalVTokens = inventoryBalance.add(liquidityBalance); + const totalVTokens = inventoryBalance + liquidityBalance; const inventorySplit = Number( formatEther( - inventoryBalance - .mul(WeiPerEther) - .div(totalVTokens.gt(0) ? totalVTokens : '1') + (inventoryBalance * WeiPerEther) / + (totalVTokens > Zero ? totalVTokens : 1n) ) ); const liquiditySplit = 1 - inventorySplit; @@ -83,45 +83,48 @@ export const calculateInventoryShare = ({ xToken, xTokenSupply, }: { - xToken: BigNumber; - xTokenSupply: BigNumber; + xToken: bigint; + xTokenSupply: bigint; }) => { - if (!xToken?.gt(0)) { + if ((xToken ?? Zero) <= Zero) { return Zero; } - if (!xTokenSupply?.gt(0)) { + if ((xTokenSupply ?? Zero) <= Zero) { return Zero; } - return xToken.mul(WeiPerEther).div(xTokenSupply); + return (xToken * WeiPerEther) / xTokenSupply; }; export const calculateLiquidityShare = ({ xSlp, xSlpSupply, }: { - xSlp: BigNumber; - xSlpSupply: BigNumber; + xSlp: bigint; + xSlpSupply: bigint; }) => { - if (!xSlp?.gt(0) || !xSlpSupply?.gt(0)) { + if ((xSlp ?? Zero) <= Zero) { + return Zero; + } + if ((xSlpSupply ?? Zero) <= Zero) { return Zero; } - return xSlp.mul(WeiPerEther).div(xSlpSupply); + return (xSlp * WeiPerEther) / xSlpSupply; }; -export const calculatePercentageDifference = (a: BigNumber, b: BigNumber) => { - if ((a.eq(0) && b.gt(0)) || (b.eq(0) && a.lt(0))) { +export const calculatePercentageDifference = (a: bigint, b: bigint) => { + if ((a === Zero && b > Zero) || (b === Zero && a < Zero)) { return WeiPerEther; - } else if ((a.eq(0) && b.lt(0)) || (b.eq(0) && a.gt(0))) { - return Zero.sub(WeiPerEther); - } else if (a.eq(0) && b.eq(0)) { + } else if ((a === Zero && b < Zero) || (b === Zero && a > Zero)) { + return Zero - WeiPerEther; + } else if (a === Zero && b === Zero) { return Zero; } - const diff = b.sub(a); - const frac = diff.mul(WeiPerEther).div(a); + const diff = b - a; + const frac = (diff * WeiPerEther) / a; return frac; }; -export const increaseByPercentage = (a: BigNumber, perc: BigNumber) => { - return a.add(a.mul(perc).div(WeiPerEther)); +export const increaseByPercentage = (a: bigint, perc: bigint) => { + return a + (a * perc) / WeiPerEther; }; diff --git a/packages/core/src/staking/__tests__/fetchCumulativeFees.test.ts b/packages/core/src/staking/__tests__/fetchCumulativeFees.test.ts new file mode 100644 index 00000000..4942dfe3 --- /dev/null +++ b/packages/core/src/staking/__tests__/fetchCumulativeFees.test.ts @@ -0,0 +1,177 @@ +import type { Address } from '@nftx/types'; +import { formatEther, parseEther } from 'viem'; +import makeFetchCumulativeFees, { type Response } from '../fetchCumulativeFees'; + +let blockNumber: number; +let queryResponse: Response; +let timestampFrom: number; +let userAddress: Address; +let vaultIds: Address[]; +let querySubgraph: jest.Mock; +let fetchBlockNumberByTimestamp: jest.Mock; +let fetchCumulativeFees: ReturnType; +let run: () => ReturnType; + +beforeEach(() => { + blockNumber = 0; + timestampFrom = 0; + userAddress = '0x00'; + vaultIds = ['0x0']; + queryResponse = { + userVaultFeeAggregates: [ + { + vault: { + id: '0x01', + vaultId: '0', + }, + aggregatedVaultFees: parseEther('1').toString() as `${number}`, + }, + ], + user: { + earnings: [ + { + vault: { + id: '0x', + address: '0x01', + ticker: 'PUNK', + vaultId: '0', + }, + action: { + id: 'mint', + label: 'MINT', + }, + amount: parseEther('1').toString() as `${number}`, + timestamp: '0', + }, + { + vault: { + id: '0x', + address: '0x01', + ticker: 'PUNK', + vaultId: '0', + }, + action: { + id: 'mint', + label: 'MINT', + }, + amount: parseEther('1').toString() as `${number}`, + timestamp: '0', + }, + { + vault: { + id: '0x', + address: '0x01', + ticker: 'PUNK', + vaultId: '0', + }, + action: { + id: 'swap', + label: 'SWAP', + }, + amount: parseEther('1').toString() as `${number}`, + timestamp: '0', + }, + { + vault: { + id: '0x', + address: '0x01', + ticker: 'PUNK', + vaultId: '0', + }, + action: { + id: 'swap', + label: 'SWAP', + }, + amount: parseEther('1').toString() as `${number}`, + timestamp: '7200', + }, + { + vault: { + id: '0x', + address: '0x01', + ticker: 'PUNK', + vaultId: '0', + }, + action: { + id: 'swap', + label: 'SWAP', + }, + amount: parseEther('1').toString() as `${number}`, + timestamp: '7230', + }, + ], + }, + }; + querySubgraph = jest.fn().mockResolvedValue(queryResponse); + fetchBlockNumberByTimestamp = jest.fn().mockResolvedValue(blockNumber); + + fetchCumulativeFees = makeFetchCumulativeFees({ + fetchBlockNumberByTimestamp, + querySubgraph, + }); + run = () => + fetchCumulativeFees({ timestampFrom, userAddress, vaultIds, network: 1 }); +}); + +it('returns a list of cumulative fees', async () => { + const result = await run(); + + expect(result).toHaveLength(3); + + expect(result[0]).toHaveProperty('amount'); + expect(result[0]).toHaveProperty('timestamp'); + expect(result[0]).toHaveProperty('txnId'); + expect(result[0]).toHaveProperty('type'); +}); + +it('sorts fees by most recent', async () => { + const result = await run(); + + const timestamps = result.map((x) => x.timestamp); + + expect(timestamps).toEqual([7200, 0, 0]); +}); + +it('adds together fees earned in the same timestamp and type', async () => { + const result = await run(); + + const types = result.map((x) => x.type); + const amounts = result.map((x) => formatEther(x.amount)); + + expect(types).toEqual(['swap', 'mint', 'swap']); + expect(amounts).toEqual(['2', '2', '1']); +}); + +it('passes hex-encoded vault, IP, and LP ids to the subgraph request', async () => { + await run(); + + const variables = querySubgraph.mock.calls[0][0].variables; + // Vault ID as a hex + expect(variables.vaultHexIds).toEqual(['0x0']); + // Vault ID hex + user address + IP/LP (0/1) + expect(variables.ids).toEqual(['0x0-0x00-0x1', '0x0-0x00-0x0']); +}); + +describe('when timestamp is a fractional number', () => { + beforeEach(() => { + timestampFrom = 100.5; + }); + + it('rounds the timestamp down', async () => { + await run(); + + const variables = querySubgraph.mock.calls[0][0].variables; + + expect(variables.timestampFrom).toBe(100); + }); +}); + +describe('when aggregated vault fees is a fractional big number', () => { + beforeEach(() => { + queryResponse.userVaultFeeAggregates[0].aggregatedVaultFees += '.1233210'; + }); + + it('does not throw an error', async () => { + await expect(run()).resolves.not.toThrow(); + }); +}); diff --git a/packages/core/src/staking/fetchClaimableTokens.ts b/packages/core/src/staking/fetchClaimableTokens.ts index 8f10f366..183cd8fb 100644 --- a/packages/core/src/staking/fetchClaimableTokens.ts +++ b/packages/core/src/staking/fetchClaimableTokens.ts @@ -1,10 +1,8 @@ -import { Zero } from '@ethersproject/constants'; -import NftxRewardDistributionTokenAbi from '@nftx/constants/abis/NFTXRewardDistributionTokenUpgradeable.json'; -import type { Provider } from '@ethersproject/providers'; -import type { BigNumber } from '@ethersproject/bignumber'; +import { NFTXRewardDistributionTokenUpgradeable } from '@nftx/abi'; import type { LiquidityPool } from '../pools'; -import config from '@nftx/config'; import type { getContract } from '@nftx/utils'; +import type { Address, Provider } from '@nftx/types'; +import { Zero } from '@nftx/constants'; type GetContract = typeof getContract; @@ -12,14 +10,12 @@ export default ({ getContract }: { getContract: GetContract }) => /** Returns the amount of tokens the user is able to claim for a liquidity pool */ async function fetchClaimableTokens({ pool, - network = config.network, provider, userAddress, }: { pool: { dividendToken?: { id: LiquidityPool['dividendToken']['id'] } }; - network?: number; provider: Provider; - userAddress: string; + userAddress: Address; }) { const address = pool?.dividendToken?.id; if (!address) { @@ -27,13 +23,12 @@ export default ({ getContract }: { getContract: GetContract }) => } const contract = getContract({ - network, provider, - abi: NftxRewardDistributionTokenAbi, - address: pool.dividendToken.id, + abi: NFTXRewardDistributionTokenUpgradeable, + address, }); - const tokens: BigNumber = await contract.dividendOf(userAddress); + const tokens = await contract.read.dividendOf({ args: [userAddress] }); return tokens; }; diff --git a/packages/core/src/staking/fetchCumulativeFees.ts b/packages/core/src/staking/fetchCumulativeFees.ts index 39bc44e8..eac07cbf 100644 --- a/packages/core/src/staking/fetchCumulativeFees.ts +++ b/packages/core/src/staking/fetchCumulativeFees.ts @@ -1,8 +1,7 @@ -import type { BigNumber } from '@ethersproject/bignumber'; -import { Zero } from '@ethersproject/constants'; import config from '@nftx/config'; -import { NFTX_FEE_TRACKER_SUBGRAPH } from '@nftx/constants'; +import { NFTX_FEE_TRACKER_SUBGRAPH, Zero } from '@nftx/constants'; import { gql, type querySubgraph } from '@nftx/subgraph'; +import type { Address } from '@nftx/types'; import { fetchBlockNumberByTimestamp, getChainConstant } from '@nftx/utils'; import { createHexVaultId, @@ -14,25 +13,25 @@ import type { CumulativeFee } from './types'; type QuerySubgraph = typeof querySubgraph; type FetchBlockNumberByTimestamp = typeof fetchBlockNumberByTimestamp; -type Response = { +export type Response = { userVaultFeeAggregates: Array<{ vault: { - id: string; + id: Address; vaultId: string; }; - aggregatedVaultFees: string; + aggregatedVaultFees: `${number}`; }>; user: { earnings: Array<{ vault: { - id: string; + id: Address; vaultId: string; ticker: string; - address: string; + address: Address; }; action: { id: string; label: string }; timestamp: string; - amount: string; + amount: `${number}`; }>; }; }; @@ -40,11 +39,11 @@ type Response = { type GroupedFees = Record< string, { - id: string; + id: Address; vaultId: string; ticker: string; - initial: BigNumber; - toDate: BigNumber; + initial: bigint; + toDate: bigint; earnings: Record< string, Record< @@ -53,8 +52,8 @@ type GroupedFees = Record< txnId: string; type: string; timestamp: number; - amount: BigNumber; - toDate: BigNumber; + amount: bigint; + toDate: bigint; } > >; @@ -67,7 +66,7 @@ const createQuery = () => { ids: string[]; vaultHexIds: string[]; timestampFrom: number; - userAddress: string; + userAddress: Address; }; return gql` @@ -109,6 +108,7 @@ const createQuery = () => { `; }; +// We want to group all of the fees by vaultId / timestamp / type const groupFeesByVaultTimeType = ( earnings: Response['user']['earnings'], userVaultFeeAggregates: Response['userVaultFeeAggregates'] @@ -117,8 +117,8 @@ const groupFeesByVaultTimeType = ( earnings.forEach((x) => { const vaultId = x.vault.vaultId; + // Round to the nearest minute const timestamp = Math.floor(Number(x.timestamp) / 60) * 60; - // const amount = BigNumber.from(Math.floor(Number(x.amount)).toString()); const amount = parseAggregatedFee(x.amount); let vaultGroup = groups[vaultId]; @@ -156,9 +156,9 @@ const groupFeesByVaultTimeType = ( }; } - earning.amount = earning.amount.add(amount); - earning.toDate = earning.toDate.add(amount); - vaultGroup.toDate = vaultGroup.toDate.add(amount); + earning.amount = earning.amount + amount; + earning.toDate = earning.toDate + amount; + vaultGroup.toDate = vaultGroup.toDate + amount; }); return groups; @@ -203,7 +203,7 @@ export default ({ }: { network?: number; timestampFrom: number; - userAddress: string; + userAddress: Address; vaultIds: string[]; }) { const blockFrom = await fetchBlockNumberByTimestamp({ diff --git a/packages/core/src/staking/fetchLifetimeEarnings.ts b/packages/core/src/staking/fetchLifetimeEarnings.ts index f35a40dc..fed5637e 100644 --- a/packages/core/src/staking/fetchLifetimeEarnings.ts +++ b/packages/core/src/staking/fetchLifetimeEarnings.ts @@ -1,8 +1,7 @@ -import { WeiPerEther, Zero } from '@ethersproject/constants'; -import type { Provider } from '@ethersproject/providers'; import config from '@nftx/config'; +import { WeiPerEther, Zero } from '@nftx/constants'; import { gql, type querySubgraph } from '@nftx/subgraph'; -import type { Vault } from '@nftx/types'; +import type { Address, Provider, Vault } from '@nftx/types'; import { addressEqual, getChainConstant } from '@nftx/utils'; import type { fetchVaults } from '../vaults'; import { parseAggregatedFee } from './fetchLifetimeFees'; @@ -24,18 +23,18 @@ export default ({ }: { lastId?: string; network: number; - userAddress: string; + userAddress: Address; }) => { type Response = { userVaultFeeAggregates: Array<{ id: string; - aggregatedVaultFees: string; + aggregatedVaultFees: `${number}`; vault: { - address: string; + address: Address; }; }>; }; - type Vars = { lastId: string; userAddress: string }; + type Vars = { lastId: string; userAddress: Address }; const query = gql` { @@ -66,7 +65,7 @@ export default ({ let fees = response?.userVaultFeeAggregates ?? []; if (fees.length === 1000) { - const lastId = response.userVaultFeeAggregates.slice().pop().id; + const lastId = response?.userVaultFeeAggregates?.slice?.()?.pop?.()?.id; const moreFees = await fetchFeesFromSubgraph({ lastId, network, @@ -86,7 +85,7 @@ export default ({ network = config.network, provider, }: { - userAddress: string; + userAddress: Address; vaults?: Pick[]; network?: number; provider: Provider; @@ -99,21 +98,21 @@ export default ({ } return fees.reduce((total, fee) => { - const vault = vaults.find((vault) => + const vault = vaults?.find((vault) => addressEqual(vault.id, fee.vault.address) ); if (vault == null) { return total; } - if (vault.reserveWeth.lt(WeiPerEther)) { + if (vault.reserveWeth < WeiPerEther) { return total; } const spotPrice = vault.rawPrice; const amount = parseAggregatedFee(fee.aggregatedVaultFees); - const value = amount.mul(spotPrice).div(WeiPerEther); + const value = (amount * spotPrice) / WeiPerEther; - return total.add(value); + return total + value; }, Zero); }; }; diff --git a/packages/core/src/staking/fetchLifetimeFees.ts b/packages/core/src/staking/fetchLifetimeFees.ts index 6c9565eb..84a8eab3 100644 --- a/packages/core/src/staking/fetchLifetimeFees.ts +++ b/packages/core/src/staking/fetchLifetimeFees.ts @@ -1,17 +1,19 @@ -import { BigNumber } from '@ethersproject/bignumber'; import config from '@nftx/config'; import { gql, type querySubgraph } from '@nftx/subgraph'; import { getChainConstant } from '@nftx/utils'; type QuerySubgraph = typeof querySubgraph; -// The aggregated fee value is a weird big number + decimal string -// BigNumber can't parse decimals (the whole point is that you pass it a big number instead of a decimal number) -// So we need to massage it first... -export const parseAggregatedFee = (value: string) => { - return BigNumber.from(Math.floor(Number(value || '0')).toString()); +/** + * The aggregated fee value is a weird big number + decimal string + * BigNumber can't parse decimal strings (the whole point is that you pass it a big number instead of a decimal number) + * So we need to massage it first... + */ +export const parseAggregatedFee = (value: `${number}` | undefined) => { + return BigInt(Math.floor(Number(value || '0')).toString()); }; +/** Creates the HEX equivalent of a vault id as some subgraphs store the vault id as a hex number instead */ export const createHexVaultId = (vaultId: string) => { return ['0x', Number(vaultId).toString(16)].join(''); }; @@ -41,10 +43,10 @@ export default ({ querySubgraph }: { querySubgraph: QuerySubgraph }) => }) { type Response = { inventory: { - aggregatedVaultFees: string; + aggregatedVaultFees: `${number}`; }; liquidity: { - aggregatedVaultFees: string; + aggregatedVaultFees: `${number}`; }; }; diff --git a/packages/core/src/staking/fetchLockTime.ts b/packages/core/src/staking/fetchLockTime.ts index 217a124c..458036b6 100644 --- a/packages/core/src/staking/fetchLockTime.ts +++ b/packages/core/src/staking/fetchLockTime.ts @@ -1,9 +1,8 @@ -import type { Provider } from '@ethersproject/providers'; import config from '@nftx/config'; import { NFTX_STAKING_ZAP } from '@nftx/constants'; -import abi from '@nftx/constants/abis/NFTXStakingZap.json'; +import { NFTXStakingZap } from '@nftx/abi'; import { getChainConstant, getContract } from '@nftx/utils'; -import type { BigNumber } from '@ethersproject/bignumber'; +import type { Provider } from '@nftx/types'; /** Returns the standard time that a position is locked in when you stake inventory or liquidity */ const fetchLockTime = async ({ @@ -14,10 +13,10 @@ const fetchLockTime = async ({ provider: Provider; }) => { const address = getChainConstant(NFTX_STAKING_ZAP, network); - const contract = getContract({ abi, address, network, provider }); + const contract = getContract({ abi: NFTXStakingZap, address, provider }); - const ipLockTime: BigNumber = await contract.inventoryLockTime(); - const lpLockTime: BigNumber = await contract.lpLockTime(); + const ipLockTime = await contract.read.inventoryLockTime({}); + const lpLockTime = await contract.read.lpLockTime({}); const inventoryLockTime = Number(ipLockTime); const liquidityLockTime = Number(lpLockTime); diff --git a/packages/core/src/staking/types.ts b/packages/core/src/staking/types.ts index 421dfa73..456883e0 100644 --- a/packages/core/src/staking/types.ts +++ b/packages/core/src/staking/types.ts @@ -1,12 +1,12 @@ -import type { BigNumber } from '@ethersproject/bignumber'; +import type { Address } from '@nftx/types'; export type CumulativeFee = { vaultId: string; - vaultAddress: string; + vaultAddress: Address; txnId: string; symbol: string; timestamp: number; type: string; - amount: BigNumber; - toDate: BigNumber; + amount: bigint; + toDate: bigint; }; diff --git a/packages/core/src/utils.ts b/packages/core/src/utils.ts index eb91c482..735e7d55 100644 --- a/packages/core/src/utils.ts +++ b/packages/core/src/utils.ts @@ -7,6 +7,8 @@ export const reduceObj = >( ) => Array<[string, any]> ): any => { return Object.fromEntries( + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore Object.entries(obj).reduce((acc, [key, value]) => { return fn(acc, key, value); }, []) diff --git a/packages/core/src/vaults/fetchSubgraphVaults.ts b/packages/core/src/vaults/fetchSubgraphVaults.ts index 5dc7456f..b4014bce 100644 --- a/packages/core/src/vaults/fetchSubgraphVaults.ts +++ b/packages/core/src/vaults/fetchSubgraphVaults.ts @@ -1,5 +1,6 @@ import config from '@nftx/config'; import { buildWhere, gql, querySubgraph } from '@nftx/subgraph'; +import type { Address } from '@nftx/types'; import { getChainConstant } from '@nftx/utils'; export type Response = { @@ -14,7 +15,7 @@ export type Response = { }>; vaults: Array<{ vaultId: string; - id: string; + id: Address; is1155: boolean; isFinalized: boolean; totalHoldings: string; @@ -24,12 +25,12 @@ export type Response = { createdAt: string; holdings: Array<{ id: string; - tokenId: string; - amount: string; + tokenId: `${number}`; + amount: `${number}`; dateAdded: string; }>; token: { - id: string; + id: Address; name: string; symbol: string; }; @@ -42,18 +43,18 @@ export type Response = { }; usesFactoryFees: boolean; asset: { - id: string; + id: Address; name: string; symbol: string; }; manager: { - id: string; + id: Address; }; createdBy: { - id: string; + id: Address; }; eligibilityModule: { - id: string; + id: Address; name: string; eligibleIds: string[]; eligibleRange: [string, string]; @@ -66,22 +67,22 @@ export type Response = { enableTargetSwap: boolean; }; inventoryStakingPool: { - id: string; + id: Address; dividendToken: { - id: string; + id: Address; name: string; symbol: string; }; }; lpStakingPool: { - id: string; + id: Address; stakingToken: { - id: string; + id: Address; name: string; symbol: string; }; dividendToken: { - id: string; + id: Address; name: string; symbol: string; }; @@ -101,11 +102,11 @@ const fetchSubgraphVaults = async ({ retryCount = 0, }: { network?: number; - vaultAddresses?: string[]; + vaultAddresses?: Address[]; vaultIds?: string[]; includeEmptyVaults?: boolean; finalisedOnly?: boolean; - manager?: string; + manager?: Address; lastId?: number; retryCount?: number; }): Promise => { diff --git a/packages/core/src/vaults/fetchVault.ts b/packages/core/src/vaults/fetchVault.ts index ac4a2ce9..a4420808 100644 --- a/packages/core/src/vaults/fetchVault.ts +++ b/packages/core/src/vaults/fetchVault.ts @@ -1,5 +1,5 @@ -import type { Provider } from '@ethersproject/providers'; import config from '@nftx/config'; +import type { Address, Provider } from '@nftx/types'; import fetchVaults from './fetchVaults'; async function fetchVault({ @@ -10,14 +10,14 @@ async function fetchVault({ }: { network?: number; provider: Provider; - vaultAddress?: string; + vaultAddress?: Address; vaultId?: string; }) { const vaults = await fetchVaults({ network, provider, - vaultIds: vaultId == null ? null : [vaultId], - vaultAddresses: vaultAddress == null ? null : [vaultAddress], + vaultIds: vaultId == null ? undefined : [vaultId], + vaultAddresses: vaultAddress == null ? undefined : [vaultAddress], enabledOnly: false, finalisedOnly: false, includeEmptyVaults: true, diff --git a/packages/core/src/vaults/fetchVaultActivity/__tests__/fetchVaultActivity.test.ts b/packages/core/src/vaults/fetchVaultActivity/__tests__/fetchVaultActivity.test.ts new file mode 100644 index 00000000..3aab521f --- /dev/null +++ b/packages/core/src/vaults/fetchVaultActivity/__tests__/fetchVaultActivity.test.ts @@ -0,0 +1,417 @@ +import type { GetAll } from '../getAll'; +import { + FetchMints, + makeFetchMints, + makeProcessMints, + Mint, + ProcessMints, +} from '../mints'; +import { + FetchRedeems, + makeFetchRedeems, + makeProcessRedeems, + ProcessRedeems, + Redeem, +} from '../redeems'; +import { + FetchSwaps, + makeFetchSwaps, + makeProcessSwaps, + ProcessSwaps, + Swap, +} from '../swaps'; +import makeFetchVaultActivity from '../fetchVaultActivity'; +import makeGetAll from '../getAll'; +import { getChainConstant } from '@nftx/utils'; +import { + NFTX_MARKETPLACE_0X_ZAP, + NFTX_STAKING_ZAP, + Zero, +} from '@nftx/constants'; +import { parseEther } from 'viem'; + +let processRedeems: ProcessRedeems; +let fetchRedeems: FetchRedeems; +let queryRedeems: jest.Mock; +let redeemsResponse: { redeems: Redeem[] }; +let processSwaps: ProcessSwaps; +let fetchSwaps: FetchSwaps; +let querySwaps: jest.Mock; +let swapsResponse: { swaps: Swap[] }; +let processMints: ProcessMints; +let fetchMints: FetchMints; +let queryMints: jest.Mock; +let mintsResponse: { mints: Mint[] }; +let queryResponse: { + mints: Mint[]; + redeems: Redeem[]; + swaps: Swap[]; +}; +let querySubgraph: jest.Mock; +let getAll: GetAll; +let fetchVaultActivity: ReturnType; +let run: () => ReturnType; + +beforeEach(() => { + queryResponse = { + mints: [ + { + zapAction: null as any, + amounts: ['0.1'], + date: '0', + feeReceipt: { + date: '0', + transfers: [ + { + amount: parseEther('0.1').toString() as `${number}`, + to: '0x0', + }, + ], + }, + id: '0x1', + nftIds: ['1'], + source: '', + user: { + id: '0x0', + }, + vault: { + id: '0x1', + asset: { + id: '0x2', + }, + inventoryStakingPool: null as any, + token: { + symbol: 'PUNK', + }, + vaultId: '0', + }, + }, + ], + redeems: [ + { + date: '1000', + feeReceipt: { + date: '1000', + transfers: [ + { + amount: parseEther('0.1').toString() as `${number}`, + to: '0x0', + }, + ], + }, + id: '0x1', + nftIds: ['2'], + randomCount: '0', + source: '', + specificIds: ['2'], + user: { id: '0x0' }, + zapAction: null as any, + vault: { + id: '0x1', + asset: { id: '0x0' }, + token: { symbol: 'PUNK' }, + vaultId: '0', + }, + }, + ], + swaps: [ + { + id: '0x1', + date: '2000', + feeReceipt: { + date: '2000', + transfers: [ + { amount: parseEther('0.1').toString() as `${number}`, to: '0x0' }, + ], + }, + mintedIds: ['3'], + randomCount: '0', + redeemedIds: ['4'], + source: '', + specificIds: ['4'], + targetCount: '1', + zapAction: null as any, + vault: { + asset: { id: '0x0' }, + id: '0x1', + inventoryStakingPool: null as any, + token: { symbol: 'PUNK' }, + vaultId: '0', + }, + }, + ], + }; + querySubgraph = jest.fn().mockResolvedValue(queryResponse); + + redeemsResponse = { redeems: queryResponse.redeems }; + queryRedeems = jest.fn().mockResolvedValue(redeemsResponse); + fetchRedeems = makeFetchRedeems({ querySubgraph: queryRedeems }); + processRedeems = makeProcessRedeems({ fetchRedeems }); + + swapsResponse = { swaps: queryResponse.swaps }; + querySwaps = jest.fn().mockResolvedValue(swapsResponse); + fetchSwaps = makeFetchSwaps({ querySubgraph: querySwaps }); + processSwaps = makeProcessSwaps({ fetchSwaps }); + + mintsResponse = { mints: queryResponse.mints }; + queryMints = jest.fn().mockResolvedValue(mintsResponse); + fetchMints = makeFetchMints({ querySubgraph: queryMints }); + processMints = makeProcessMints({ fetchMints }); + + getAll = makeGetAll({ + processMints, + processRedeems, + processSwaps, + querySubgraph, + }); + + fetchVaultActivity = makeFetchVaultActivity({ getAll }); + run = () => fetchVaultActivity({ network: 1 }); +}); + +it('fetches mints redeems and swaps in a single subgraph call', async () => { + await run(); + + expect(querySubgraph).toBeCalledTimes(1); + expect(queryMints).not.toBeCalled(); + expect(queryRedeems).not.toBeCalled(); + expect(querySwaps).not.toBeCalled(); +}); + +it('returns a list of mints swaps redeems and all activity', async () => { + const { activity, mints, redeems, swaps } = await run(); + + expect(mints).toHaveLength(1); + expect(redeems).toHaveLength(1); + expect(swaps).toHaveLength(1); + expect(activity).toHaveLength(3); +}); + +it('orders activity by timestamp', async () => { + const { activity } = await run(); + + const timestamps = activity.map((x) => x.date); + + expect(timestamps).toEqual([0, 1000, 2000]); +}); + +describe('mints', () => { + it('returns a list of mints', async () => { + const { mints } = await run(); + + expect(mints).toEqual([ + { + amount: 0.1, + date: 0, + ethAmount: Zero, + feeAmount: parseEther('0.1'), + source: '', + tokenId: '1', + txId: '0x1', + type: expect.any(String), + vaultAddress: '0x1', + vaultId: '0', + }, + ]); + }); + describe('when there are multiple NFTs in a single mint', () => { + beforeEach(() => { + queryResponse.mints[0].nftIds[1] = '11'; + }); + + it('returns a mint for each NFT', async () => { + const { mints } = await run(); + + expect(mints).toHaveLength(2); + }); + }); + describe('when mint was made by the staking zap', () => { + beforeEach(() => { + queryResponse.mints[0].user.id = getChainConstant(NFTX_STAKING_ZAP, 1); + }); + + it('is a liquidity stake', async () => { + const { mints } = await run(); + + expect(mints[0].type).toBe('stake'); + expect(mints[0].stakeType).toBe('liquidity'); + }); + }); + describe('when mint was made by the inventory staking pool', () => { + beforeEach(() => { + queryResponse.mints[0].user.id = '0x789'; + queryResponse.mints[0].vault.inventoryStakingPool = { id: '0x789' }; + }); + + it('is an inventory stake', async () => { + const { mints } = await run(); + + expect(mints[0].type).toBe('stake'); + expect(mints[0].stakeType).toBe('inventory'); + }); + }); + describe('when mint was made by the 0x marketplace zap', () => { + beforeEach(() => { + queryResponse.mints[0].user.id = getChainConstant( + NFTX_MARKETPLACE_0X_ZAP, + 1 + ); + }); + + it('is a sell', async () => { + const { mints } = await run(); + + expect(mints[0].type).toBe('sell'); + }); + }); + describe('when mint was not made by any zaps', () => { + it('is a mint', async () => { + const { mints } = await run(); + + expect(mints[0].type).toBe('mint'); + }); + }); + describe('when there are more than 1000 mints', () => { + beforeEach(() => { + queryResponse.mints = new Array(1000).fill(queryResponse.mints[0]); + }); + + it('fetches more mints', async () => { + const { mints } = await run(); + + expect(querySubgraph).toBeCalledTimes(1); + expect(queryMints).toBeCalledTimes(1); + expect(mints).toHaveLength(1001); + }); + }); +}); + +describe('redeems', () => { + it('returns a list of redeems', async () => { + const { redeems } = await run(); + + expect(redeems).toEqual([ + { + amount: 1, + date: 1000, + ethAmount: undefined, + feeAmount: parseEther('0.1'), + random: false, + source: '', + tokenId: '2', + txId: '0x1', + type: expect.any(String), + vaultAddress: '0x1', + vaultId: '0', + }, + ]); + }); + + describe('when there are multiple NFTs in a single redeem', () => { + beforeEach(() => { + queryResponse.redeems[0].nftIds.push('9'); + }); + + it('returns a redeem for each NFT', async () => { + const { redeems } = await run(); + + expect(redeems).toHaveLength(2); + }); + }); + describe('when a redeem has a zapAction', () => { + beforeEach(() => { + queryResponse.redeems[0].zapAction = { ethAmount: '0', id: '' }; + }); + + it('is a buy', async () => { + const { redeems } = await run(); + + expect(redeems[0].type).toBe('buy'); + }); + }); + describe('when a redeem was a 0 amount', () => { + beforeEach(() => { + queryResponse.redeems[0].feeReceipt.transfers[0].amount = '0'; + }); + + it('is an unstake', async () => { + const { redeems } = await run(); + + expect(redeems[0].type).toBe('unstake'); + }); + }); + describe('when a redeem was not made by a zap', () => { + it('is a redeem', async () => { + const { redeems } = await run(); + + expect(redeems[0].type).toBe('redeem'); + }); + }); + describe('when there are more than 1000 redeems', () => { + beforeEach(() => { + queryResponse.redeems = new Array(1000).fill(queryResponse.redeems[0]); + }); + + it('fetches more redeems', async () => { + const { redeems } = await run(); + + expect(querySubgraph).toBeCalledTimes(1); + expect(queryRedeems).toBeCalledTimes(1); + expect(redeems).toHaveLength(1001); + }); + }); +}); + +describe('swaps', () => { + it('returns a list of swaps', async () => { + const { swaps } = await run(); + + expect(swaps).toEqual([ + { + amount: 1, + date: 2000, + ethAmount: Zero, + feeAmount: parseEther('0.1'), + source: '', + swapTokenId: expect.any(String), + tokenId: expect.any(String), + txId: '0x1', + type: expect.any(String), + vaultAddress: '0x1', + vaultId: '0', + }, + ]); + }); + it('includes the tokenID that was swapped as well as the id that was received', async () => { + const { swaps } = await run(); + + expect(swaps[0].tokenId).toBe('4'); + expect(swaps[0].swapTokenId).toBe('3'); + }); + describe('when there were multiple NFTs in a single swap', () => { + beforeEach(() => { + queryResponse.swaps[0].mintedIds.push('11'); + queryResponse.swaps[0].redeemedIds.push('12'); + }); + + it('returns a swap for each NFT', async () => { + const { swaps } = await run(); + + expect(swaps).toHaveLength(2); + }); + }); + + describe('when there are more than 1000 swaps', () => { + beforeEach(() => { + queryResponse.swaps = new Array(1000).fill(queryResponse.swaps[0]); + }); + + it('fetches more swaps', async () => { + const { swaps } = await run(); + + expect(querySubgraph).toBeCalledTimes(1); + expect(querySwaps).toBeCalledTimes(1); + expect(swaps).toHaveLength(1001); + }); + }); +}); diff --git a/packages/core/src/vaults/fetchVaultActivity/common.ts b/packages/core/src/vaults/fetchVaultActivity/common.ts index ee23cec3..adcede98 100644 --- a/packages/core/src/vaults/fetchVaultActivity/common.ts +++ b/packages/core/src/vaults/fetchVaultActivity/common.ts @@ -1,22 +1,18 @@ -import { BigNumber } from '@ethersproject/bignumber'; -import { Zero } from '@ethersproject/constants'; -import type { VaultFeeReceipt } from '@nftx/types'; +import { Zero } from '@nftx/constants'; +import type { Address, VaultFeeReceipt } from '@nftx/types'; export const transformFeeReceipt = ( receipt: { transfers: Array<{ amount: string; to: string }>; date: string }, - vaultAddress: string, + vaultAddress: Address, vaultId: string ): VaultFeeReceipt => { const date = Number(receipt.date); const transfers = receipt.transfers.map((transfer) => { - const amount = BigNumber.from(transfer.amount); + const amount = BigInt(transfer.amount); const to = transfer.to; return { amount, to }; }); - const amount = transfers.reduce( - (total, { amount }) => total.add(amount), - Zero - ); + const amount = transfers.reduce((total, { amount }) => total + amount, Zero); return { vaultAddress, vaultId, date, transfers, amount }; }; diff --git a/packages/core/src/vaults/fetchVaultActivity/fetchVaultActivity.ts b/packages/core/src/vaults/fetchVaultActivity/fetchVaultActivity.ts index 060fb5c4..0aa037a6 100644 --- a/packages/core/src/vaults/fetchVaultActivity/fetchVaultActivity.ts +++ b/packages/core/src/vaults/fetchVaultActivity/fetchVaultActivity.ts @@ -1,28 +1,28 @@ import config from '@nftx/config'; -import { getAll } from './getAll'; +import type { Address } from '@nftx/types'; +import type { GetAll } from './getAll'; -function fetchVaultActivity({ - network = config.network, - fromTimestamp, - vaultAddress, - vaultAddresses = vaultAddress ? [vaultAddress] : undefined, - toTimestamp, -}: { - network?: number; - vaultAddress?: string; - vaultAddresses?: string[]; - fromTimestamp?: number; - toTimestamp?: number; -}) { - const roundedTimestamp = fromTimestamp - ? Math.floor(Math.round(fromTimestamp / 3600) * 3600) - : undefined; - return getAll({ - network, - vaultAddresses, - fromTimestamp: roundedTimestamp, +export default ({ getAll }: { getAll: GetAll }) => + function fetchVaultActivity({ + network = config.network, + fromTimestamp = 0, + vaultAddress, + vaultAddresses = vaultAddress ? [vaultAddress] : undefined, toTimestamp, - }); -} - -export default fetchVaultActivity; + }: { + network?: number; + vaultAddress?: Address; + vaultAddresses?: Address[]; + fromTimestamp?: number; + toTimestamp?: number; + }) { + const roundedTimestamp = Math.floor( + Math.round(fromTimestamp / 3600) * 3600 + ); + return getAll({ + network, + vaultAddresses, + fromTimestamp: roundedTimestamp, + toTimestamp, + }); + }; diff --git a/packages/core/src/vaults/fetchVaultActivity/getAll.ts b/packages/core/src/vaults/fetchVaultActivity/getAll.ts index 0a075b9b..4099a49f 100644 --- a/packages/core/src/vaults/fetchVaultActivity/getAll.ts +++ b/packages/core/src/vaults/fetchVaultActivity/getAll.ts @@ -1,63 +1,85 @@ import config from '@nftx/config'; -import { buildWhere, gql, querySubgraph } from '@nftx/subgraph'; +import { buildWhere, gql, type querySubgraph } from '@nftx/subgraph'; +import type { Address } from '@nftx/types'; import { getChainConstant } from '@nftx/utils'; -import { createMintsQuery, Mint, processMints } from './mints'; -import { createRedeemsQuery, processRedeems, Redeem } from './redeems'; -import { createSwapsQuery, processSwaps, Swap } from './swaps'; +import { createMintsQuery, type Mint, type ProcessMints } from './mints'; +import { + createRedeemsQuery, + type ProcessRedeems, + type Redeem, +} from './redeems'; +import { createSwapsQuery, type ProcessSwaps, type Swap } from './swaps'; -export const getAll = async ({ - fromTimestamp, - toTimestamp, - vaultAddresses, - network, +type QuerySubgraph = typeof querySubgraph; + +const makeGetAll = ({ + processMints, + processRedeems, + processSwaps, + querySubgraph, }: { - network: number; - vaultAddresses?: string[]; - fromTimestamp?: number; - toTimestamp?: number; -}) => { - const where = buildWhere({ - date_gt: fromTimestamp, - date_lte: toTimestamp, - vault: vaultAddresses?.length === 1 ? vaultAddresses[0] : null, - vault_in: vaultAddresses?.length === 1 ? null : vaultAddresses, - }); - const query = gql<{ - mints: Mint[]; - redeems: Redeem[]; - swaps: Swap[]; - }>`{ + querySubgraph: QuerySubgraph; + processMints: ProcessMints; + processRedeems: ProcessRedeems; + processSwaps: ProcessSwaps; +}) => + async function getAll({ + fromTimestamp, + toTimestamp, + vaultAddresses, + network, + }: { + network: number; + vaultAddresses?: Address[]; + fromTimestamp?: number; + toTimestamp?: number; + }) { + const where = buildWhere({ + date_gt: fromTimestamp, + date_lte: toTimestamp, + vault: vaultAddresses?.length === 1 ? vaultAddresses[0] : null, + vault_in: vaultAddresses?.length === 1 ? null : vaultAddresses, + }); + const query = gql<{ + mints: Mint[]; + redeems: Redeem[]; + swaps: Swap[]; + }>`{ ${createMintsQuery(where)} ${createRedeemsQuery(where)} ${createSwapsQuery(where)} }`; - const response = await querySubgraph({ - url: getChainConstant(config.subgraph.NFTX_SUBGRAPH, network), - query, - }); + const response = await querySubgraph({ + url: getChainConstant(config.subgraph.NFTX_SUBGRAPH, network), + query, + }); - const mints = await processMints( - response, - network, - vaultAddresses, - toTimestamp - ); - const redeems = await processRedeems( - response, - network, - vaultAddresses, - toTimestamp - ); - const swaps = await processSwaps( - response, - network, - vaultAddresses, - toTimestamp - ); - const activity = [...mints, ...redeems, ...swaps].sort( - (a, b) => a.date - b.date - ); + const mints = await processMints({ + response, + network, + vaultAddresses, + toTimestamp, + }); + const redeems = await processRedeems({ + response, + network, + vaultAddresses, + toTimestamp, + }); + const swaps = await processSwaps({ + response, + network, + vaultAddresses, + toTimestamp, + }); + const activity = [...mints, ...redeems, ...swaps].sort( + (a, b) => a.date - b.date + ); + + return { mints, swaps, redeems, activity }; + }; + +export default makeGetAll; - return { mints, swaps, redeems, activity }; -}; +export type GetAll = ReturnType; diff --git a/packages/core/src/vaults/fetchVaultActivity/index.ts b/packages/core/src/vaults/fetchVaultActivity/index.ts index c94a82ea..182b7944 100644 --- a/packages/core/src/vaults/fetchVaultActivity/index.ts +++ b/packages/core/src/vaults/fetchVaultActivity/index.ts @@ -1 +1,21 @@ -export { default } from './fetchVaultActivity'; +import { querySubgraph } from '@nftx/subgraph'; +import makeFetchVaultActivity from './fetchVaultActivity'; +import makeGetAll from './getAll'; +import { makeFetchMints, makeProcessMints } from './mints'; +import { makeFetchRedeems, makeProcessRedeems } from './redeems'; +import { makeFetchSwaps, makeProcessSwaps } from './swaps'; + +export default makeFetchVaultActivity({ + getAll: makeGetAll({ + processMints: makeProcessMints({ + fetchMints: makeFetchMints({ querySubgraph }), + }), + processRedeems: makeProcessRedeems({ + fetchRedeems: makeFetchRedeems({ querySubgraph }), + }), + processSwaps: makeProcessSwaps({ + fetchSwaps: makeFetchSwaps({ querySubgraph }), + }), + querySubgraph, + }), +}); diff --git a/packages/core/src/vaults/fetchVaultActivity/mints.ts b/packages/core/src/vaults/fetchVaultActivity/mints.ts index 43cb8e51..4b4deebc 100644 --- a/packages/core/src/vaults/fetchVaultActivity/mints.ts +++ b/packages/core/src/vaults/fetchVaultActivity/mints.ts @@ -1,32 +1,33 @@ -import { BigNumber } from '@ethersproject/bignumber'; import { NFTX_MARKETPLACE_0X_ZAP, NFTX_STAKING_ZAP } from '@nftx/constants'; -import { buildWhere, gql, querySubgraph } from '@nftx/subgraph'; +import { buildWhere, gql, type querySubgraph } from '@nftx/subgraph'; import { transformFeeReceipt } from './common'; import config from '@nftx/config'; -import type { VaultActivity } from '@nftx/types'; +import type { Address, TokenId, VaultActivity } from '@nftx/types'; import { addressEqual, getChainConstant } from '@nftx/utils'; +type QuerySubgraph = typeof querySubgraph; + export type Mint = { - id: string; + id: Address; zapAction: { ethAmount: string; id: string; }; vault: { - id: string; + id: Address; vaultId: string; token: { symbol: string }; - asset: { id: string }; - inventoryStakingPool: { id: string }; + asset: { id: Address }; + inventoryStakingPool: { id: Address }; }; source: string; - user: { id: string }; - date: string; - nftIds: string[]; - amounts: string[]; + user: { id: Address }; + date: `${number}`; + nftIds: TokenId[]; + amounts: `${number}`[]; feeReceipt: { - transfers: Array<{ amount: string; to: string }>; - date: string; + transfers: Array<{ amount: `${number}`; to: Address }>; + date: `${number}`; }; }; @@ -100,82 +101,91 @@ const isStakeOrMint = ( return ['mint', undefined]; }; -export const processMints = async ( - response: { mints: Mint[] }, - network: number, - vaultAddresses: string[], - toTimestamp: number -) => { - let mints = response.mints.flatMap((mint): VaultActivity[] => { - const receipt = transformFeeReceipt( - mint.feeReceipt, - mint.vault.id, - mint.vault.vaultId - ); - const [type, stakeType] = isStakeOrMint(mint, network); - - return mint.nftIds.map((nftId, i): VaultActivity => { - return { - vaultId: mint.vault.vaultId, - vaultAddress: mint.vault.id, - date: Number(mint.date), - tokenId: nftId, - source: mint.source, - txId: mint.id.split('-')[1] ?? mint.id, - amount: Number(mint.amounts[i]), - ethAmount: BigNumber.from(mint?.zapAction?.ethAmount ?? 0), - feeAmount: receipt.amount.div(mint.nftIds.length), - type, - stakeType, - }; - }); - }); +export const makeProcessMints = ({ fetchMints }: { fetchMints: FetchMints }) => + async function processMints({ + network, + response, + toTimestamp, + vaultAddresses, + }: { + response: { mints: Mint[] }; + network: number; + vaultAddresses?: Address[]; + toTimestamp?: number; + }) { + let mints = response.mints.flatMap((mint): VaultActivity[] => { + const receipt = transformFeeReceipt( + mint.feeReceipt, + mint.vault.id, + mint.vault.vaultId + ); + const [type, stakeType] = isStakeOrMint(mint, network); - if (response.mints.length === 1000) { - const lastMint = mints[mints.length - 1]; - const nextTimestamp = lastMint.date; - const moreMints = await getMints({ - network, - vaultAddresses, - fromTimestamp: Number(nextTimestamp), - toTimestamp, + return mint.nftIds.map((nftId, i): VaultActivity => { + return { + vaultId: mint.vault.vaultId, + vaultAddress: mint.vault.id, + date: Number(mint.date), + tokenId: nftId, + source: mint.source, + txId: (mint.id.split('-')[1] ?? mint.id) as Address, + amount: Number(mint.amounts[i]), + ethAmount: BigInt(mint?.zapAction?.ethAmount ?? '0'), + feeAmount: receipt.amount / BigInt(mint.nftIds.length), + type, + stakeType, + }; + }); }); - mints = [...mints, ...moreMints]; - } - return mints; -}; + if (response.mints.length === 1000) { + const lastMint = mints[mints.length - 1]; + const nextTimestamp = lastMint.date; + const response = await fetchMints({ + network, + vaultAddresses, + fromTimestamp: Number(nextTimestamp), + toTimestamp, + }); + const moreMints = await processMints({ + response, + network, + vaultAddresses, + toTimestamp, + }); + mints = [...mints, ...moreMints]; + } -export const getMints = async ({ - network, - fromTimestamp, - toTimestamp, - vaultAddresses, -}: { - network: number; - fromTimestamp: number; - toTimestamp: number; - vaultAddresses: string[]; -}) => { - const where = buildWhere({ - date_gt: fromTimestamp, - date_lte: toTimestamp, - vault: vaultAddresses?.length === 1 ? vaultAddresses[0] : null, - vault_in: vaultAddresses?.length === 1 ? null : vaultAddresses, - }); - const query = gql<{ mints: Mint[] }>`{ ${createMintsQuery(where)} }`; + return mints; + }; - const response = await querySubgraph({ - url: getChainConstant(config.subgraph.NFTX_SUBGRAPH, network), - query, - }); +export type ProcessMints = ReturnType; - const mints = await processMints( - response, +export const makeFetchMints = + ({ querySubgraph }: { querySubgraph: QuerySubgraph }) => + async ({ network, + fromTimestamp, + toTimestamp, vaultAddresses, - toTimestamp - ); + }: { + network: number; + fromTimestamp: number; + toTimestamp?: number; + vaultAddresses?: Address[]; + }) => { + const where = buildWhere({ + date_gt: fromTimestamp, + date_lte: toTimestamp, + vault: vaultAddresses?.length === 1 ? vaultAddresses[0] : null, + vault_in: vaultAddresses?.length === 1 ? null : vaultAddresses, + }); + const query = gql<{ mints: Mint[] }>`{ ${createMintsQuery(where)} }`; - return mints; -}; + return querySubgraph({ + url: getChainConstant(config.subgraph.NFTX_SUBGRAPH, network), + query, + }); + }; + +export type FetchMints = ReturnType; diff --git a/packages/core/src/vaults/fetchVaultActivity/redeems.ts b/packages/core/src/vaults/fetchVaultActivity/redeems.ts index eab90a42..9586174c 100644 --- a/packages/core/src/vaults/fetchVaultActivity/redeems.ts +++ b/packages/core/src/vaults/fetchVaultActivity/redeems.ts @@ -1,31 +1,38 @@ -import { BigNumber } from '@ethersproject/bignumber'; import config from '@nftx/config'; -import { buildWhere, gql, querySubgraph } from '@nftx/subgraph'; -import type { VaultActivity, VaultFeeReceipt } from '@nftx/types'; +import { Zero } from '@nftx/constants'; +import { buildWhere, gql, type querySubgraph } from '@nftx/subgraph'; +import type { + Address, + TokenId, + VaultActivity, + VaultFeeReceipt, +} from '@nftx/types'; import { getChainConstant } from '@nftx/utils'; import { transformFeeReceipt } from './common'; +type QuerySubgraph = typeof querySubgraph; + export type Redeem = { - id: string; + id: Address; zapAction: { ethAmount: string; id: string }; vault: { - id: string; + id: Address; vaultId: string; token: { symbol: string }; - asset: { id: string }; + asset: { id: Address }; }; source: string; - user: { id: string }; - date: string; - nftIds: string[]; - specificIds: string[]; - randomCount: string; + user: { id: Address }; + date: `${number}`; + nftIds: TokenId[]; + specificIds: TokenId[]; + randomCount: `${number}`; feeReceipt: { transfers: Array<{ - amount: string; - to: string; + amount: `${number}`; + to: Address; }>; - date: string; + date: `${number}`; }; }; @@ -74,94 +81,106 @@ const isRedeemOrUnstake = (redeem: Redeem, receipt: VaultFeeReceipt) => { if (redeem.zapAction != null) { return 'buy'; } - if (receipt.amount.eq(0)) { + if (receipt.amount === Zero) { return 'unstake'; } return 'redeem'; }; -export const processRedeems = async ( - response: { redeems: Redeem[] }, - network: number, - vaultAddresses: string[], - toTimestamp: number -) => { - let redeems = response.redeems.flatMap((redeem) => { - const receipt = transformFeeReceipt( - redeem.feeReceipt, - redeem.vault.id, - redeem.vault.vaultId - ); - return redeem.nftIds.map((nftId): VaultActivity => { - const target = redeem.specificIds?.includes(nftId); - // TODO: figure out a way to get msg.sender so we know if it's gem etc. - - return { - tokenId: nftId, - vaultId: redeem.vault.vaultId, - vaultAddress: redeem.vault.id, - date: Number(redeem.date), - txId: redeem.id.split('-')[1] ?? redeem.id, - random: !target, - type: isRedeemOrUnstake(redeem, receipt), - source: redeem.source, - amount: 1, - ethAmount: redeem?.zapAction?.ethAmount - ? BigNumber.from(redeem.zapAction.ethAmount) - : null, - feeAmount: receipt.amount.div(redeem.nftIds.length), - }; - }); - }); +export const makeProcessRedeems = ({ + fetchRedeems, +}: { + fetchRedeems: FetchRedeems; +}) => + async function processRedeems({ + network, + response, + toTimestamp, + vaultAddresses, + }: { + response: { redeems: Redeem[] }; + network: number; + vaultAddresses?: Address[]; + toTimestamp?: number; + }) { + let redeems = response.redeems.flatMap((redeem) => { + const receipt = transformFeeReceipt( + redeem.feeReceipt, + redeem.vault.id, + redeem.vault.vaultId + ); + return redeem.nftIds.map((nftId): VaultActivity => { + const target = redeem.specificIds?.includes(nftId); - if (response.redeems.length === 1000) { - const lastRedeem = redeems[redeems.length - 1]; - const nextTimestamp = lastRedeem.date; - const moreRedeems = await getRedeems({ - vaultAddresses, - network, - fromTimestamp: nextTimestamp, - toTimestamp, + return { + tokenId: nftId, + vaultId: redeem.vault.vaultId, + vaultAddress: redeem.vault.id, + date: Number(redeem.date), + txId: (redeem.id.split('-')[1] ?? redeem.id) as Address, + random: !target, + type: isRedeemOrUnstake(redeem, receipt), + source: redeem.source, + amount: 1, + ethAmount: redeem?.zapAction?.ethAmount + ? BigInt(redeem.zapAction.ethAmount) + : (undefined as any), + feeAmount: receipt.amount / BigInt(redeem.nftIds.length), + }; + }); }); - redeems = [...redeems, ...moreRedeems]; - } + if (response.redeems.length === 1000) { + const lastRedeem = redeems[redeems.length - 1]; + const nextTimestamp = lastRedeem.date; + const response = await fetchRedeems({ + vaultAddresses, + network, + fromTimestamp: nextTimestamp, + toTimestamp, + }); + const moreRedeems = await processRedeems({ + response, + network, + vaultAddresses, + toTimestamp, + }); - return redeems; -}; + redeems = [...redeems, ...moreRedeems]; + } -export const getRedeems = async ({ - network, - fromTimestamp, - toTimestamp, - vaultAddresses, -}: { - network: number; - fromTimestamp: number; - toTimestamp: number; - vaultAddresses: string[]; -}) => { - const where = buildWhere({ - date_gt: fromTimestamp, - date_lte: toTimestamp, - vault: vaultAddresses?.length === 1 ? vaultAddresses[0] : null, - vault_in: vaultAddresses?.length === 1 ? null : vaultAddresses, - }); - const query = gql<{ - redeems: Redeem[]; - }>`{ ${createRedeemsQuery(where)} }`; + return redeems; + }; - const response = await querySubgraph({ - url: getChainConstant(config.subgraph.NFTX_SUBGRAPH, network), - query, - }); +export type ProcessRedeems = ReturnType; - const mints = await processRedeems( - response, +export const makeFetchRedeems = + ({ querySubgraph }: { querySubgraph: QuerySubgraph }) => + async ({ network, + fromTimestamp, + toTimestamp, vaultAddresses, - toTimestamp - ); + }: { + network: number; + fromTimestamp: number; + toTimestamp?: number; + vaultAddresses?: Address[]; + }) => { + const where = buildWhere({ + date_gt: fromTimestamp, + date_lte: toTimestamp, + vault: vaultAddresses?.length === 1 ? vaultAddresses[0] : null, + vault_in: vaultAddresses?.length === 1 ? null : vaultAddresses, + }); + const query = gql<{ + redeems: Redeem[]; + }>`{ ${createRedeemsQuery(where)} }`; - return mints; -}; + return querySubgraph({ + url: getChainConstant(config.subgraph.NFTX_SUBGRAPH, network), + query, + }); + }; + +export type FetchRedeems = ReturnType; diff --git a/packages/core/src/vaults/fetchVaultActivity/swaps.ts b/packages/core/src/vaults/fetchVaultActivity/swaps.ts index b9f1ecf7..7194dd09 100644 --- a/packages/core/src/vaults/fetchVaultActivity/swaps.ts +++ b/packages/core/src/vaults/fetchVaultActivity/swaps.ts @@ -1,33 +1,34 @@ -import { BigNumber } from '@ethersproject/bignumber'; import config from '@nftx/config'; -import { buildWhere, gql, querySubgraph } from '@nftx/subgraph'; -import type { VaultActivity } from '@nftx/types'; +import { buildWhere, gql, type querySubgraph } from '@nftx/subgraph'; +import type { Address, TokenId, VaultActivity } from '@nftx/types'; import { getChainConstant } from '@nftx/utils'; import { transformFeeReceipt } from './common'; +type QuerySubgraph = typeof querySubgraph; + export type Swap = { - id: string; + id: Address; zapAction: { ethAmount: string; id: string; }; vault: { - id: string; + id: Address; vaultId: string; token: { symbol: string }; - asset: { id: string }; - inventoryStakingPool: { id: string }; + asset: { id: Address }; + inventoryStakingPool: { id: Address }; }; - date: string; + date: `${number}`; source: string; - mintedIds: string[]; - redeemedIds: string[]; - specificIds: string[]; - randomCount: string; - targetCount: string; + mintedIds: TokenId[]; + redeemedIds: TokenId[]; + specificIds: TokenId[]; + randomCount: `${number}`; + targetCount: `${number}`; feeReceipt: { - transfers: Array<{ amount: string; to: string }>; - date: string; + transfers: Array<{ amount: `${number}`; to: Address }>; + date: `${number}`; }; }; @@ -73,81 +74,91 @@ export const createSwapsQuery = (where: string) => { }`; }; -export const processSwaps = async ( - response: { swaps: Swap[] }, - network: number, - vaultAddresses: string[], - toTimestamp: number -) => { - let swaps = response.swaps.flatMap((swap): VaultActivity[] => { - const receipt = transformFeeReceipt( - swap.feeReceipt, - swap.vault.id, - swap.vault.vaultId - ); +export const makeProcessSwaps = ({ fetchSwaps }: { fetchSwaps: FetchSwaps }) => + async function processSwaps({ + network, + response, + toTimestamp, + vaultAddresses, + }: { + response: { swaps: Swap[] }; + network: number; + toTimestamp?: number; + vaultAddresses?: Address[]; + }) { + let swaps = response.swaps.flatMap((swap): VaultActivity[] => { + const receipt = transformFeeReceipt( + swap.feeReceipt, + swap.vault.id, + swap.vault.vaultId + ); - return swap.redeemedIds.map((nftId, i): VaultActivity => { - return { - vaultId: swap.vault.vaultId, - vaultAddress: swap.vault.id, - date: Number(swap.date), - tokenId: nftId, - source: swap.source, - swapTokenId: swap.mintedIds[i], - txId: swap.id.split('-')[1] ?? swap.id, - amount: 1, - ethAmount: BigNumber.from(swap?.zapAction?.ethAmount ?? 0), - feeAmount: receipt.amount.div(swap.redeemedIds.length), - type: 'swap', - }; + return swap.redeemedIds.map((nftId, i): VaultActivity => { + return { + vaultId: swap.vault.vaultId, + vaultAddress: swap.vault.id, + date: Number(swap.date), + tokenId: nftId, + source: swap.source, + swapTokenId: swap.mintedIds[i], + txId: (swap.id.split('-')[1] ?? swap.id) as Address, + amount: 1, + ethAmount: BigInt(swap?.zapAction?.ethAmount ?? '0'), + feeAmount: receipt.amount / BigInt(swap.redeemedIds.length), + type: 'swap', + }; + }); }); - }); - if (response.swaps.length === 1000) { - const lastSwap = swaps[swaps.length - 1]; - const nextTimestamp = lastSwap.date; - const moreSwaps = await getSwaps({ - network, - vaultAddresses, - fromTimestamp: Number(nextTimestamp), - toTimestamp, - }); - swaps = [...swaps, ...moreSwaps]; - } + if (response.swaps.length === 1000) { + const lastSwap = swaps[swaps.length - 1]; + const nextTimestamp = lastSwap.date; + const response = await fetchSwaps({ + fromTimestamp: Number(nextTimestamp), + network, + toTimestamp, + vaultAddresses, + }); + const moreSwaps = await processSwaps({ + response, + network, + toTimestamp, + vaultAddresses, + }); - return swaps; -}; + swaps = [...swaps, ...moreSwaps]; + } -export const getSwaps = async ({ - network, - fromTimestamp, - toTimestamp, - vaultAddresses, -}: { - network: number; - fromTimestamp: number; - toTimestamp: number; - vaultAddresses: string[]; -}) => { - const where = buildWhere({ - date_gt: fromTimestamp, - date_lte: toTimestamp, - vault: vaultAddresses?.length === 1 ? vaultAddresses[0] : null, - vault_in: vaultAddresses?.length === 1 ? null : vaultAddresses, - }); - const query = gql<{ swaps: Swap[] }>`{ ${createSwapsQuery(where)} }`; + return swaps; + }; - const response = await querySubgraph({ - url: getChainConstant(config.subgraph.NFTX_SUBGRAPH, network), - query, - }); +export type ProcessSwaps = ReturnType; - const swaps = await processSwaps( - response, +export const makeFetchSwaps = + ({ querySubgraph }: { querySubgraph: QuerySubgraph }) => + async ({ network, + fromTimestamp, + toTimestamp, vaultAddresses, - toTimestamp - ); + }: { + network: number; + fromTimestamp: number; + toTimestamp?: number; + vaultAddresses?: Address[]; + }) => { + const where = buildWhere({ + date_gt: fromTimestamp, + date_lte: toTimestamp, + vault: vaultAddresses?.length === 1 ? vaultAddresses[0] : null, + vault_in: vaultAddresses?.length === 1 ? null : vaultAddresses, + }); + const query = gql<{ swaps: Swap[] }>`{ ${createSwapsQuery(where)} }`; - return swaps; -}; + return querySubgraph({ + url: getChainConstant(config.subgraph.NFTX_SUBGRAPH, network), + query, + }); + }; + +export type FetchSwaps = ReturnType; diff --git a/packages/core/src/vaults/fetchVaultApr.ts b/packages/core/src/vaults/fetchVaultApr.ts index 67152164..4d015edd 100644 --- a/packages/core/src/vaults/fetchVaultApr.ts +++ b/packages/core/src/vaults/fetchVaultApr.ts @@ -1,6 +1,7 @@ +import type { Address } from '@nftx/types'; import fetchVaultAprs from './fetchVaultAprs'; -const fetchVaultArs = async ({ vaultAddress }: { vaultAddress: string }) => { +const fetchVaultArs = async ({ vaultAddress }: { vaultAddress: Address }) => { const [vaultApy] = await fetchVaultAprs({ vaultAddresses: [vaultAddress] }); return vaultApy; }; diff --git a/packages/core/src/vaults/fetchVaultAprs.ts b/packages/core/src/vaults/fetchVaultAprs.ts index dde98e64..598f51fe 100644 --- a/packages/core/src/vaults/fetchVaultAprs.ts +++ b/packages/core/src/vaults/fetchVaultAprs.ts @@ -1,14 +1,15 @@ import config from '@nftx/config'; +import type { Address } from '@nftx/types'; import { addressEqual, getChainConstant } from '@nftx/utils'; type Response = Array<{ - vault_id: string; + vault_id: Address; inventoryApr: number; liquidityApr: number; }>; type VaultApr = { - vaultAddress: string; + vaultAddress: Address; inventoryApr: number; liquidityApr: number; }; @@ -18,7 +19,7 @@ const fetchVaultAprs = async ({ vaultAddresses, }: { network?: number; - vaultAddresses?: string[]; + vaultAddresses?: Address[]; } = {}): Promise => { const response = await fetch( getChainConstant(config.urls.NFTX_APR_URL, network) diff --git a/packages/core/src/vaults/fetchVaultFees.ts b/packages/core/src/vaults/fetchVaultFees.ts index a94c54e5..02572ffe 100644 --- a/packages/core/src/vaults/fetchVaultFees.ts +++ b/packages/core/src/vaults/fetchVaultFees.ts @@ -2,7 +2,7 @@ import { compareByAlpha, toLowerCase } from '../utils'; import { gql, querySubgraph } from '@nftx/subgraph'; import { transformFeeReceipt } from './fetchVaultActivity/common'; import config from '@nftx/config'; -import type { VaultFeeReceipt } from '@nftx/types'; +import type { Address, VaultFeeReceipt } from '@nftx/types'; import { getChainConstant } from '@nftx/utils'; const fetchSingleVaultFees = async ({ @@ -11,7 +11,7 @@ const fetchSingleVaultFees = async ({ network, retryCount = 0, }: { - vaultAddress: string; + vaultAddress: Address; fromTimestamp: number; network: number; retryCount?: number; @@ -20,8 +20,8 @@ const fetchSingleVaultFees = async ({ vault: { vaultId: string; feeReceipts: Array<{ - transfers: Array<{ amount: string; to: string }>; - date: string; + transfers: Array<{ amount: `${number}`; to: Address }>; + date: `${number}`; }>; }; }>` @@ -88,21 +88,21 @@ const fetchMultiVaultFees = async ({ retryCount = 0, }: { network: number; - vaultAddresses: string[]; + vaultAddresses: Address[]; fromTimestamp: number; lastId?: number; retryCount?: number; }): Promise => { type Response = { vaults: Array<{ - id: string; + id: Address; vaultId: string; feeReceipts: Array<{ transfers: Array<{ - amount: string; - to: string; + amount: `${number}`; + to: Address; }>; - date: string; + date: `${number}`; }>; }>; }; @@ -178,13 +178,13 @@ const fetchMultiVaultFees = async ({ function fetchVaultFees(args: { network?: number; - vaultAddress: string; + vaultAddress: Address; fromTimestamp?: number; retryCount?: number; }): Promise; function fetchVaultFees(args: { network?: number; - vaultAddresses: string[]; + vaultAddresses: Address[]; fromTimestamp?: number; retryCount?: number; }): Promise; @@ -192,16 +192,16 @@ async function fetchVaultFees({ network = config.network, vaultAddress, vaultAddresses, - fromTimestamp = 0, + fromTimestamp, }: { network?: number; - vaultAddress?: string; - vaultAddresses?: string[]; + vaultAddress?: Address; + vaultAddresses?: Address[]; fromTimestamp?: number; }) { - const roundedTimestamp = fromTimestamp - ? Math.floor(Math.round(fromTimestamp / 3600) * 3600) - : undefined; + const roundedTimestamp = Math.floor( + Math.round((fromTimestamp ?? 0) / 3600) * 3600 + ); if (vaultAddress) { return fetchSingleVaultFees({ @@ -217,7 +217,7 @@ async function fetchVaultFees({ network, }); } - if (vaultAddresses?.length > 1) { + if (vaultAddresses && vaultAddresses.length > 1) { return fetchMultiVaultFees({ vaultAddresses, fromTimestamp: roundedTimestamp, diff --git a/packages/core/src/vaults/fetchVaultHoldings/fetchVaultHoldings.ts b/packages/core/src/vaults/fetchVaultHoldings/fetchVaultHoldings.ts index 85090f5d..a4290d9a 100644 --- a/packages/core/src/vaults/fetchVaultHoldings/fetchVaultHoldings.ts +++ b/packages/core/src/vaults/fetchVaultHoldings/fetchVaultHoldings.ts @@ -1,6 +1,6 @@ import config from '@nftx/config'; import { gql, querySubgraph } from '@nftx/subgraph'; -import type { VaultHolding } from '@nftx/types'; +import type { Address, VaultHolding } from '@nftx/types'; import { getChainConstant } from '@nftx/utils'; import transformVaultHolding from './transformVaultHolding'; @@ -13,12 +13,17 @@ const fetchVaultHoldings = async ({ lastId = '0', }: { network?: number; - vaultAddress: string; + vaultAddress: Address; lastId?: string; }): Promise => { const query = gql<{ vault: { - holdings: Array<{ id: string; tokenId: string; dateAdded: string }>; + holdings: Array<{ + id: string; + tokenId: `${number}`; + dateAdded: `${number}`; + amount: `${number}`; + }>; }; }>`{ vault(id: $vaultAddress) { diff --git a/packages/core/src/vaults/fetchVaultHoldings/transformVaultHolding.ts b/packages/core/src/vaults/fetchVaultHoldings/transformVaultHolding.ts index fd32bd1a..04ca9ded 100644 --- a/packages/core/src/vaults/fetchVaultHoldings/transformVaultHolding.ts +++ b/packages/core/src/vaults/fetchVaultHoldings/transformVaultHolding.ts @@ -1,4 +1,3 @@ -import { BigNumber } from '@ethersproject/bignumber'; import type { VaultHolding } from '@nftx/types'; import type { Response } from '../fetchSubgraphVaults'; @@ -8,7 +7,7 @@ const transformVaultHolding = ( return { id: holding.id, tokenId: holding.tokenId, - amount: BigNumber.from(holding.amount), + amount: BigInt(holding.amount), dateAdded: Number(holding.dateAdded), }; }; diff --git a/packages/core/src/vaults/fetchVaults/fetchVaults.ts b/packages/core/src/vaults/fetchVaults/fetchVaults.ts index 811a0404..28800731 100644 --- a/packages/core/src/vaults/fetchVaults/fetchVaults.ts +++ b/packages/core/src/vaults/fetchVaults/fetchVaults.ts @@ -3,14 +3,13 @@ import fetchSubgraphVaults, { Response } from '../fetchSubgraphVaults'; import transformVault from './transformVault'; import fetchVaultHoldings from '../fetchVaultHoldings'; import config from '@nftx/config'; -import type { Provider } from '@ethersproject/providers'; import { addressEqual, fetchMerkleReference, fetchReservesForTokens, isMerkleVault, } from '@nftx/utils'; -import type { Vault } from '@nftx/types'; +import type { Address, Provider, Vault } from '@nftx/types'; const isVaultEnabled = (vault: Response['vaults'][0]) => { // finalized or DAO vaults only @@ -39,7 +38,10 @@ const fetchMoreHoldings = async ({ network, }: { network: number; - vault: { id: string; holdings: Array<{ tokenId: string }> }; + vault: { + id: Address; + holdings: Array<{ tokenId: string }>; + }; }) => { if (vault.holdings.length === 1000) { const lastId = vault.holdings[vault.holdings.length - 1].tokenId; @@ -67,12 +69,12 @@ const fetchVaults = async ({ }: { network?: number; provider: Provider; - vaultAddresses?: string[]; + vaultAddresses?: Address[]; vaultIds?: string[]; includeEmptyVaults?: boolean; finalisedOnly?: boolean; enabledOnly?: boolean; - manager?: string; + manager?: Address; lastId?: number; retryCount?: number; }): Promise => { @@ -103,9 +105,10 @@ const fetchVaults = async ({ const vaultPromises = vaultData.map(async (x) => { const moreHoldings = await fetchMoreHoldings({ network, vault: x }); - const merkleReference = isMerkleVault(x) - ? await fetchMerkleReference({ network, provider, vault: x }) - : null; + const merkleReference = + (isMerkleVault(x) + ? await fetchMerkleReference({ provider, vault: x }) + : null) ?? undefined; return transformVault({ globalFees, diff --git a/packages/core/src/vaults/fetchVaults/transformVault.ts b/packages/core/src/vaults/fetchVaults/transformVault.ts index 54a97fa7..d3e917de 100644 --- a/packages/core/src/vaults/fetchVaults/transformVault.ts +++ b/packages/core/src/vaults/fetchVaults/transformVault.ts @@ -1,9 +1,8 @@ -import { BigNumber } from '@ethersproject/bignumber'; import { mapObj } from '../../utils'; import type { Response } from '../fetchSubgraphVaults'; import transformVaultReserves from './transformVaultReserves'; import transformVaultHolding from '../fetchVaultHoldings/transformVaultHolding'; -import type { TokenReserve, Vault, VaultHolding } from '@nftx/types'; +import type { Price, TokenReserve, Vault, VaultHolding } from '@nftx/types'; const transformVault = ({ reserves, @@ -15,7 +14,7 @@ const transformVault = ({ reserves: TokenReserve[]; vault: Response['vaults'][0]; globalFees: Response['globals'][0]['fees']; - merkleReference: string; + merkleReference?: string; moreHoldings?: VaultHolding[]; }) => { const reserve = reserves.find(({ tokenId }) => tokenId === x.id); @@ -26,7 +25,7 @@ const transformVault = ({ const rawFees = (x.usesFactoryFees && globalFees ? globalFees : x.fees) ?? {}; const fees: Vault['fees'] = mapObj(rawFees, (key, value) => { - return [key, BigNumber.from(value)]; + return [key, BigInt(value)]; }); const { derivedETH, rawPrice, reserveVtoken, reserveWeth } = @@ -38,13 +37,13 @@ const transformVault = ({ totalHoldings: Number(x.totalHoldings), totalMints: Number(x.totalMints), totalRedeems: Number(x.totalRedeems), - totalFees: BigNumber.from(x.totalFees), + totalFees: BigInt(x.totalFees), shutdownDate: Number(x.shutdownDate || '0'), holdings, fees, derivedETH, rawPrice, - buyPrice: null, + buyPrice: null as unknown as Price, reserveVtoken, reserveWeth, eligibilityModule: x.eligibilityModule @@ -52,7 +51,7 @@ const transformVault = ({ ...x.eligibilityModule, merkleReference, } - : undefined, + : (undefined as any), }; return vault; diff --git a/packages/core/src/vaults/fetchVaults/transformVaultReserves.ts b/packages/core/src/vaults/fetchVaults/transformVaultReserves.ts index 1b3aefeb..c9a69030 100644 --- a/packages/core/src/vaults/fetchVaults/transformVaultReserves.ts +++ b/packages/core/src/vaults/fetchVaults/transformVaultReserves.ts @@ -1,64 +1,55 @@ -import type { BigNumber } from '@ethersproject/bignumber'; -import { formatEther, parseEther } from '@ethersproject/units'; -import { WeiPerEther, Zero } from '@ethersproject/constants'; +import { WeiPerEther, Zero } from '@nftx/constants'; import type { TokenReserve } from '@nftx/types'; +import { formatEther, parseEther } from 'viem'; // given an output amount of an asset and pair reserves, returns a required input amount of the other asset -function getAmountIn( - amountOut: BigNumber, - reserveIn: BigNumber, - reserveOut: BigNumber -) { - if (!amountOut.gt(0)) { +function getAmountIn(amountOut: bigint, reserveIn: bigint, reserveOut: bigint) { + if (amountOut <= Zero) { return false; } - if (!reserveIn.gt(0) || !reserveOut.gt(0)) { + if (reserveIn <= Zero || reserveOut <= Zero) { return false; } - const numerator = reserveIn.mul(amountOut).mul(1000); - const denominator = reserveOut.sub(amountOut).mul(997); + const numerator = reserveIn * amountOut * 1000n; + const denominator = reserveOut - amountOut * 997n; // not enough liquidity - if (denominator.eq(0) || numerator.eq(0)) { + if (denominator === Zero || numerator === Zero) { return false; } - return numerator.div(denominator).add(1); + return numerator / denominator + 1n; } // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset -function getAmountOut( - amountIn: BigNumber, - reserveIn: BigNumber, - reserveOut: BigNumber -) { - if (!amountIn.gt(0)) { +function getAmountOut(amountIn: bigint, reserveIn: bigint, reserveOut: bigint) { + if (amountIn <= Zero) { return false; } - if (!reserveIn.gt(0) || !reserveOut.gt(0)) { + if (reserveIn <= Zero || reserveOut <= Zero) { return false; } - const amountInWithFee = amountIn.mul(997); - const numerator = amountInWithFee.mul(reserveOut); - const denominator = reserveIn.mul(1000).add(amountInWithFee); + const amountInWithFee = amountIn * 997n; + const numerator = amountInWithFee * reserveOut; + const denominator = reserveIn * 1000n + amountInWithFee; // not enough liquidity - if (denominator.eq(0) || numerator.eq(0)) { + if (denominator === Zero || numerator === Zero) { return false; } - return numerator.div(denominator); + return numerator / denominator; } -const calcBuyPrice = (reserve: TokenReserve, amount = '1') => +const calcBuyPrice = (reserve: TokenReserve, amount: `${number}` = '1') => getAmountIn(parseEther(amount), reserve.reserveWeth, reserve.reserveVtoken); -const calcSellPrice = (reserve: TokenReserve, amount = '1') => +const calcSellPrice = (reserve: TokenReserve, amount: `${number}` = '1') => getAmountOut(parseEther(amount), reserve.reserveVtoken, reserve.reserveWeth); -const transformVaultReserves = (reserves: TokenReserve) => { +const transformVaultReserves = (reserves?: TokenReserve) => { if (!reserves || !reserves.reserveVtoken || !reserves.reserveWeth) { return { derivedETH: '0', @@ -76,14 +67,10 @@ const transformVaultReserves = (reserves: TokenReserve) => { // only show price if 10% spread or less const enoughLiquidity = buyPrice && sellPrice - ? buyPrice - .sub(sellPrice) - .mul(WeiPerEther) - .div(buyPrice) - .lte(parseEther('0.1')) + ? buyPrice - (sellPrice * WeiPerEther) / buyPrice <= parseEther('0.1') : false; - if (midPrice?.gt(0)) { + if ((midPrice ?? Zero) > Zero) { return { derivedETH: enoughLiquidity ? formatEther(midPrice) : '0', rawPrice: midPrice, diff --git a/packages/core/src/vaults/filterMintableAssets.ts b/packages/core/src/vaults/filterMintableAssets.ts index d97d620e..66a195aa 100644 --- a/packages/core/src/vaults/filterMintableAssets.ts +++ b/packages/core/src/vaults/filterMintableAssets.ts @@ -1,7 +1,6 @@ import type { Asset } from '../assets'; -import type { Provider } from '@ethersproject/providers'; import config from '@nftx/config'; -import type { Vault } from '@nftx/types'; +import type { Provider, Vault } from '@nftx/types'; import { addressEqual, checkEligible, @@ -42,7 +41,7 @@ const filterMintableAssets = async ({ return; } if (isMerkleVault(vault)) { - const leaves = await fetchMerkleLeaves({ provider, network, vault }); + const leaves = await fetchMerkleLeaves({ provider, vault }); vaultAssets = vaultAssets.filter((asset) => leaves.includes(asset.tokenId) ); @@ -51,7 +50,6 @@ const filterMintableAssets = async ({ provider, tokenIds: vaultAssets.map((x) => x.tokenId), vault, - network, }); vaultAssets = vaultAssets.filter((_, i) => eligible[i].eligible); } diff --git a/packages/nftx/package.json b/packages/nftx/package.json index 288ffe4c..d0dd7364 100644 --- a/packages/nftx/package.json +++ b/packages/nftx/package.json @@ -18,6 +18,7 @@ "url": "git+https://github.com/NFTX-project/nftxjs.git" }, "scripts": { + "test": "echo \"no tests\"", "build": "rm -rf dist && rollup -c && tsc -d --outDir dist/ts --emitDeclarationOnly", "prepublishOnly": "yarn build" }, @@ -26,19 +27,13 @@ }, "sideEffects": false, "dependencies": { - "@ethersproject/abi": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/contracts": "^5.6.0", - "@ethersproject/providers": "^5.6.4", - "@ethersproject/units": "^5.6.0", "@nftx/api": "^0.9.5", "@nftx/config": "^0.9.5", "@nftx/constants": "^0.9.5", "@nftx/subgraph": "^0.9.5", "@nftx/trade": "^0.9.5", "@nftx/types": "^0.9.0", - "@nftx/utils": "^0.9.5", + "@nftx/utils": "^0.9.0", "ethers": "^5.6.4" } } diff --git a/packages/nftx/rollup.config.js b/packages/nftx/rollup.config.js index 2d42fd1d..5a63469a 100644 --- a/packages/nftx/rollup.config.js +++ b/packages/nftx/rollup.config.js @@ -1,13 +1,7 @@ -import { readdirSync } from 'fs'; import base from '../../rollup.base'; -const abis = readdirSync('../constants/abis') - .filter((filename) => filename.endsWith('.json')) - .map((filename) => `@nftx/constants/abis/${filename}`); - const config = { ...base, - external: [...base.external, ...abis], }; export default config; diff --git a/packages/react/package.json b/packages/react/package.json index 9e025b84..675df66e 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -26,18 +26,14 @@ "bugs": { "url": "https://github.com/NFTX-project/nftxjs/issues" }, + "dependencies": { + "viem": "0.1.19" + }, "devDependencies": { - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/contracts": "^5.6.0", - "@ethersproject/providers": "^5.6.4", - "ethers": "^5.6.4", - "react": "^18.0.0" + "react": "^18.0.0", + "nftx.js": "*" }, "peerDependencies": { - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/contracts": "^5.6.0", - "@ethersproject/providers": "^5.6.4", - "ethers": "^5.6.4", "nftx.js": "<1.0.0", "react": "^17.0.0 || ^18.0.0" }, diff --git a/packages/react/rollup.config.js b/packages/react/rollup.config.js index cdb768cb..8867d952 100644 --- a/packages/react/rollup.config.js +++ b/packages/react/rollup.config.js @@ -1,3 +1,6 @@ import config from '../../rollup.base'; -export default config; +export default { + ...config, + external: [...config.external, 'viem/chains'], +}; diff --git a/packages/react/src/contexts/nftx.tsx b/packages/react/src/contexts/nftx.tsx index b5bac0aa..c15d89dc 100644 --- a/packages/react/src/contexts/nftx.tsx +++ b/packages/react/src/contexts/nftx.tsx @@ -6,10 +6,26 @@ import React, { useMemo, } from 'react'; import * as core from 'nftx.js'; -import { getDefaultProvider } from '@ethersproject/providers'; -import type { Provider } from '@ethersproject/providers'; import { EventsProvider } from './events'; -import type { Signer } from 'ethers'; +import { Network, Provider, Signer } from 'nftx.js'; +import { createPublicClient, http } from 'viem'; +import { arbitrum, mainnet, goerli } from 'viem/chains'; + +const getDefaultProvider = (network: number) => { + const chain = (() => { + switch (network) { + case Network.Arbitrum: + return arbitrum; + case Network.Goerli: + return goerli; + case Network.Mainnet: + default: + return mainnet; + } + })(); + + return createPublicClient({ chain, transport: http() }); +}; type Core = typeof core; @@ -24,9 +40,9 @@ const { config } = core; const defaultContext: INftxContext = { core, - network: null, - provider: null, - signer: null, + network: 1, + provider: null as any, + signer: null as any, }; export const nftxContext = createContext(defaultContext); @@ -38,9 +54,9 @@ export const NftxProvider = ({ signer, }: { children: ReactNode; - network?: number; - provider?: Provider; - signer?: Signer; + network: number; + provider: Provider; + signer: Signer; }) => { const value = useMemo( () => ({ network, provider, signer, core }), diff --git a/packages/react/src/errors.ts b/packages/react/src/errors.ts index e28e615f..03852665 100644 --- a/packages/react/src/errors.ts +++ b/packages/react/src/errors.ts @@ -1,7 +1,5 @@ -import type { - ContractReceipt, - ContractTransaction, -} from '@ethersproject/contracts'; +import type { Transaction } from 'nftx.js'; +import type { TransactionReceipt } from 'viem'; export class TransactionExceptionError extends Error { status = 'Exception'; @@ -22,8 +20,8 @@ export class TransactionFailedError extends Error { constructor( public error: any, public network: number, - public transaction: ContractTransaction, - public receipt: ContractReceipt + public transaction: Transaction, + public receipt: TransactionReceipt ) { super( error?.error?.message ?? diff --git a/packages/react/src/staking/useClaimRewards.ts b/packages/react/src/staking/useClaimRewards.ts index 23bf097f..55a3de41 100644 --- a/packages/react/src/staking/useClaimRewards.ts +++ b/packages/react/src/staking/useClaimRewards.ts @@ -1,3 +1,4 @@ +import type { Address } from 'nftx.js'; import { useNftx } from '../contexts/nftx'; import type { TxnArgsOnly } from '../types'; import type { UseTransactionOptions } from '../useTransaction'; @@ -5,15 +6,16 @@ import useTransaction from '../useTransaction'; const useClaimRewards = (opts?: UseTransactionOptions) => { const { + provider, signer, network, core: { claimRewards, invalidateUser }, } = useNftx(); - type Args = TxnArgsOnly & { userAddress: string }; + type Args = TxnArgsOnly & { userAddress: Address }; return useTransaction( - (args: Args) => claimRewards({ network, signer, ...args }), + (args: Args) => claimRewards({ network, provider, signer, ...args }), { description: 'Claim Rewards', ...opts, diff --git a/packages/react/src/staking/useStakeInventory.ts b/packages/react/src/staking/useStakeInventory.ts index b09e5652..439e8d7e 100644 --- a/packages/react/src/staking/useStakeInventory.ts +++ b/packages/react/src/staking/useStakeInventory.ts @@ -6,6 +6,7 @@ import useTransaction from '../useTransaction'; const useStakeInventory = (opts?: UseTransactionOptions) => { const { network, + provider, signer, core: { stakeInventory, invalidateVault }, } = useNftx(); @@ -13,7 +14,7 @@ const useStakeInventory = (opts?: UseTransactionOptions) => { type Args = TxnArgsOnly; return useTransaction( - (args: Args) => stakeInventory({ network, signer, ...args }), + (args: Args) => stakeInventory({ network, provider, signer, ...args }), { description: 'Stake Inventory', ...opts, diff --git a/packages/react/src/staking/useStakeLiquidity.ts b/packages/react/src/staking/useStakeLiquidity.ts index 152f56b0..c7fb3042 100644 --- a/packages/react/src/staking/useStakeLiquidity.ts +++ b/packages/react/src/staking/useStakeLiquidity.ts @@ -18,7 +18,7 @@ const useStakeLiquidity = (opts?: UseTransactionOptions) => { return useTransaction( async ({ vaultId, ...args }: Args) => { - const { gasPrice } = await provider.getFeeData(); + const gasPrice = await provider.getGasPrice(); const pool = await fetchPool({ network, vaultId, @@ -27,6 +27,7 @@ const useStakeLiquidity = (opts?: UseTransactionOptions) => { return stakeLiquidity({ network, + provider, signer, gasPrice, isNewPool, diff --git a/packages/react/src/staking/useStakeSlp.ts b/packages/react/src/staking/useStakeSlp.ts index c60c424b..7d61e31e 100644 --- a/packages/react/src/staking/useStakeSlp.ts +++ b/packages/react/src/staking/useStakeSlp.ts @@ -5,6 +5,7 @@ import useTransaction, { UseTransactionOptions } from '../useTransaction'; const useStakeSlp = (opts?: UseTransactionOptions) => { const { network, + provider, signer, core: { stakeSlp, invalidateVault }, } = useNftx(); @@ -12,7 +13,7 @@ const useStakeSlp = (opts?: UseTransactionOptions) => { type Args = TxnArgsOnly; return useTransaction( - (args: Args) => stakeSlp({ network, signer, ...args }), + (args: Args) => stakeSlp({ network, provider, signer, ...args }), { description: 'Stake SLP', ...opts, diff --git a/packages/react/src/staking/useStakeVToken.ts b/packages/react/src/staking/useStakeVToken.ts index ba9d644c..7d1318a4 100644 --- a/packages/react/src/staking/useStakeVToken.ts +++ b/packages/react/src/staking/useStakeVToken.ts @@ -6,6 +6,7 @@ import useTransaction from '../useTransaction'; const useStakeVToken = (opts?: UseTransactionOptions) => { const { network, + provider, signer, core: { stakeVToken, invalidateVault }, } = useNftx(); @@ -13,7 +14,7 @@ const useStakeVToken = (opts?: UseTransactionOptions) => { type Args = TxnArgsOnly; return useTransaction( - (args: Args) => stakeVToken({ network, signer, ...args }), + (args: Args) => stakeVToken({ network, provider, signer, ...args }), { description: 'Stake vTokens', ...opts, diff --git a/packages/react/src/staking/useUnstakeInventory.ts b/packages/react/src/staking/useUnstakeInventory.ts index f94953e0..392b1588 100644 --- a/packages/react/src/staking/useUnstakeInventory.ts +++ b/packages/react/src/staking/useUnstakeInventory.ts @@ -6,6 +6,7 @@ import useTransaction from '../useTransaction'; const useUnstakeInventory = (opts?: UseTransactionOptions) => { const { network, + provider, signer, core: { unstakeInventory, invalidateVault }, } = useNftx(); @@ -13,7 +14,7 @@ const useUnstakeInventory = (opts?: UseTransactionOptions) => { type Args = TxnArgsOnly; return useTransaction( - (args: Args) => unstakeInventory({ network, signer, ...args }), + (args: Args) => unstakeInventory({ network, provider, signer, ...args }), { description: 'Unstake Inventory', ...opts, diff --git a/packages/react/src/staking/useUnstakeLiquidity.ts b/packages/react/src/staking/useUnstakeLiquidity.ts index 225ea6a7..a96a33c8 100644 --- a/packages/react/src/staking/useUnstakeLiquidity.ts +++ b/packages/react/src/staking/useUnstakeLiquidity.ts @@ -6,6 +6,7 @@ import useTransaction from '../useTransaction'; const useUnstakeLiquidity = (opts?: UseTransactionOptions) => { const { network, + provider, signer, core: { unstakeLiquidity, invalidateVault }, } = useNftx(); @@ -13,7 +14,7 @@ const useUnstakeLiquidity = (opts?: UseTransactionOptions) => { type Args = TxnArgsOnly; return useTransaction( - (args: Args) => unstakeLiquidity({ network, signer, ...args }), + (args: Args) => unstakeLiquidity({ network, provider, signer, ...args }), { description: 'Unstake Liquidity', ...opts, diff --git a/packages/react/src/trade/useApprove.ts b/packages/react/src/trade/useApprove.ts index 47a73666..4ba5a2db 100644 --- a/packages/react/src/trade/useApprove.ts +++ b/packages/react/src/trade/useApprove.ts @@ -7,15 +7,18 @@ type Args = TxnArgsOnly; const useApprove = (opts?: UseTransactionOptions) => { const { - network, + provider, signer, core: { approve }, } = useNftx(); - return useTransaction((args: Args) => approve({ ...args, network, signer }), { - description: 'Approve', - ...opts, - }); + return useTransaction( + (args: Args) => approve({ ...args, provider, signer }), + { + description: 'Approve', + ...opts, + } + ); }; export default useApprove; diff --git a/packages/react/src/trade/useApproveSell.ts b/packages/react/src/trade/useApproveSell.ts index f0466f2b..cd993f03 100644 --- a/packages/react/src/trade/useApproveSell.ts +++ b/packages/react/src/trade/useApproveSell.ts @@ -6,6 +6,7 @@ import useTransaction from '../useTransaction'; const useApproveSell = (opts?: UseTransactionOptions) => { const { network, + provider, signer, core: { approveSell }, } = useNftx(); @@ -13,7 +14,7 @@ const useApproveSell = (opts?: UseTransactionOptions) => { type Args = TxnArgsOnly; return useTransaction( - (args: Args) => approveSell({ network, signer, ...args }), + (args: Args) => approveSell({ network, provider, signer, ...args }), { description: 'Approve Sell', ...opts, diff --git a/packages/react/src/trade/useApproveSwap.ts b/packages/react/src/trade/useApproveSwap.ts index cb428287..eed57019 100644 --- a/packages/react/src/trade/useApproveSwap.ts +++ b/packages/react/src/trade/useApproveSwap.ts @@ -6,6 +6,7 @@ import useTransaction from '../useTransaction'; const useApproveSwap = (opts?: UseTransactionOptions) => { const { network, + provider, signer, core: { approveSwap }, } = useNftx(); @@ -13,7 +14,7 @@ const useApproveSwap = (opts?: UseTransactionOptions) => { type Args = TxnArgsOnly; return useTransaction( - (args: Args) => approveSwap({ network, signer, ...args }), + (args: Args) => approveSwap({ network, provider, signer, ...args }), { description: 'Approve Swap', ...opts, diff --git a/packages/react/src/trade/useBuy.ts b/packages/react/src/trade/useBuy.ts index 83685be6..717c1985 100644 --- a/packages/react/src/trade/useBuy.ts +++ b/packages/react/src/trade/useBuy.ts @@ -5,20 +5,24 @@ import useTransaction, { UseTransactionOptions } from '../useTransaction'; const useBuy = (opts?: UseTransactionOptions) => { const { network, + provider, signer, core: { buy, invalidateVault }, } = useNftx(); type Args = TxnArgsOnly; - return useTransaction((args: Args) => buy({ ...args, network, signer }), { - description: 'Buy', - ...opts, - async onSuccess(data, args) { - await invalidateVault({ network, vaultId: args.vault.vaultId }); - return opts?.onSuccess?.(data, args); - }, - }); + return useTransaction( + (args: Args) => buy({ ...args, provider, network, signer }), + { + description: 'Buy', + ...opts, + async onSuccess(data, args) { + await invalidateVault({ network, vaultId: args.vault.vaultId }); + return opts?.onSuccess?.(data, args); + }, + } + ); }; export default useBuy; diff --git a/packages/react/src/trade/useMint.ts b/packages/react/src/trade/useMint.ts index d18fa3e1..4905ad3b 100644 --- a/packages/react/src/trade/useMint.ts +++ b/packages/react/src/trade/useMint.ts @@ -6,18 +6,19 @@ import useTransaction from '../useTransaction'; const useMint = (opts?: UseTransactionOptions) => { const { network, + provider, signer, core: { mint, invalidateVault }, } = useNftx(); type Args = TxnArgsOnly; - return useTransaction((args: Args) => mint({ ...args, network, signer }), { + return useTransaction((args: Args) => mint({ ...args, provider, signer }), { description: 'Mint', ...opts, async onSuccess(data, args) { await invalidateVault({ vaultId: args.vaultId, network }); - return opts?.onSuccess(data, args); + return opts?.onSuccess?.(data, args); }, }); }; diff --git a/packages/react/src/trade/useRedeem.ts b/packages/react/src/trade/useRedeem.ts index 4036514c..bf2c76e4 100644 --- a/packages/react/src/trade/useRedeem.ts +++ b/packages/react/src/trade/useRedeem.ts @@ -6,13 +6,14 @@ import useTransaction from '../useTransaction'; const useRedeem = (opts: UseTransactionOptions) => { const { network, + provider, signer, core: { redeem, invalidateVault }, } = useNftx(); type Args = TxnArgsOnly; - return useTransaction((args: Args) => redeem({ ...args, network, signer }), { + return useTransaction((args: Args) => redeem({ ...args, provider, signer }), { description: 'Redeem', ...opts, async onSuccess(data, args) { diff --git a/packages/react/src/trade/useSell.ts b/packages/react/src/trade/useSell.ts index 89fc6c72..26aea06a 100644 --- a/packages/react/src/trade/useSell.ts +++ b/packages/react/src/trade/useSell.ts @@ -6,20 +6,24 @@ import useTransaction from '../useTransaction'; const useSell = (opts?: UseTransactionOptions) => { const { network, + provider, signer, core: { sell, invalidateVault }, } = useNftx(); type Args = TxnArgsOnly; - return useTransaction((args: Args) => sell({ ...args, network, signer }), { - description: 'Sell', - ...opts, - async onSuccess(data, args) { - await invalidateVault({ vaultId: args.vault.vaultId, network }); - return opts?.onSuccess?.(data, args); - }, - }); + return useTransaction( + (args: Args) => sell({ ...args, network, provider, signer }), + { + description: 'Sell', + ...opts, + async onSuccess(data, args) { + await invalidateVault({ vaultId: args.vault.vaultId, network }); + return opts?.onSuccess?.(data, args); + }, + } + ); }; export default useSell; diff --git a/packages/react/src/trade/useSwap.ts b/packages/react/src/trade/useSwap.ts index eb0be2e8..287de043 100644 --- a/packages/react/src/trade/useSwap.ts +++ b/packages/react/src/trade/useSwap.ts @@ -6,20 +6,24 @@ import useTransaction from '../useTransaction'; const useSwap = (opts?: UseTransactionOptions) => { const { network, + provider, signer, core: { swap, invalidateVault }, } = useNftx(); type Args = TxnArgsOnly; - return useTransaction((args: Args) => swap({ ...args, network, signer }), { - description: 'Swap', - ...opts, - async onSuccess(data, args) { - await invalidateVault({ vaultId: args.vault.vaultId, network }); - return opts?.onSuccess?.(data, args); - }, - }); + return useTransaction( + (args: Args) => swap({ ...args, network, provider, signer }), + { + description: 'Swap', + ...opts, + async onSuccess(data, args) { + await invalidateVault({ vaultId: args.vault.vaultId, network }); + return opts?.onSuccess?.(data, args); + }, + } + ); }; export default useSwap; diff --git a/packages/react/src/types.ts b/packages/react/src/types.ts index c5b3a085..83960d82 100644 --- a/packages/react/src/types.ts +++ b/packages/react/src/types.ts @@ -1,4 +1,5 @@ -import type { ContractReceipt, ContractTransaction, Signer } from 'ethers'; +import type { Provider, Signer, Transaction } from 'nftx.js'; +import type { TransactionReceipt } from 'viem'; export type TransactionState = | 'None' @@ -14,14 +15,19 @@ export type TransactionEvent = { description: string; createdAt: number; network: number; - transaction?: ContractTransaction; - receipt?: ContractReceipt; + transaction?: Transaction; + receipt?: TransactionReceipt; error?: any; }; -type TxnFn = (args: { network?: number; signer: Signer }) => any; +type TxnArgs = { + network?: number; + provider: Provider; + signer: Signer; +}; +type TxnFn = (args: A) => any; /** Takes a transaction function, removes the network and signer, and returns the remaining args */ -export type TxnArgsOnly = Omit< +export type TxnArgsOnly> = Omit< Parameters[0], - 'network' | 'signer' + 'network' | 'signer' | 'provider' >; diff --git a/packages/react/src/useTransaction/useTransaction.ts b/packages/react/src/useTransaction/useTransaction.ts index f6dbb44c..c6a44d7d 100644 --- a/packages/react/src/useTransaction/useTransaction.ts +++ b/packages/react/src/useTransaction/useTransaction.ts @@ -1,4 +1,3 @@ -import type { ContractReceipt, ContractTransaction } from 'ethers'; import { useCallback, useReducer } from 'react'; import type { TransactionState } from '../types'; import { @@ -7,13 +6,15 @@ import { TransactionFailedError, } from '../errors'; import useWrapTransaction from './useWrapTransaction'; +import type { Transaction } from 'nftx.js'; +import type { TransactionReceipt } from 'viem'; -type Fn = (args: any) => Promise; +type Fn = (args: any) => Promise; export type UseTransactionOptions> = { description?: string; onSuccess?: ( - data: { transaction: ContractTransaction; receipt: ContractReceipt }, + data: { transaction: Transaction; receipt: TransactionReceipt }, args: A ) => void | Promise; onError?: (error: any) => void; @@ -36,8 +37,8 @@ const useTransaction = ( status: TransactionState; error: any; data: { - transaction?: ContractTransaction; - receipt?: ContractReceipt; + transaction?: Transaction; + receipt?: TransactionReceipt; }; }; const [{ status, data, error }, dispatch] = useReducer( @@ -46,8 +47,8 @@ const useTransaction = ( action: | { status: 'None' } | { status: 'PendingSignature' } - | { status: 'Mining'; transaction: ContractTransaction } - | { status: 'Success'; receipt: ContractReceipt } + | { status: 'Mining'; transaction: Transaction } + | { status: 'Success'; receipt: TransactionReceipt } | { status: 'Exception' | 'Fail'; error: any } ) => { switch (action?.status) { @@ -128,7 +129,7 @@ const useTransaction = ( dispatch({ status: 'Success', receipt }); const maybePromise = opts?.onSuccess?.({ transaction, receipt }, args); - if (maybePromise && maybePromise.then) { + if (maybePromise && typeof maybePromise.then === 'function') { await maybePromise; } return receipt; diff --git a/packages/react/src/useTransaction/useWrapTransaction.ts b/packages/react/src/useTransaction/useWrapTransaction.ts index a38c8e7b..8c241ea0 100644 --- a/packages/react/src/useTransaction/useWrapTransaction.ts +++ b/packages/react/src/useTransaction/useWrapTransaction.ts @@ -1,4 +1,3 @@ -import { ContractTransaction, errors } from 'ethers'; import { useNftx } from '../contexts/nftx'; import { TransactionCancelledError, @@ -7,12 +6,13 @@ import { } from '../errors'; import { t } from '../utils'; import { useAddEvent } from '../contexts/events'; +import { config, Transaction } from 'nftx.js'; -type Fn = (...args: any) => Promise; +type Fn = (...args: any) => Promise; function isDroppedAndReplaced(e: any) { return ( - e?.code === errors.TRANSACTION_REPLACED && + e?.code === 'TRANSACTION_REPLACED' && e?.replacement && (e?.reason === 'repriced' || e?.cancelled === false) ); @@ -56,12 +56,11 @@ export default function useWrapTransaction( description, }); - const transaction: ContractTransaction = { + const transaction: Transaction = { ...tx, - chainId: network, // we also want to wrap the wait behaviour - wait: async (confirmations?: number) => { - const [receiptErr, receipt] = await t(tx.wait(confirmations)); + wait: async () => { + const [receiptErr, receipt] = await t(tx.wait()); if (receiptErr) { if (isDroppedAndReplaced(receiptErr)) { @@ -113,6 +112,8 @@ export default function useWrapTransaction( description, }); + config.internal.requiredBlockNumber = Number(receipt.blockNumber); + return receipt; }, }; diff --git a/packages/subgraph/src/querySubgraph.ts b/packages/subgraph/src/querySubgraph.ts index a48e311c..d166432a 100644 --- a/packages/subgraph/src/querySubgraph.ts +++ b/packages/subgraph/src/querySubgraph.ts @@ -32,12 +32,17 @@ async function querySubgraph({ variables?: Record; fetch?: Fetch; }) { + if (fetch == null) { + throw new Error( + 'Could not find fetch api. You may need to import a polyfill' + ); + } if (variables) { query = interpolateQuery(query, variables); } // Override the default api key with a custom one if set - const urls = [].concat(baseUrl).map((url: string) => { + const urls = [baseUrl].flat().map((url) => { if ( config.subgraph.API_KEY && url.includes(PUBLIC_GRAPH_API_KEY) && @@ -62,6 +67,9 @@ async function querySubgraph({ while (urls.length) { try { const url = urls.shift(); + if (url == null) { + continue; + } const response = await fetch(url, args); // The subgraph will return a 200 response even with an invalid request so if it fails it's probably gone horribly wrong diff --git a/packages/trade/package.json b/packages/trade/package.json index bcdfddd0..e5713042 100644 --- a/packages/trade/package.json +++ b/packages/trade/package.json @@ -23,20 +23,12 @@ "build": "rm -rf dist && rollup -c && tsc -d --outDir dist/ts --emitDeclarationOnly", "prepublishOnly": "yarn build" }, - "peerDependencies": { - "@ethersproject/abi": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/contracts": "^5.6.0", - "@ethersproject/providers": "^5.6.2", - "@ethersproject/units": "^5.6.0", - "ethers": "^5.6.2" - }, "dependencies": { + "@nftx/abi": "^0.9.0", "@nftx/config": "^0.9.5", "@nftx/constants": "^0.9.5", "@nftx/types": "^0.9.0", - "@nftx/utils": "^0.9.5" + "@nftx/utils": "^0.9.0" }, "devDependencies": { "@ethersproject/abi": "^5.6.0", diff --git a/packages/trade/rollup.config.js b/packages/trade/rollup.config.js index 2d42fd1d..5a63469a 100644 --- a/packages/trade/rollup.config.js +++ b/packages/trade/rollup.config.js @@ -1,13 +1,7 @@ -import { readdirSync } from 'fs'; import base from '../../rollup.base'; -const abis = readdirSync('../constants/abis') - .filter((filename) => filename.endsWith('.json')) - .map((filename) => `@nftx/constants/abis/${filename}`); - const config = { ...base, - external: [...base.external, ...abis], }; export default config; diff --git a/packages/trade/src/pools/createPool.ts b/packages/trade/src/pools/createPool.ts index dc1a9224..a4bb490d 100644 --- a/packages/trade/src/pools/createPool.ts +++ b/packages/trade/src/pools/createPool.ts @@ -1,11 +1,15 @@ -import abi from '@nftx/constants/abis/VaultCreationZap.json'; -import type { CreatePoolFeatures, CreatePoolFees } from '@nftx/types'; -import type { Signer } from 'ethers'; -import type { BigNumber, BigNumberish } from '@ethersproject/bignumber'; +import { VaultCreationZap } from '@nftx/abi'; +import type { + Address, + CreatePoolFeatures, + CreatePoolFees, + Provider, + Signer, + TokenId, +} from '@nftx/types'; import getCreatePoolArgs from './getCreatePoolArgs'; import { VAULT_CREATION_ZAP } from '@nftx/constants'; -import type { getContract } from '@nftx/utils'; -import { getChainConstant } from '@nftx/utils'; +import { getChainConstant, type getContract } from '@nftx/utils'; type GetContract = typeof getContract; @@ -25,20 +29,22 @@ export default ({ getContract }: { getContract: GetContract }) => standard, symbol, tokenIds, + provider, }: { name: string; symbol: string; - assetAddress: string; + assetAddress: Address; standard: 'ERC1155' | 'ERC721'; fees: CreatePoolFees; features: CreatePoolFeatures; network: number; signer: Signer; + provider: Provider; eligibilityModule: 'list' | 'range' | false; - eligibilityRange: [BigNumberish, BigNumberish]; - eligibilityList: BigNumberish[]; - tokenIds: Array<[string, number]>; - spotPrice: BigNumber; + eligibilityRange: [bigint, bigint]; + eligibilityList: bigint[]; + tokenIds: Array<[TokenId, number]>; + spotPrice: bigint; liquiditySplit: number; }) { const { @@ -63,9 +69,9 @@ export default ({ getContract }: { getContract: GetContract }) => }); const contract = getContract({ - network, - abi, + abi: VaultCreationZap, address: getChainConstant(VAULT_CREATION_ZAP, network), + provider, signer, }); @@ -85,14 +91,8 @@ export default ({ getContract }: { getContract: GetContract }) => ] ); - return contract.createVault( - vaultDetails, - vaultFeatures, - vaultFees, - eligibility, - mintAndStake, - { - value, - } - ); + return contract.write.createVault({ + args: [vaultDetails, vaultFeatures, vaultFees, eligibility, mintAndStake], + value, + }); }; diff --git a/packages/trade/src/pools/estimateCreatePoolGas.ts b/packages/trade/src/pools/estimateCreatePoolGas.ts index 3f44634a..83d5f18b 100644 --- a/packages/trade/src/pools/estimateCreatePoolGas.ts +++ b/packages/trade/src/pools/estimateCreatePoolGas.ts @@ -1,21 +1,13 @@ import { VAULT_CREATION_ZAP } from '@nftx/constants'; -import abi from '@nftx/constants/abis/VaultCreationZap.json'; +import { VaultCreationZap } from '@nftx/abi'; import { getChainConstant, getContract } from '@nftx/utils'; -import type { estimateGasAndFees } from '../trade'; import type createPool from './createPool'; import getCreatePoolArgs from './getCreatePoolArgs'; type GetContract = typeof getContract; -type EstimateGasAndFees = typeof estimateGasAndFees; type Args = Parameters>[0]; -export default ({ - estimateGasAndFees, - getContract, -}: { - estimateGasAndFees: EstimateGasAndFees; - getContract: GetContract; -}) => +export default ({ getContract }: { getContract: GetContract }) => async function estimatePoolGas({ assetAddress, eligibilityList, @@ -27,6 +19,7 @@ export default ({ name, network, signer, + provider, spotPrice, standard, symbol, @@ -60,18 +53,13 @@ export default ({ } const contract = getContract({ - network, - abi, + abi: VaultCreationZap, address: getChainConstant(VAULT_CREATION_ZAP, network), + provider, signer, }); - return estimateGasAndFees({ - method: 'createVault', - contract, + return contract.estimate.createVault({ args: [vaultDetails, vaultFeatures, vaultFees, eligibility, mintAndStake], - overrides: { - value, - }, }); }; diff --git a/packages/trade/src/pools/getCreatePoolArgs.ts b/packages/trade/src/pools/getCreatePoolArgs.ts index 07a595a2..c393aee6 100644 --- a/packages/trade/src/pools/getCreatePoolArgs.ts +++ b/packages/trade/src/pools/getCreatePoolArgs.ts @@ -1,13 +1,21 @@ -import { parseEther, parseUnits } from '@ethersproject/units'; -import { defaultAbiCoder } from '@ethersproject/abi'; -import { WeiPerEther } from '@ethersproject/constants'; -import type { BigNumber, BigNumberish } from '@ethersproject/bignumber'; -import type { CreatePoolFeatures, CreatePoolFees } from '@nftx/types'; +import { + encodeAbiParameters, + parseAbiParameters, + parseEther, + parseUnits, +} from 'viem'; +import type { + Address, + CreatePoolFeatures, + CreatePoolFees, + TokenId, +} from '@nftx/types'; import { getTokenIdAmounts, getTotalTokenIds, getUniqueTokenIds, } from '../trade'; +import { WeiPerEther, Zero } from '@nftx/constants'; const getEligibilityArgs = ({ eligibilityList, @@ -15,30 +23,32 @@ const getEligibilityArgs = ({ eligibilityRange, }: { eligibilityModule: 'list' | 'range' | false; - eligibilityRange: [BigNumberish, BigNumberish]; - eligibilityList: BigNumberish[]; -}): { allowAllItems: boolean; moduleIndex: number; initData: unknown } => { + eligibilityRange: [bigint, bigint]; + eligibilityList: bigint[]; +}): { allowAllItems: boolean; moduleIndex: bigint; initData: Address } => { switch (eligibilityModule) { case 'list': return { allowAllItems: false, - moduleIndex: 0, - initData: defaultAbiCoder.encode(['uint256[]'], [eligibilityList]), + moduleIndex: 0n, + initData: encodeAbiParameters(parseAbiParameters('uint256[]'), [ + eligibilityList, + ]), }; case 'range': return { allowAllItems: false, - moduleIndex: 1, - initData: defaultAbiCoder.encode( - ['uint256', 'uint256'], - [eligibilityRange[0], eligibilityRange[1]] - ), + moduleIndex: 1n, + initData: encodeAbiParameters(parseAbiParameters('uint256, uint256'), [ + eligibilityRange[0], + eligibilityRange[1], + ]), }; default: return { allowAllItems: true, - moduleIndex: -1, - initData: 0, + moduleIndex: -1n, + initData: 0 as unknown as Address, }; } }; @@ -46,16 +56,22 @@ const getEligibilityArgs = ({ const getVaultFeatures = (features: CreatePoolFeatures) => { // Features are sent as a binary digit // i.e. [true, false, true, false, true] = 10101 = 21 - const vaultFeatures = parseInt( - features.map((enabled) => (enabled ? '1' : '0')).join(''), - 2 + const vaultFeatures = BigInt( + parseInt(features.map((enabled) => (enabled ? '1' : '0')).join(''), 2) ); return vaultFeatures; }; const getVaultFees = (fees: CreatePoolFees) => { - const feeKeys = [ + type Key = + | 'mintFee' + | 'randomRedeemFee' + | 'targetRedeemFee' + | 'randomSwapFee' + | 'targetSwapFee'; + + const feeKeys: Key[] = [ 'mintFee', 'randomRedeemFee', 'targetRedeemFee', @@ -64,44 +80,46 @@ const getVaultFees = (fees: CreatePoolFees) => { ]; const vaultFees = feeKeys.reduce((acc, key, i) => { - const value = parseUnits(`${fees[i]}`, '8'); + const value = parseUnits(`${fees[i]}`, 8); return { ...acc, [key]: value }; - }, {}); + }, {} as Record); return vaultFees; }; const getMintAndStake = ( liquiditySplit: number, - tokenIds: Array<[string, number]>, - spotPrice: BigNumber -) => { + tokenIds: Array<[TokenId, number]>, + spotPrice: bigint +): { + assetTokenIds: bigint[]; + assetTokenAmounts: bigint[]; + minTokenIn: bigint; + minWethIn: bigint; + wethIn: bigint; +} => { if (!tokenIds.length || !spotPrice) { return { assetTokenIds: [], assetTokenAmounts: [], - minTokenIn: 0, - minWethIn: 0, - wethIn: 0, + minTokenIn: Zero, + minWethIn: Zero, + wethIn: Zero, }; } // The amount of token we're going to be adding as liquidity // (so remove the inventory % of the selected assets) const split = parseEther(`${liquiditySplit / 100}`); - const minTokenIn = split.mul(getTotalTokenIds(tokenIds)); + const minTokenIn = split * BigInt(getTotalTokenIds(tokenIds)); // The amount of weth we're going to be pairing with the liquidity // So spot price * # of tokens - // const slippage = 0.05; - const minWethIn = spotPrice.mul(minTokenIn).div(WeiPerEther); + const minWethIn = (spotPrice * minTokenIn) / WeiPerEther; const wethIn = minWethIn; - // const wethIn = parseEther(`${1 + slippage}`) - // .mul(minWethIn) - // .div(WeiPerEther); const mintAndStake = { - assetTokenIds: getUniqueTokenIds(tokenIds), - assetTokenAmounts: getTokenIdAmounts(tokenIds), + assetTokenIds: getUniqueTokenIds(tokenIds).map(BigInt), + assetTokenAmounts: getTokenIdAmounts(tokenIds).map(BigInt), minTokenIn, minWethIn, wethIn, @@ -126,15 +144,15 @@ export default function getCreatePoolArgs({ }: { name: string; symbol: string; - assetAddress: string; + assetAddress: Address; standard: 'ERC1155' | 'ERC721'; fees: CreatePoolFees; features: CreatePoolFeatures; eligibilityModule: 'list' | 'range' | false; - eligibilityRange: [BigNumberish, BigNumberish]; - eligibilityList: BigNumberish[]; - tokenIds: Array<[string, number]>; - spotPrice: BigNumber; + eligibilityRange: [bigint, bigint]; + eligibilityList: bigint[]; + tokenIds: Array<[TokenId, number]>; + spotPrice: bigint; liquiditySplit: number; }) { const { allowAllItems, initData, moduleIndex } = getEligibilityArgs({ diff --git a/packages/trade/src/pools/index.ts b/packages/trade/src/pools/index.ts index e26d8cab..f435df01 100644 --- a/packages/trade/src/pools/index.ts +++ b/packages/trade/src/pools/index.ts @@ -1,11 +1,9 @@ import makeCreatePool from './createPool'; import makeEstimateCreatePoolGas from './estimateCreatePoolGas'; import { getContract } from '@nftx/utils'; -import { estimateGasAndFees } from '../trade'; export const createPool = makeCreatePool({ getContract }); export const estimateCreatePoolGas = makeEstimateCreatePoolGas({ - estimateGasAndFees, getContract, }); diff --git a/packages/trade/src/price/calculateBuyFee.ts b/packages/trade/src/price/calculateBuyFee.ts index 4359d1b5..83429f0f 100644 --- a/packages/trade/src/price/calculateBuyFee.ts +++ b/packages/trade/src/price/calculateBuyFee.ts @@ -1,4 +1,4 @@ -import { Zero } from '@ethersproject/constants'; +import { Zero } from '@nftx/constants'; import type { Vault } from '@nftx/types'; const calculateBuyFee = ({ @@ -28,12 +28,12 @@ const calculateBuyFee = ({ */ if (targetBuys != null || randomBuys != null) { if (targetBuys) { - const fee = targetPrice.mul(targetBuys); - amount = amount.add(fee); + const fee = targetPrice * BigInt(targetBuys); + amount = amount + fee; } if (randomBuys) { - const fee = randomPrice.mul(randomBuys); - amount = amount.add(fee); + const fee = randomPrice * BigInt(randomBuys); + amount = amount + fee; } /** if we haven't specified target/random buys, * we assume we're either getting the price for 1 random or 1 target redeem @@ -42,9 +42,9 @@ const calculateBuyFee = ({ vault.features.enableRandomRedeem && !vault.features.enableTargetRedeem ) { - amount = amount.add(randomPrice); + amount = amount + randomPrice; } else { - amount = amount.add(targetPrice); + amount = amount + targetPrice; } return amount; diff --git a/packages/trade/src/price/calculateSellFee.ts b/packages/trade/src/price/calculateSellFee.ts index a4aa6507..88055127 100644 --- a/packages/trade/src/price/calculateSellFee.ts +++ b/packages/trade/src/price/calculateSellFee.ts @@ -1,5 +1,4 @@ import type { Vault } from '@nftx/types'; -import type { BigNumber } from '@ethersproject/bignumber'; const calculateSellFee = ({ vault, @@ -7,12 +6,12 @@ const calculateSellFee = ({ }: { vault: { fees: Pick }; amount?: number; -}): BigNumber => { +}): bigint => { /** When you sell an NFT there's a mint fee that's deducted from the final price * so if you sell one punk NFT, we mint 1 PUNK, give 0.05 PUNKs to the stakers * and trade 0.95 PUNKs for ETH */ - return vault.fees.mintFee.mul(sells); + return vault.fees.mintFee * BigInt(sells); }; export default calculateSellFee; diff --git a/packages/trade/src/price/calculateSwapFee.ts b/packages/trade/src/price/calculateSwapFee.ts index f6c50518..a495e7ab 100644 --- a/packages/trade/src/price/calculateSwapFee.ts +++ b/packages/trade/src/price/calculateSwapFee.ts @@ -1,4 +1,4 @@ -import { Zero } from '@ethersproject/constants'; +import { Zero } from '@nftx/constants'; import type { Vault } from '@nftx/types'; import { doesVaultHaveRandomSwapFee, @@ -23,10 +23,10 @@ const calculateSwapFee = ({ if (targetSwaps != null || randomSwaps != null) { if (targetSwaps) { - amount = amount.add(vault.fees.targetSwapFee.mul(targetSwaps)); + amount = amount + vault.fees.targetSwapFee * BigInt(targetSwaps); } if (randomSwaps) { - amount = amount.add(vault.fees.randomSwapFee.mul(randomSwaps)); + amount = amount + vault.fees.randomSwapFee * BigInt(randomSwaps); } /** If you don't specificy a number of swaps, we assume you want to know the price of * 1 random or 1 target swap (dependent on the vault) @@ -35,9 +35,9 @@ const calculateSwapFee = ({ doesVaultHaveRandomSwapFee(vault) && !doesVaultHaveTargetSwapFee(vault) ) { - amount = amount.add(vault.fees.randomSwapFee); + amount = amount + vault.fees.randomSwapFee; } else if (doesVaultHaveTargetSwapFee(vault)) { - amount = amount.add(vault.fees.targetSwapFee); + amount = amount + vault.fees.targetSwapFee; } return amount; diff --git a/packages/trade/src/price/fetch0xPrice.ts b/packages/trade/src/price/fetch0xPrice.ts index 7259016a..582e0e0d 100644 --- a/packages/trade/src/price/fetch0xPrice.ts +++ b/packages/trade/src/price/fetch0xPrice.ts @@ -1,5 +1,6 @@ -import type { BigNumberish } from '@ethersproject/bignumber'; +import type { BigIntish } from '@nftx/types'; import fetch0xQuote from './fetch0xQuote'; +import type { QuoteToken } from './types'; /** Fetch a price from the 0x api * This can be used for reading pricing info @@ -7,10 +8,10 @@ import fetch0xQuote from './fetch0xQuote'; */ const fetch0xPrice = async (args: { network: number; - buyToken: string; - sellToken: string; - buyAmount?: BigNumberish; - sellAmount?: BigNumberish; + buyToken: QuoteToken; + sellToken: QuoteToken; + buyAmount?: BigIntish; + sellAmount?: BigIntish; critical?: boolean; }) => { return fetch0xQuote({ diff --git a/packages/trade/src/price/fetch0xQuote.ts b/packages/trade/src/price/fetch0xQuote.ts index c4e5b98d..bf45520d 100644 --- a/packages/trade/src/price/fetch0xQuote.ts +++ b/packages/trade/src/price/fetch0xQuote.ts @@ -1,6 +1,6 @@ -import { BigNumber, BigNumberish } from '@ethersproject/bignumber'; -import { WeiPerEther } from '@ethersproject/constants'; import config from '@nftx/config'; +import { WeiPerEther } from '@nftx/constants'; +import type { Address, BigIntish } from '@nftx/types'; import { Network } from '@nftx/constants'; import { getChainConstant } from '@nftx/utils'; @@ -11,29 +11,29 @@ const API_KEYS = { }; export type ZeroXQuote = { - price: string; - guaranteedPrice: string; - to: string; - data: string; - value: string; - gasPrice: string; - gas: string; - estimatedGas: string; - protocolFee: string; - estimatedPriceImpact: string; - minimumProtocolFee: string; - buyAmount: string; - sellAmount: string; + price: `${number}`; + guaranteedPrice: `${number}`; + to: Address; + data: Address; + value: `${number}`; + gasPrice: `${number}`; + gas: `${number}`; + estimatedGas: `${number}`; + protocolFee: `${number}`; + estimatedPriceImpact: `${number}`; + minimumProtocolFee: `${number}`; + buyAmount: `${number}`; + sellAmount: `${number}`; sources: Array<{ name: string; - proportion: string; + proportion: `${number}`; }>; - buyTokenAddress: string; - sellTokenAddress: string; - allowanceTarget: string; + buyTokenAddress: Address; + sellTokenAddress: Address; + allowanceTarget: Address; orders: unknown; - sellTokenToEthRate: string; - buyTokenToEthRate: string; + sellTokenToEthRate: `${number}`; + buyTokenToEthRate: `${number}`; }; /** Fetch a quote price from the 0x api. @@ -45,13 +45,13 @@ export type ZeroXQuote = { const fetch0xQuote = async (args: { network?: number; /** The address of the token you're buying */ - buyToken: string; + buyToken: QuoteToken; /** the amount of buyToken you want to buy */ - buyAmount?: BigNumberish; + buyAmount?: BigIntish; /** The address of the token you're selling */ - sellToken: string; + sellToken: QuoteToken; /** The amount of sellToken you want to sell */ - sellAmount?: BigNumberish; + sellAmount?: BigIntish; /** The percentage amount of acceptable slippage on either sellAmount or buyAmount. Defaults to 1%. If you don't want to allow any slippage, you must explicitly pass 0 */ slippagePercentage?: number; /** If a "critical" quote, the response will be fetched from 0x directly. For non-critical requests (such as "price" calls), the response is fetched from NFTX's fork which implements additional caching layers and a higher rate limiting threshold */ @@ -75,9 +75,9 @@ const fetch0xQuote = async (args: { searchParams.append('buyToken', buyToken); searchParams.append('sellToken', sellToken); if (buyAmount) { - searchParams.append('buyAmount', BigNumber.from(buyAmount).toString()); + searchParams.append('buyAmount', BigInt(buyAmount).toString()); } else if (sellAmount) { - searchParams.append('sellAmount', BigNumber.from(sellAmount).toString()); + searchParams.append('sellAmount', BigInt(sellAmount).toString()); } else { // Default to just buying 1 searchParams.append('buyAmount', WeiPerEther.toString()); diff --git a/packages/trade/src/price/fetchBuyPrice.ts b/packages/trade/src/price/fetchBuyPrice.ts index bbfcba75..0a339445 100644 --- a/packages/trade/src/price/fetchBuyPrice.ts +++ b/packages/trade/src/price/fetchBuyPrice.ts @@ -1,14 +1,12 @@ -import { BigNumber, BigNumberish } from '@ethersproject/bignumber'; -import { WeiPerEther } from '@ethersproject/constants'; -import type { Provider } from '@ethersproject/providers'; import config from '@nftx/config'; -import { WETH_TOKEN } from '@nftx/constants'; +import { WeiPerEther, WETH_TOKEN } from '@nftx/constants'; import { SUSHISWAP_ROUTER } from '@nftx/constants'; -import routerAbi from '@nftx/constants/abis/UniswapV2Router.json'; -import type { Price } from '@nftx/types'; +import { UniswapV2Router } from '@nftx/abi'; +import type { Address, BigIntish, Price, Provider } from '@nftx/types'; import { getChainConstant, getContract } from '@nftx/utils'; import doesNetworkSupport0x from './doesNetworkSupport0x'; import fetch0xPrice from './fetch0xPrice'; +import type { QuoteToken } from './types'; const fetchBuyPriceFromApi = async ({ network, @@ -18,9 +16,9 @@ const fetchBuyPriceFromApi = async ({ critical, }: { network: number; - tokenAddress: string; - amount: BigNumberish; - quote: 'ETH'; + tokenAddress: Address; + amount: BigIntish; + quote: QuoteToken; critical: boolean; }) => { const { sellAmount, estimatedGas, gasPrice, sources, estimatedPriceImpact } = @@ -33,9 +31,9 @@ const fetchBuyPriceFromApi = async ({ }); const price: Price = { - price: BigNumber.from(sellAmount), - estimatedGas: BigNumber.from(estimatedGas), - gasPrice: BigNumber.from(gasPrice), + price: BigInt(sellAmount), + estimatedGas: BigInt(estimatedGas), + gasPrice: BigInt(gasPrice), sources, priceImpact: Number(estimatedPriceImpact) / 100, }; @@ -51,25 +49,22 @@ const fetchBuyPriceFromWeb3 = async ({ }: { network: number; provider: Provider; - tokenAddress: string; - amount: BigNumberish; - quote: 'ETH'; + tokenAddress: Address; + amount: BigIntish; + quote: QuoteToken; }) => { const contract = getContract({ - network, address: getChainConstant(SUSHISWAP_ROUTER, network), - abi: routerAbi, + abi: UniswapV2Router, provider, }); const tokenIn = getChainConstant(WETH_TOKEN, network); const tokenOut = tokenAddress; - const [quotePrice] = - ((await contract.getAmountsIn(amount, [ - tokenIn, - tokenOut, - ])) as BigNumber[]) || []; + const [quotePrice] = await contract.read.getAmountsIn({ + args: [BigInt(amount), [tokenIn, tokenOut]], + }); return { price: quotePrice, @@ -83,9 +78,9 @@ const fetchBuyPriceFromWeb3 = async ({ const fetchBuyPrice = async (args: { network?: number; provider: Provider; - tokenAddress: string; - amount?: BigNumberish; - quote?: 'ETH'; + tokenAddress: Address; + amount?: BigIntish; + quote?: QuoteToken; critical?: boolean; }): Promise => { const { @@ -94,7 +89,7 @@ const fetchBuyPrice = async (args: { tokenAddress, quote = 'ETH', amount = WeiPerEther, - critical, + critical = false, } = args; const apiSupported = doesNetworkSupport0x(network); if (apiSupported) { diff --git a/packages/trade/src/price/fetchEthPrice.ts b/packages/trade/src/price/fetchEthPrice.ts index c1eb6bfc..eac417a8 100644 --- a/packages/trade/src/price/fetchEthPrice.ts +++ b/packages/trade/src/price/fetchEthPrice.ts @@ -1,12 +1,16 @@ -import { BigNumber } from '@ethersproject/bignumber'; -import { WeiPerEther } from '@ethersproject/constants'; -import type { Provider } from '@ethersproject/providers'; import config from '@nftx/config'; -import { UNISWAP_QUOTER, USDC, WETH_TOKEN } from '@nftx/constants'; -import abi from '@nftx/constants/abis/UniswapQuoter.json'; +import { + UNISWAP_QUOTER, + USDC, + WeiPerEther, + WETH_TOKEN, + Zero, +} from '@nftx/constants'; +import { UniswapQuoter } from '@nftx/abi'; import { getChainConstant, getContract } from '@nftx/utils'; import doesNetworkSupport0x from './doesNetworkSupport0x'; import fetch0xPrice from './fetch0xPrice'; +import type { Provider } from '@nftx/types'; const fetchEthPriceFromApi = async ({ network }: { network: number }) => { const { sellAmount } = await fetch0xPrice({ @@ -16,7 +20,7 @@ const fetchEthPriceFromApi = async ({ network }: { network: number }) => { buyAmount: WeiPerEther, }); - return BigNumber.from(sellAmount); + return BigInt(sellAmount); }; const fetchEthPriceFromWeb3 = async ({ @@ -27,19 +31,20 @@ const fetchEthPriceFromWeb3 = async ({ provider: Provider; }) => { const contract = getContract({ - network, provider, - abi, + abi: UniswapQuoter, address: getChainConstant(UNISWAP_QUOTER, network), }); - const quote: BigNumber = await contract.quoteExactOutputSingle( - getChainConstant(USDC, network), - getChainConstant(WETH_TOKEN, network), - '3000', // the fee (0.3%) - WeiPerEther, - '0' // don't care about pool limits etc - ); + const quote = await contract.read.quoteExactOutputSingle({ + args: [ + getChainConstant(USDC, network), + getChainConstant(WETH_TOKEN, network), + 3000, // the fee (0.3%) + WeiPerEther, + Zero, // don't care about pool limits etc + ], + }); return quote; }; @@ -56,7 +61,7 @@ const fetchEthPrice = (args: { network?: number; provider: Provider }) => { null ); if (hardcodedPrice != null) { - return BigNumber.from(hardcodedPrice); + return BigInt(hardcodedPrice); } const apiSupported = doesNetworkSupport0x(network); diff --git a/packages/trade/src/price/fetchSellPrice.ts b/packages/trade/src/price/fetchSellPrice.ts index fcc0cb5c..44ba0c2d 100644 --- a/packages/trade/src/price/fetchSellPrice.ts +++ b/packages/trade/src/price/fetchSellPrice.ts @@ -1,13 +1,11 @@ -import { BigNumber, BigNumberish } from '@ethersproject/bignumber'; -import { WeiPerEther } from '@ethersproject/constants'; -import type { Provider } from '@ethersproject/providers'; import config from '@nftx/config'; -import { SUSHISWAP_ROUTER, WETH_TOKEN } from '@nftx/constants'; -import routerAbi from '@nftx/constants/abis/UniswapV2Router.json'; -import type { Price } from '@nftx/types'; +import { SUSHISWAP_ROUTER, WeiPerEther, WETH_TOKEN } from '@nftx/constants'; +import { UniswapV2Router } from '@nftx/abi'; +import type { Address, BigIntish, Price, Provider } from '@nftx/types'; import { getChainConstant, getContract } from '@nftx/utils'; import doesNetworkSupport0x from './doesNetworkSupport0x'; import fetch0xPrice from './fetch0xPrice'; +import type { QuoteToken } from './types'; const fetchSellPriceFromApi = async ({ network, @@ -17,9 +15,9 @@ const fetchSellPriceFromApi = async ({ critical, }: { network: number; - tokenAddress: string; - amount: BigNumberish; - quote: 'ETH'; + tokenAddress: Address; + amount: BigIntish; + quote: QuoteToken; critical: boolean; }) => { const { buyAmount, estimatedGas, gasPrice, sources, estimatedPriceImpact } = @@ -32,9 +30,9 @@ const fetchSellPriceFromApi = async ({ }); const price: Price = { - price: BigNumber.from(buyAmount), - estimatedGas: BigNumber.from(estimatedGas), - gasPrice: BigNumber.from(gasPrice), + price: BigInt(buyAmount), + estimatedGas: BigInt(estimatedGas), + gasPrice: BigInt(gasPrice), sources, priceImpact: Number(estimatedPriceImpact) / 100, }; @@ -50,14 +48,13 @@ const fetchSellPriceFromWeb3 = async ({ }: { network: number; provider: Provider; - tokenAddress: string; - amount: BigNumberish; - quote: 'ETH'; + tokenAddress: Address; + amount: BigIntish; + quote: QuoteToken; }) => { const contract = getContract({ - network, address: getChainConstant(SUSHISWAP_ROUTER, network), - abi: routerAbi, + abi: UniswapV2Router, provider, }); @@ -65,10 +62,9 @@ const fetchSellPriceFromWeb3 = async ({ const tokenOut = getChainConstant(WETH_TOKEN, network); const [, quotePrice] = - ((await contract.getAmountsOut(amount, [ - tokenIn, - tokenOut, - ])) as BigNumber[]) || []; + (await contract.read.getAmountsOut({ + args: [BigInt(amount), [tokenIn, tokenOut]], + })) || []; const price: Price = { price: quotePrice, @@ -83,9 +79,9 @@ const fetchSellPriceFromWeb3 = async ({ const fetchSellPrice = (args: { network?: number; provider: Provider; - tokenAddress: string; - amount?: BigNumberish; - quote?: 'ETH'; + tokenAddress: Address; + amount?: BigIntish; + quote?: QuoteToken; critical?: boolean; }) => { const { @@ -94,7 +90,7 @@ const fetchSellPrice = (args: { tokenAddress, amount = WeiPerEther, quote = 'ETH', - critical, + critical = false, } = args; const apiSupported = doesNetworkSupport0x(network); diff --git a/packages/trade/src/price/fetchSpotPrice.ts b/packages/trade/src/price/fetchSpotPrice.ts index 22727fda..26f0b14f 100644 --- a/packages/trade/src/price/fetchSpotPrice.ts +++ b/packages/trade/src/price/fetchSpotPrice.ts @@ -1,12 +1,11 @@ -import { WeiPerEther, Zero } from '@ethersproject/constants'; -import type { Provider } from '@ethersproject/providers'; -import { parseEther } from '@ethersproject/units'; import config from '@nftx/config'; -import type { Price } from '@nftx/types'; +import { WeiPerEther, Zero } from '@nftx/constants'; +import type { Address, Price, Provider } from '@nftx/types'; import { fetchReservesForToken } from '@nftx/utils'; -import { BigNumber } from 'ethers'; +import { parseEther } from 'viem'; import doesNetworkSupport0x from './doesNetworkSupport0x'; import fetch0xPrice from './fetch0xPrice'; +import type { QuoteToken } from './types'; const fetchSpotPriceFromApi = async ({ network, @@ -15,8 +14,8 @@ const fetchSpotPriceFromApi = async ({ critical, }: { network: number; - tokenAddress: string; - quote: 'ETH'; + tokenAddress: Address; + quote: QuoteToken; critical: boolean; }) => { const { @@ -32,13 +31,11 @@ const fetchSpotPriceFromApi = async ({ critical, }); - const spotPrice = WeiPerEther.mul(WeiPerEther).div( - parseEther(buyTokenToEthRate) - ); + const spotPrice = (WeiPerEther * WeiPerEther) / parseEther(buyTokenToEthRate); const price: Price = { - estimatedGas: BigNumber.from(estimatedGas), - gasPrice: BigNumber.from(gasPrice), + estimatedGas: BigInt(estimatedGas), + gasPrice: BigInt(gasPrice), price: spotPrice, sources, priceImpact: Number(estimatedPriceImpact) / 100, @@ -52,8 +49,8 @@ const fetchSpotPriceFromSubgraph = async ({ }: { network: number; provider: Provider; - tokenAddress: string; - quote: 'ETH'; + tokenAddress: Address; + quote: QuoteToken; }) => { const reserves = await fetchReservesForToken({ network, tokenAddress }); @@ -71,8 +68,8 @@ const fetchSpotPriceFromSubgraph = async ({ const fetchSpotPrice = (args: { network?: number; provider: Provider; - tokenAddress: string; - quote?: 'ETH'; + tokenAddress: Address; + quote?: QuoteToken; critical?: boolean; }) => { const { @@ -80,7 +77,7 @@ const fetchSpotPrice = (args: { provider, tokenAddress, quote = 'ETH', - critical, + critical = false, } = args; const apiSupported = doesNetworkSupport0x(network); diff --git a/packages/trade/src/price/fetchSpread.ts b/packages/trade/src/price/fetchSpread.ts index df4efdb6..36d6d4e3 100644 --- a/packages/trade/src/price/fetchSpread.ts +++ b/packages/trade/src/price/fetchSpread.ts @@ -1,9 +1,9 @@ -import { Zero } from '@ethersproject/constants'; -import type { Provider } from '@ethersproject/providers'; import config from '@nftx/config'; +import { Zero } from '@nftx/constants'; +import type { Address, Provider } from '@nftx/types'; import fetchBuyPrice from './fetchBuyPrice'; import fetchSellPrice from './fetchSellPrice'; -import type { BigNumber } from '@ethersproject/bignumber'; +import type { QuoteToken } from './types'; /** * Fetches the spread for a given token. This is the difference between buy price and sell price. @@ -11,10 +11,10 @@ import type { BigNumber } from '@ethersproject/bignumber'; const fetchSpread = async (args: { network?: number; provider: Provider; - tokenAddress: string; - quote?: 'ETH'; + tokenAddress: Address; + quote?: QuoteToken; critical?: boolean; -}): Promise => { +}): Promise => { const { network = config.network, provider, @@ -39,7 +39,7 @@ const fetchSpread = async (args: { critical, }); - return buyPrice.sub(sellPrice); + return buyPrice - sellPrice; } catch { return Zero; } diff --git a/packages/trade/src/price/fetchVaultBuyPrice.ts b/packages/trade/src/price/fetchVaultBuyPrice.ts index 1e03f965..6d26ca29 100644 --- a/packages/trade/src/price/fetchVaultBuyPrice.ts +++ b/packages/trade/src/price/fetchVaultBuyPrice.ts @@ -1,8 +1,7 @@ -import { WeiPerEther, Zero } from '@ethersproject/constants'; -import type { Provider } from '@ethersproject/providers'; -import { parseEther } from '@ethersproject/units'; import config from '@nftx/config'; -import type { Price, Vault } from '@nftx/types'; +import { WeiPerEther } from '@nftx/constants'; +import type { Price, Provider, Vault } from '@nftx/types'; +import { parseEther } from 'viem'; import calculateBuyFee from './calculateBuyFee'; import fetchBuyPrice from './fetchBuyPrice'; @@ -40,13 +39,13 @@ const fetchVaultBuyPrice = async (args: { if (targetBuys || randomBuys) { if (targetBuys) { - amount = amount.add(parseEther(`${targetBuys}`)); + amount = amount + parseEther(`${targetBuys}`); } if (randomBuys) { - amount = amount.add(parseEther(`${randomBuys}`)); + amount = amount + parseEther(`${randomBuys}`); } } else { - amount = amount.add(WeiPerEther); + amount = amount + WeiPerEther; } return fetchBuyPrice({ diff --git a/packages/trade/src/price/fetchVaultSellPrice.ts b/packages/trade/src/price/fetchVaultSellPrice.ts index 030948b1..0ec5b0a6 100644 --- a/packages/trade/src/price/fetchVaultSellPrice.ts +++ b/packages/trade/src/price/fetchVaultSellPrice.ts @@ -1,7 +1,6 @@ -import { WeiPerEther } from '@ethersproject/constants'; -import type { Provider } from '@ethersproject/providers'; import config from '@nftx/config'; -import type { Vault } from '@nftx/types'; +import { WeiPerEther } from '@nftx/constants'; +import type { Provider, Vault } from '@nftx/types'; import calculateSellFee from './calculateSellFee'; import fetchSellPrice from './fetchSellPrice'; @@ -9,7 +8,7 @@ import fetchSellPrice from './fetchSellPrice'; * Unlike fetchSellPrice, this method accounts for vault fees */ const fetchVaultSellPrice = async (args: { - vault: Pick & { fees: Pick }; + vault: { id: Vault['id']; fees: Pick }; network?: number; provider: Provider; amount?: number; @@ -28,7 +27,7 @@ const fetchVaultSellPrice = async (args: { * and trade 0.95 PUNKs for ETH */ const fee = calculateSellFee({ vault, amount: sells }); - const amount = WeiPerEther.mul(sells).sub(fee); + const amount = WeiPerEther * BigInt(sells) - fee; return fetchSellPrice({ network, diff --git a/packages/trade/src/price/fetchVaultSwapPrice.ts b/packages/trade/src/price/fetchVaultSwapPrice.ts index b6f9c8c3..85b26292 100644 --- a/packages/trade/src/price/fetchVaultSwapPrice.ts +++ b/packages/trade/src/price/fetchVaultSwapPrice.ts @@ -1,6 +1,6 @@ -import type { Provider } from '@ethersproject/providers'; import config from '@nftx/config'; -import type { Price, Vault } from '@nftx/types'; +import { Zero } from '@nftx/constants'; +import type { Price, Provider, Vault } from '@nftx/types'; import calculateSwapFee from './calculateSwapFee'; import fetchBuyPrice from './fetchBuyPrice'; @@ -10,7 +10,8 @@ import fetchBuyPrice from './fetchBuyPrice'; const fetchVaultSwapPrice = async (args: { network?: number; provider: Provider; - vault: Pick & { + vault: { + id: Vault['id']; fees: Pick; }; targetSwaps?: number; @@ -32,7 +33,7 @@ const fetchVaultSwapPrice = async (args: { const amount = calculateSwapFee({ vault, randomSwaps, targetSwaps }); // No fees for this vault - if (amount.isZero()) { + if (amount === Zero) { return { price: amount }; } diff --git a/packages/trade/src/price/index.ts b/packages/trade/src/price/index.ts index 1422a872..34e6a89c 100644 --- a/packages/trade/src/price/index.ts +++ b/packages/trade/src/price/index.ts @@ -8,3 +8,7 @@ export { default as fetchSpread } from './fetchSpread'; export { default as fetchVaultBuyPrice } from './fetchVaultBuyPrice'; export { default as fetchVaultSellPrice } from './fetchVaultSellPrice'; export { default as fetchVaultSwapPrice } from './fetchVaultSwapPrice'; +export { default as calculateBuyFee } from './calculateBuyFee'; +export { default as calculateSellFee } from './calculateSellFee'; +export { default as calculateSwapFee } from './calculateSwapFee'; +export * from './types'; diff --git a/packages/trade/src/price/types.ts b/packages/trade/src/price/types.ts new file mode 100644 index 00000000..a8e8d255 --- /dev/null +++ b/packages/trade/src/price/types.ts @@ -0,0 +1,3 @@ +import type { Address } from '@nftx/types'; + +export type QuoteToken = Address | 'ETH' | 'USDC'; diff --git a/packages/trade/src/staking/claimRewards.ts b/packages/trade/src/staking/claimRewards.ts index 5c80d230..77b39df9 100644 --- a/packages/trade/src/staking/claimRewards.ts +++ b/packages/trade/src/staking/claimRewards.ts @@ -1,9 +1,8 @@ -import type { ContractTransaction } from '@ethersproject/contracts'; import config from '@nftx/config'; import { NFTX_LP_STAKING } from '@nftx/constants'; -import abi from '@nftx/constants/abis/NFTXLpStaking.json'; +import { NFTXLpStaking } from '@nftx/abi'; import { getChainConstant, getContract } from '@nftx/utils'; -import type { Signer } from 'ethers'; +import type { Provider, Signer } from '@nftx/types'; type GetContract = typeof getContract; @@ -12,20 +11,23 @@ export default ({ getContract }: { getContract: GetContract }) => function claimRewards(args: { vaultIds: string[]; network?: number; + provider: Provider; signer: Signer; - }): Promise { - const { vaultIds, network = config.network, signer } = args; + }) { + const { vaultIds, network = config.network, provider, signer } = args; const contract = getContract({ address: getChainConstant(NFTX_LP_STAKING, network), - network, - abi, + abi: NFTXLpStaking, + provider, signer, }); if (vaultIds.length > 1) { - return contract.claimMultipleRewards(vaultIds); + return contract.write.claimMultipleRewards({ + args: [vaultIds.map(BigInt)], + }); } else { - return contract.claimRewards(vaultIds[0]); + return contract.write.claimRewards({ args: [BigInt(vaultIds[0])] }); } }; diff --git a/packages/trade/src/staking/index.ts b/packages/trade/src/staking/index.ts index 5a03463b..660a3362 100644 --- a/packages/trade/src/staking/index.ts +++ b/packages/trade/src/staking/index.ts @@ -1,4 +1,3 @@ -import { estimateGasAndFees } from '../trade'; import makeUnstakeLiquidity from './unstakeLiquidity'; import makeUnstakeInventory from './unstakeInventory'; import makeStakeLiquidity from './stakeLiquidity'; @@ -12,12 +11,10 @@ export const stakeVToken = makeStakeVToken({ getContract }); export const stakeSlp = makeStakeSlp({ getContract }); export const stakeLiquidity = makeStakeLiquidity({ getContract, - estimateGasAndFees, }); export const stakeInventory = makeStakeInventory({ getContract }); export const claimRewards = makeClaimRewards({ getContract }); export const unstakeLiquidity = makeUnstakeLiquidity({ getContract }); export const unstakeInventory = makeUnstakeInventory({ - estimateGasAndFees, getContract, }); diff --git a/packages/trade/src/staking/stakeInventory.ts b/packages/trade/src/staking/stakeInventory.ts index 51e34e67..5a8a38f5 100644 --- a/packages/trade/src/staking/stakeInventory.ts +++ b/packages/trade/src/staking/stakeInventory.ts @@ -1,62 +1,69 @@ -import type { ContractTransaction } from '@ethersproject/contracts'; import config from '@nftx/config'; import { NFTX_STAKING_ZAP } from '@nftx/constants'; -import NftxStakingAbi from '@nftx/constants/abis/NFTXStakingZap.json'; +import { NFTXStakingZap } from '@nftx/abi'; import { getChainConstant, getContract } from '@nftx/utils'; -import type { Signer } from 'ethers'; import { getTokenIdAmounts, getUniqueTokenIds } from '../trade'; +import type { Provider, Signer, TokenId } from '@nftx/types'; type GetContract = typeof getContract; const stake721 = ({ network, + provider, signer, vaultId, tokenIds: tokensAndQuantities, getContract, }: { network: number; + provider: Provider; signer: Signer; vaultId: string; - tokenIds: string[] | [string, number][]; + tokenIds: TokenId[] | [TokenId, number][]; getContract: GetContract; }) => { const contract = getContract({ - network, + provider, signer, address: getChainConstant(NFTX_STAKING_ZAP, network), - abi: NftxStakingAbi, + abi: NFTXStakingZap, }); const tokenIds = getUniqueTokenIds(tokensAndQuantities); - return contract.provideInventory721(vaultId, tokenIds); + return contract.write.provideInventory721({ + args: [BigInt(vaultId), tokenIds.map(BigInt)], + }); }; const stake1155 = ({ network, + provider, signer, vaultId, tokenIds: tokensAndQuantities, getContract, }: { network: number; + provider: Provider; signer: Signer; vaultId: string; - tokenIds: string[] | [string, number][]; + tokenIds: TokenId[] | [TokenId, number][]; getContract: GetContract; }) => { const contract = getContract({ - network, + provider, signer, address: getChainConstant(NFTX_STAKING_ZAP, network), - abi: NftxStakingAbi, + abi: NFTXStakingZap, }); const tokenIds = getUniqueTokenIds(tokensAndQuantities); const amounts = getTokenIdAmounts(tokensAndQuantities); - return contract.provideInventory1155(vaultId, tokenIds, amounts); + return contract.write.provideInventory1155({ + args: [BigInt(vaultId), tokenIds.map(BigInt), amounts.map(BigInt)], + }); }; export default ({ getContract }: { getContract: GetContract }) => @@ -66,16 +73,18 @@ export default ({ getContract }: { getContract: GetContract }) => */ function stakeInventory(args: { network?: number; + provider: Provider; signer: Signer; /** The vault you are staking into */ vaultId: string; /** Token IDs for the NFTs you want to stake */ - tokenIds: string[] | [string, number][]; + tokenIds: TokenId[] | [TokenId, number][]; standard?: 'ERC721' | 'ERC1155'; quote?: 'ETH'; - }): Promise { + }) { const { network = config.network, + provider, signer, vaultId, tokenIds, @@ -83,10 +92,24 @@ export default ({ getContract }: { getContract: GetContract }) => } = args; if (standard === 'ERC721') { - return stake721({ getContract, network, signer, tokenIds, vaultId }); + return stake721({ + getContract, + network, + provider, + signer, + tokenIds, + vaultId, + }); } if (standard === 'ERC1155') { - return stake1155({ getContract, network, signer, tokenIds, vaultId }); + return stake1155({ + getContract, + network, + provider, + signer, + tokenIds, + vaultId, + }); } throw new Error(`Unsupported standard ${standard}`); }; diff --git a/packages/trade/src/staking/stakeLiquidity.ts b/packages/trade/src/staking/stakeLiquidity.ts index f17c228e..e958d9ba 100644 --- a/packages/trade/src/staking/stakeLiquidity.ts +++ b/packages/trade/src/staking/stakeLiquidity.ts @@ -1,29 +1,18 @@ -import type { BigNumber } from '@ethersproject/bignumber'; -import { WeiPerEther } from '@ethersproject/constants'; -import type { Contract, ContractTransaction } from '@ethersproject/contracts'; -import { parseEther } from '@ethersproject/units'; import config from '@nftx/config'; -import { NFTX_STAKING_ZAP } from '@nftx/constants'; -import abi from '@nftx/constants/abis/NFTXStakingZap.json'; +import { NFTX_STAKING_ZAP, WeiPerEther } from '@nftx/constants'; +import { NFTXStakingZap } from '@nftx/abi'; import { getChainConstant, getContract } from '@nftx/utils'; -import type { Signer } from 'ethers'; import { - estimateGasAndFees, getTokenIdAmounts, getUniqueTokenIds, increaseGasLimit, } from '../trade'; +import type { Contract, Provider, Signer, TokenId } from '@nftx/types'; +import { parseEther } from 'viem'; -type EstimateGasAndFees = typeof estimateGasAndFees; type GetContract = typeof getContract; -export default ({ - estimateGasAndFees, - getContract, -}: { - estimateGasAndFees: EstimateGasAndFees; - getContract: GetContract; -}) => { +export default ({ getContract }: { getContract: GetContract }) => { const stake721 = async ({ vaultId, pairedEth, @@ -33,64 +22,30 @@ export default ({ minEthIn, contract, }: { - pairedEth: BigNumber; + pairedEth: bigint; vaultId: string; - tokenIds: string[] | [string, number][]; + tokenIds: TokenId[] | [TokenId, number][]; isNewPool: boolean; - gasPrice: BigNumber; - minEthIn: BigNumber; - contract: Contract; + gasPrice?: bigint; + minEthIn: bigint; + contract: Contract; }) => { - const method = 'addLiquidity721ETH' as const; const tokenIds = getUniqueTokenIds(tokensAndQuantities); - const args = [vaultId, tokenIds, minEthIn]; - // try to fetch the estimate, if it succeeds, you can afford it and have a 1559-capable wallet - const { maxFeePerGas, gasEstimate, maxPriorityFeePerGas } = - await estimateGasAndFees({ - contract, - method, - args, - overrides: { - value: pairedEth, - }, - }); - const gasLimit = increaseGasLimit({ - estimate: gasEstimate, - amount: 7, - }); - const can1559 = !!(maxFeePerGas && maxPriorityFeePerGas); - - // Only do EIP-1559 fees on existing pools, no need for next-block-speed when creating new one - if (can1559 && isNewPool) { - console.info('Attempting non-EIP-1559 tx'); - return contract[method](...args, { - value: pairedEth, - gasLimit, - }); - } + const args = [BigInt(vaultId), tokenIds.map(BigInt), minEthIn] as const; - if (can1559) { - console.info('Attempting EIP-1559 tx'); - return contract[method](...args, { - value: pairedEth, - maxPriorityFeePerGas, - maxFeePerGas, - gasLimit, + if (isNewPool) { + return contract.write.addLiquidity721ETH({ + args, + gasPrice: gasPrice + ? increaseGasLimit({ estimate: gasPrice, amount: 7 }) + : undefined, }); } - console.info('Attempting legacy tx'); - // if we cannot calculate gas estimate it is because: - // - they cannot afford it (gas estimate fails) - // - their wallet does not support EIP-1559 - - // sending the transaction with only gasPrice set allows them to - // see that they cannot afford the tx rather than an unhelpful execution reverted modal - return contract[method](...args, { + return contract.write.addLiquidity721ETH({ + args, value: pairedEth, - gasLimit, - // bump gas by 25% if not a new pool - gasPrice: !isNewPool && gasPrice ? gasPrice.mul(125).div(100) : null, + gasPrice, }); }; @@ -103,45 +58,33 @@ export default ({ minEthIn, contract, }: { - pairedEth: BigNumber; + pairedEth: bigint; slippage: number; vaultId: string; - tokenIds: string[] | [string, number][]; + tokenIds: TokenId[] | [TokenId, number][]; isNewPool: boolean; - gasPrice: BigNumber; - minEthIn: BigNumber; - contract: Contract; + gasPrice?: bigint; + minEthIn: bigint; + contract: Contract; }) => { - const method = 'addLiquidity1155ETH' as const; const tokenIds = getUniqueTokenIds(tokensAndQuantities); const amounts = getTokenIdAmounts(tokensAndQuantities); - const args = [vaultId, tokenIds, amounts, minEthIn]; - // try to fetch the estimate, if it succeeds, you can afford it and have a 1559-capable wallet - const { maxFeePerGas, maxPriorityFeePerGas } = await estimateGasAndFees({ - contract, - method, - overrides: { value: pairedEth }, - args, - }); + const args = [ + BigInt(vaultId), + tokenIds.map(BigInt), + amounts.map(BigInt), + minEthIn, + ] as const; - if (maxPriorityFeePerGas && maxFeePerGas && !isNewPool) { - console.info('Attempting ERC-1155 staking EIP-1559 transaction'); - return contract[method](...args, { - value: pairedEth, - maxPriorityFeePerGas, - maxFeePerGas, - }); - } - - console.info('Attempting ERC-1155 staking non-EIP-1559 transaction'); // if we cannot calculate gas estimate it is because: // - they cannot afford it (gas estimate fails) // - their wallet does not support EIP-1559 // - it's a new pool - return contract[method](...args, { + return contract.write.addLiquidity1155ETH({ + args, + maxFeePerGas: + !isNewPool && gasPrice ? (gasPrice * 125n) / 100n : undefined, value: pairedEth, - // pump gas by 25% on existing pools - gasPrice: !isNewPool && gasPrice ? gasPrice.mul(125).div(100) : null, }); }; @@ -151,42 +94,42 @@ export default ({ */ return function stakeLiquidity(args: { network?: number; + provider: Provider; signer: Signer; /** The vault you are staking into */ vaultId: string; /** Token IDs for the NFTs you want to stake */ - tokenIds: string[] | [string, number][]; + tokenIds: TokenId[] | [TokenId, number][]; /** The amount of ETH to pair with your NFTs */ - pairedEth: BigNumber; + pairedEth: bigint; /** A percentage value for the maximum amount of slippage you are willing to accept */ slippage: number; /** If you are staking into a brand new pool, there will be a slightly higher gas cost due to setting up the pools, this option helps to accomodate for this */ isNewPool?: boolean; - gasPrice?: BigNumber; + gasPrice?: bigint; standard?: 'ERC721' | 'ERC1155'; - }): Promise { + }) { const { network = config.network, signer, + provider, vaultId, pairedEth, slippage, tokenIds, - isNewPool, + isNewPool = false, gasPrice, standard = 'ERC721', } = args; const contract = getContract({ - network, - abi, + abi: NFTXStakingZap, + provider, signer, address: getChainConstant(NFTX_STAKING_ZAP, network), }); // use slippage settings to calculate min eth allowed before cancelation - const minEthIn = parseEther(`${1 - slippage}`) - .mul(pairedEth) - .div(WeiPerEther); + const minEthIn = (parseEther(`${1 - slippage}`) * pairedEth) / WeiPerEther; if (standard === 'ERC721') { return stake721({ diff --git a/packages/trade/src/staking/stakeSlp.ts b/packages/trade/src/staking/stakeSlp.ts index af81eaa1..092ecac6 100644 --- a/packages/trade/src/staking/stakeSlp.ts +++ b/packages/trade/src/staking/stakeSlp.ts @@ -1,10 +1,8 @@ -import type { BigNumber } from '@ethersproject/bignumber'; -import type { ContractTransaction } from '@ethersproject/contracts'; import config from '@nftx/config'; import { NFTX_LP_STAKING } from '@nftx/constants'; -import abi from '@nftx/constants/abis/NFTXLpStaking.json'; +import { NFTXLpStaking } from '@nftx/abi'; import { getChainConstant, getContract } from '@nftx/utils'; -import type { Signer } from 'ethers'; +import type { Provider, Signer } from '@nftx/types'; type GetContract = typeof getContract; @@ -14,18 +12,25 @@ export default ({ getContract }: { getContract: GetContract }) => */ function stakeSlp(args: { vaultId: string; - amount: BigNumber; + amount: bigint; network?: number; + provider: Provider; signer: Signer; - }): Promise { - const { vaultId, amount, network = config.network, signer } = args; + }) { + const { + vaultId, + amount, + network = config.network, + provider, + signer, + } = args; const contract = getContract({ - network, + provider, signer, address: getChainConstant(NFTX_LP_STAKING, network), - abi, + abi: NFTXLpStaking, }); - return contract.deposit(vaultId, amount); + return contract.write.deposit({ args: [BigInt(vaultId), amount] }); }; diff --git a/packages/trade/src/staking/stakeVToken.ts b/packages/trade/src/staking/stakeVToken.ts index cbd64691..2cfc3cfb 100644 --- a/packages/trade/src/staking/stakeVToken.ts +++ b/packages/trade/src/staking/stakeVToken.ts @@ -1,10 +1,8 @@ -import type { Signer } from 'ethers'; -import abi from '@nftx/constants/abis/NFTXInventoryStaking.json'; +import { NFTXInventoryStaking } from '@nftx/abi'; import { NFTX_INVENTORY_STAKING } from '@nftx/constants'; import config from '@nftx/config'; -import type { BigNumber } from '@ethersproject/bignumber'; import { getChainConstant, getContract } from '@nftx/utils'; -import type { ContractTransaction } from '@ethersproject/contracts'; +import type { Provider, Signer } from '@nftx/types'; type GetContract = typeof getContract; @@ -14,18 +12,25 @@ export default ({ getContract }: { getContract: GetContract }) => */ function stakeVToken(args: { network?: number; + provider: Provider; signer: Signer; vaultId: string; - amount: BigNumber; - }): Promise { - const { network = config.network, signer, vaultId, amount } = args; + amount: bigint; + }) { + const { + network = config.network, + provider, + signer, + vaultId, + amount, + } = args; const contract = getContract({ - network, - abi, + abi: NFTXInventoryStaking, address: getChainConstant(NFTX_INVENTORY_STAKING, network), + provider, signer, }); - return contract.deposit(vaultId, amount); + return contract.write.deposit({ args: [BigInt(vaultId), amount] }); }; diff --git a/packages/trade/src/staking/unstakeInventory/index.ts b/packages/trade/src/staking/unstakeInventory/index.ts index 6f4173fd..b8f05e56 100644 --- a/packages/trade/src/staking/unstakeInventory/index.ts +++ b/packages/trade/src/staking/unstakeInventory/index.ts @@ -1,21 +1,12 @@ import makeWithdrawNfts from './withdrawNfts'; import makeWithdrawVToken from './withdrawVToken'; import makeUnstakeInventory from './unstakeInventory'; -import type { estimateGasAndFees } from '../../trade'; import type { getContract } from '@nftx/utils'; -type EstimateGasAndFees = typeof estimateGasAndFees; type GetContract = typeof getContract; -export default ({ - estimateGasAndFees, - getContract, -}: { - estimateGasAndFees: EstimateGasAndFees; - getContract: GetContract; -}) => { +export default ({ getContract }: { getContract: GetContract }) => { const withdrawNfts = makeWithdrawNfts({ - estimateGasAndFees, getContract, }); const withdrawVToken = makeWithdrawVToken({ getContract }); diff --git a/packages/trade/src/staking/unstakeInventory/unstakeInventory.ts b/packages/trade/src/staking/unstakeInventory/unstakeInventory.ts index 39b78de5..737edfd7 100644 --- a/packages/trade/src/staking/unstakeInventory/unstakeInventory.ts +++ b/packages/trade/src/staking/unstakeInventory/unstakeInventory.ts @@ -1,8 +1,6 @@ import type withdrawVToken from './withdrawVToken'; import type withdrawNfts from './withdrawNfts'; -import type { Signer } from 'ethers'; -import type { BigNumber } from '@ethersproject/bignumber'; -import type { ContractTransaction } from '@ethersproject/contracts'; +import type { Provider, Signer } from '@nftx/types'; type WithdrawVToken = ReturnType; type WithdrawNfts = ReturnType; @@ -20,6 +18,7 @@ export default ({ */ function unstakeInventory(args: { network: number; + provider: Provider; signer: Signer; vaultId: string; /** The number of NFTs you want to redeem. @@ -31,15 +30,16 @@ export default ({ /** The amount of xToken to unstake into vToken * This must not be more than your balance but can be a fractional amount. */ - xTokenAmount?: BigNumber; + xTokenAmount?: bigint; overrides?: Record; - }): Promise { + }) { const { network, signer, + provider, vaultId, nftsToRedeem, - withdrawRemaining, + withdrawRemaining = false, xTokenAmount, overrides, } = args; @@ -47,6 +47,7 @@ export default ({ if (nftsToRedeem) { return withdrawNfts({ network, + provider, signer, vaultId, withdrawRemaining, @@ -57,6 +58,7 @@ export default ({ if (xTokenAmount) { return withdrawVToken({ network, + provider, signer, vaultId, xTokenAmount, diff --git a/packages/trade/src/staking/unstakeInventory/withdrawNfts.ts b/packages/trade/src/staking/unstakeInventory/withdrawNfts.ts index ee5f2432..cbbbd47c 100644 --- a/packages/trade/src/staking/unstakeInventory/withdrawNfts.ts +++ b/packages/trade/src/staking/unstakeInventory/withdrawNfts.ts @@ -1,22 +1,18 @@ -import abi from '@nftx/constants/abis/NFTXUnstakingInventoryZap.json'; -import { WeiPerEther, Zero } from '@ethersproject/constants'; -import { estimateGasAndFees, increaseGasLimit } from '../../trade'; -import type { Signer } from 'ethers'; -import { NFTX_UNSTAKING_INVENTORY_ZAP } from '@nftx/constants'; +import { NFTXUnstakingInventoryZap } from '@nftx/abi'; +import { + NFTX_UNSTAKING_INVENTORY_ZAP, + WeiPerEther, + Zero, +} from '@nftx/constants'; import { getChainConstant, getContract } from '@nftx/utils'; +import type { Provider, Signer } from '@nftx/types'; -type EstimateGasAndFees = typeof estimateGasAndFees; type GetContract = typeof getContract; -export default ({ - estimateGasAndFees, - getContract, -}: { - estimateGasAndFees: EstimateGasAndFees; - getContract: GetContract; -}) => +export default ({ getContract }: { getContract: GetContract }) => async function withdrawNfts({ network, + provider, signer, vaultId, overrides, @@ -24,6 +20,7 @@ export default ({ withdrawRemaining, }: { network: number; + provider: Provider; signer: Signer; vaultId: string; nftsToRedeem: number; @@ -31,34 +28,24 @@ export default ({ overrides?: Record; }) { const contract = getContract({ - network, + provider, signer, - abi, + abi: NFTXUnstakingInventoryZap, address: getChainConstant(NFTX_UNSTAKING_INVENTORY_ZAP, network), }); - const method = 'unstakeInventory' as const; const args = [ - vaultId, - nftsToRedeem, + BigInt(vaultId), + BigInt(nftsToRedeem), withdrawRemaining ? WeiPerEther : Zero, - ]; - - const { gasEstimate } = await estimateGasAndFees({ - contract, - method, - args, - overrides: { ...overrides }, - }); - - const gasLimit = increaseGasLimit({ estimate: gasEstimate, amount: 5 }); + ] as const; try { - return await contract[method](...args, { + return await contract.write.unstakeInventory({ ...overrides, - gasLimit, + args, }); } catch (e) { console.error(e); - return contract[method](...args, { ...overrides }); + return contract.write.unstakeInventory({ ...overrides, args }); } }; diff --git a/packages/trade/src/staking/unstakeInventory/withdrawVToken.ts b/packages/trade/src/staking/unstakeInventory/withdrawVToken.ts index 7cacaaec..ab2a4006 100644 --- a/packages/trade/src/staking/unstakeInventory/withdrawVToken.ts +++ b/packages/trade/src/staking/unstakeInventory/withdrawVToken.ts @@ -1,31 +1,35 @@ -import type { BigNumber } from '@ethersproject/bignumber'; import { NFTX_INVENTORY_STAKING } from '@nftx/constants'; -import abi from '@nftx/constants/abis/NFTXInventoryStaking.json'; +import { NFTXInventoryStaking } from '@nftx/abi'; import { getChainConstant, getContract } from '@nftx/utils'; -import type { Signer } from 'ethers'; +import type { Provider, Signer } from '@nftx/types'; type GetContract = typeof getContract; export default ({ getContract }: { getContract: GetContract }) => function withdrawVToken({ network, + provider, signer, vaultId, xTokenAmount, overrides, }: { network: number; + provider: Provider; signer: Signer; vaultId: string; - xTokenAmount: BigNumber; + xTokenAmount: bigint; overrides?: Record; }) { const contract = getContract({ - network, + provider, signer, - abi, + abi: NFTXInventoryStaking, address: getChainConstant(NFTX_INVENTORY_STAKING, network), }); - return contract.withdraw(vaultId, xTokenAmount, { ...overrides }); + return contract.write.withdraw({ + args: [BigInt(vaultId), xTokenAmount], + ...overrides, + }); }; diff --git a/packages/trade/src/staking/unstakeLiquidity/exitLiquidity.ts b/packages/trade/src/staking/unstakeLiquidity/exitLiquidity.ts index 4ff5db70..fcaa79bf 100644 --- a/packages/trade/src/staking/unstakeLiquidity/exitLiquidity.ts +++ b/packages/trade/src/staking/unstakeLiquidity/exitLiquidity.ts @@ -1,26 +1,29 @@ import { NFTX_LP_STAKING } from '@nftx/constants'; -import abi from '@nftx/constants/abis/NFTXLpStaking.json'; +import { NFTXLpStaking } from '@nftx/abi'; import { getChainConstant, getContract } from '@nftx/utils'; -import type { Signer } from 'ethers'; +import type { Provider, Signer } from '@nftx/types'; +import config from '@nftx/config'; type GetContract = typeof getContract; export default ({ getContract }: { getContract: GetContract }) => function exitLiquidity({ - network, + network = config.network, + provider, signer, vaultId, }: { network?: number; + provider: Provider; signer: Signer; vaultId: string; }) { const contract = getContract({ - network, + provider, signer, - abi, + abi: NFTXLpStaking, address: getChainConstant(NFTX_LP_STAKING, network), }); - return contract.exit(vaultId); + return contract.write.exit({ args: [BigInt(vaultId)] }); }; diff --git a/packages/trade/src/staking/unstakeLiquidity/unstakeLiquidity.ts b/packages/trade/src/staking/unstakeLiquidity/unstakeLiquidity.ts index a2b41385..03ccd6ee 100644 --- a/packages/trade/src/staking/unstakeLiquidity/unstakeLiquidity.ts +++ b/packages/trade/src/staking/unstakeLiquidity/unstakeLiquidity.ts @@ -1,7 +1,5 @@ -import type { BigNumber } from '@ethersproject/bignumber'; -import type { ContractTransaction } from '@ethersproject/contracts'; import config from '@nftx/config'; -import type { Signer } from 'ethers'; +import type { Provider, Signer } from '@nftx/types'; import type exitLiquidity from './exitLiquidity'; import type withdrawLiquidity from './withdrawLiquidity'; @@ -22,26 +20,35 @@ export default ({ */ function unstakeLiquidity(args: { network?: number; + provider: Provider; signer: Signer; vaultId: string; /** The amount of xSlp to withdraw */ - slpAmount?: BigNumber; + slpAmount?: bigint; /** The maximum amount of xSlp that can be withdrawn, i.e. your balance */ - max?: BigNumber; - }): Promise { - const { vaultId, slpAmount, max, network = config.network, signer } = args; + max?: bigint; + }) { + const { + vaultId, + slpAmount, + max, + network = config.network, + provider, + signer, + } = args; // If we're unstaking everything we can just exit the position entirely - if (slpAmount && max && slpAmount.gte(max)) { - return exitLiquidity({ network, signer, vaultId }); + if (slpAmount && max && slpAmount > max) { + return exitLiquidity({ network, provider, signer, vaultId }); } // If you don't provide an amount, completely exit the position if (!slpAmount) { - return exitLiquidity({ network, signer, vaultId }); + return exitLiquidity({ network, signer, provider, vaultId }); } return withdrawLiquidity({ slpAmount, network, + provider, signer, vaultId, }); diff --git a/packages/trade/src/staking/unstakeLiquidity/withdrawLiquidity.ts b/packages/trade/src/staking/unstakeLiquidity/withdrawLiquidity.ts index ef72aec1..f4cbe7fe 100644 --- a/packages/trade/src/staking/unstakeLiquidity/withdrawLiquidity.ts +++ b/packages/trade/src/staking/unstakeLiquidity/withdrawLiquidity.ts @@ -1,29 +1,30 @@ -import type { BigNumber } from '@ethersproject/bignumber'; import { NFTX_LP_STAKING } from '@nftx/constants'; -import abi from '@nftx/constants/abis/NFTXLpStaking.json'; +import { NFTXLpStaking } from '@nftx/abi'; import { getChainConstant, getContract } from '@nftx/utils'; -import type { Signer } from 'ethers'; +import type { Provider, Signer } from '@nftx/types'; type GetContract = typeof getContract; export default ({ getContract }: { getContract: GetContract }) => function withdrawLiquidity({ network, + provider, signer, vaultId, slpAmount, }: { network: number; + provider: Provider; signer: Signer; vaultId: string; - slpAmount: BigNumber; + slpAmount: bigint; }) { const contract = getContract({ - network, + provider, signer, - abi, + abi: NFTXLpStaking, address: getChainConstant(NFTX_LP_STAKING, network), }); - return contract.withdraw(vaultId, slpAmount); + return contract.write.withdraw({ args: [BigInt(vaultId), slpAmount] }); }; diff --git a/packages/trade/src/trade/approve.ts b/packages/trade/src/trade/approve.ts index 8b3c678f..0a254753 100644 --- a/packages/trade/src/trade/approve.ts +++ b/packages/trade/src/trade/approve.ts @@ -1,87 +1,85 @@ -import type { BigNumber } from '@ethersproject/bignumber'; -import type { ContractTransaction } from '@ethersproject/contracts'; -import erc721Abi from '@nftx/constants/abis/ERC721.json'; -import punkAbi from '@nftx/constants/abis/CryptoPunks.json'; -import erc20Abi from '@nftx/constants/abis/ERC20.json'; -import { MaxUint256 } from '@ethersproject/constants'; -import type { Signer } from 'ethers'; -import config from '@nftx/config'; +import { ERC20, ERC721, CryptoPunks } from '@nftx/abi'; import { getUniqueTokenIds } from './utils'; import { getContract, isCryptoPunk } from '@nftx/utils'; +import type { Address, Provider, Signer, TokenId } from '@nftx/types'; +import { MaxUint256, Zero } from '@nftx/constants'; function approvePunk({ tokenId, tokenIds, - network, tokenAddress, + provider, signer, spenderAddress, }: { - tokenId: string; - tokenIds: string[]; - network: number; - tokenAddress: string; + tokenId?: TokenId; + tokenIds?: TokenId[]; + tokenAddress: Address; + provider: Provider; signer: Signer; - spenderAddress: string; + spenderAddress: Address; }) { - if (!tokenId && !tokenIds?.[0]) { + if (!tokenId) { + tokenId = tokenIds?.[0]; + } + if (!tokenId) { throw new Error('To approve a punk you must provide the tokenID'); } const contract = getContract({ - network, address: tokenAddress, + provider, signer, - abi: punkAbi, + abi: CryptoPunks, + }); + return contract.write.offerPunkForSaleToAddress({ + args: [BigInt(tokenId), Zero, spenderAddress], }); - return contract.offerPunkForSaleToAddress( - tokenIds?.[0] ?? tokenId, - 0, - spenderAddress - ); } function approveErc721({ - network, tokenAddress, + provider, signer, spenderAddress, }: { - network: number; - tokenAddress: string; + tokenAddress: Address; + provider: Provider; signer: Signer; - spenderAddress: string; + spenderAddress: Address; }) { const contract = getContract({ - network, address: tokenAddress, + provider, signer, - abi: erc721Abi, + abi: ERC721, }); - return contract.setApprovalForAll(spenderAddress, true); + return contract.write.setApprovalForAll({ args: [spenderAddress, true] }); } const approveErc1155 = approveErc721; function approveErc20({ - network, tokenAddress, + provider, signer, spenderAddress, amount, }: { - network: number; - tokenAddress: string; + tokenAddress: Address; + provider: Provider; signer: Signer; - spenderAddress: string; - amount: BigNumber; + spenderAddress: Address; + amount?: bigint; }) { const contract = getContract({ - network, address: tokenAddress, + provider, signer, - abi: erc20Abi, + abi: ERC20, + }); + return contract.write.approve({ + args: [spenderAddress, amount ?? MaxUint256], }); - return contract.approve(spenderAddress, amount ?? MaxUint256); } /** @@ -89,26 +87,26 @@ function approveErc20({ * If you want to approve a standard sell or swap, use the relevant methods instead (approveSell/approveSwap) */ async function approve(args: { - network?: number; /** The token we want to spend */ - tokenAddress: string; + tokenAddress: Address; /** The smart contract address that will be spending the token */ - spenderAddress: string; + spenderAddress: Address; + provider: Provider; signer: Signer; - tokenId?: string; + tokenId?: TokenId; /** For ERC721/ERC1155, provide the token id or tokenIds */ - tokenIds?: string[] | [string, number][]; + tokenIds?: TokenId[] | [TokenId, number][]; /** For ERC20, provide the amount the spender can spend - if omitted it defaults to the max amount */ - amount?: BigNumber; + amount?: bigint; /** If the standard is omitted, we will infer either ERC721 or ERC20 based on amount/tokenId/tokenIds parameters */ standard?: 'ERC721' | 'ERC1155' | 'ERC20'; -}): Promise { +}) { const { - network = config.network, tokenAddress, spenderAddress, tokenId, tokenIds, + provider, signer, amount, standard = tokenId || tokenIds ? 'ERC721' : amount ? 'ERC20' : null, @@ -118,22 +116,22 @@ async function approve(args: { if (isCryptoPunk(tokenAddress)) { return approvePunk({ tokenId, - tokenIds: getUniqueTokenIds(tokenIds), - network, + tokenIds: getUniqueTokenIds(tokenIds ?? []), tokenAddress, + provider, signer, spenderAddress, }); } - return approveErc721({ network, tokenAddress, signer, spenderAddress }); + return approveErc721({ tokenAddress, provider, signer, spenderAddress }); } if (standard === 'ERC1155') { - return approveErc1155({ network, signer, spenderAddress, tokenAddress }); + return approveErc1155({ provider, signer, spenderAddress, tokenAddress }); } if (standard === 'ERC20') { return approveErc20({ - network, tokenAddress, + provider, signer, spenderAddress, amount, diff --git a/packages/trade/src/trade/buy/buy.ts b/packages/trade/src/trade/buy/buy.ts index 0368adff..d5002939 100644 --- a/packages/trade/src/trade/buy/buy.ts +++ b/packages/trade/src/trade/buy/buy.ts @@ -1,17 +1,12 @@ -import type { BigNumber } from '@ethersproject/bignumber'; -import type { ContractTransaction } from '@ethersproject/contracts'; -import NFTXMarketplaceZap from '@nftx/constants/abis/NFTXMarketplaceZap.json'; -import NftxMarketplace0xZap from '@nftx/constants/abis/NFTXMarketplace0xZap.json'; +import { NFTXMarketplace0xZap, NFTXMarketplaceZap } from '@nftx/abi'; import { NFTX_MARKETPLACE_0X_ZAP, NFTX_MARKETPLACE_ZAP, + WeiPerEther, WETH_TOKEN, } from '@nftx/constants'; import { getExactTokenIds, getTotalTokenIds } from '../utils'; -import estimateGasAndFees from '../estimateGasAndFees'; import { omitNil } from '../../utils'; -import increaseGasLimit from '../increaseGasLimit'; -import type { Signer } from 'ethers'; import config from '@nftx/config'; import { doesNetworkSupport0x, @@ -19,10 +14,9 @@ import { fetchVaultBuyPrice, } from '../../price'; import calculateBuyFee from '../../price/calculateBuyFee'; -import { WeiPerEther } from '@ethersproject/constants'; -import { parseEther } from '@ethersproject/units'; -import type { Vault } from '@nftx/types'; +import type { Address, Provider, Signer, TokenId, Vault } from '@nftx/types'; import { getChainConstant, getContract } from '@nftx/utils'; +import { parseEther } from 'viem'; type BuyVault = Pick & { fees: Pick; @@ -34,6 +28,7 @@ type BuyVault = Pick & { const buyErc721 = async ({ network, + provider, signer, userAddress, vault, @@ -43,10 +38,11 @@ const buyErc721 = async ({ tokenIds, }: { network: number; + provider: Provider; signer: Signer; - userAddress: string; + userAddress: Address; vault: BuyVault; - tokenIds: string[] | [string, number][]; + tokenIds: TokenId[] | [TokenId, number][]; randomBuys: number; slippage: number; }) => { @@ -55,50 +51,47 @@ const buyErc721 = async ({ const amount = targetBuys + randomBuys; const address = getChainConstant(NFTX_MARKETPLACE_ZAP, network); const contract = getContract({ - network, + provider, signer, abi: NFTXMarketplaceZap, address, }); const path = [getChainConstant(WETH_TOKEN, network), vaultAddress]; - const args = [vaultId, amount, ids, path, userAddress]; - let maxPrice: BigNumber = null; + const args = [ + BigInt(vaultId), + BigInt(amount), + ids.map(BigInt), + path, + userAddress, + ] as const; + let maxPrice: bigint | undefined; if (slippage) { const { price } = await fetchVaultBuyPrice({ vault, - provider: signer.provider, + provider, network, randomBuys, targetBuys, }); - maxPrice = price - .mul(WeiPerEther.add(parseEther(`${slippage}`))) - .div(WeiPerEther); + maxPrice = + (price * (WeiPerEther + parseEther(`${slippage}`))) / WeiPerEther; } - const { gasEstimate, maxFeePerGas, maxPriorityFeePerGas } = - await estimateGasAndFees({ - contract, - method: 'buyAndRedeem', - args: args, - overrides: omitNil({ value: maxPrice?.toString() }), - }); - - const gasLimit = increaseGasLimit({ estimate: gasEstimate, amount: 7 }); const overrides = omitNil({ - value: maxPrice?.toString(), - gasLimit, - maxFeePerGas, - maxPriorityFeePerGas, + value: maxPrice, }); console.debug(address, 'buyAndRedeem', ...args, overrides); - return contract.buyAndRedeem(...args, overrides); + return contract.write.buyAndRedeem({ + args, + ...overrides, + }); }; const buy0xErc721 = async ({ network, + provider, signer, tokenIds, userAddress, @@ -107,19 +100,20 @@ const buy0xErc721 = async ({ slippage, }: { network: number; + provider: Provider; signer: Signer; - userAddress: string; + userAddress: Address; vault: BuyVault; - tokenIds: string[] | [string, number][]; + tokenIds: TokenId[] | [TokenId, number][]; randomBuys: number; slippage: number; }) => { const address = getChainConstant(NFTX_MARKETPLACE_0X_ZAP, network); const { vaultId, id: vaultAddress } = vault; const contract = getContract({ - abi: NftxMarketplace0xZap, + abi: NFTXMarketplace0xZap, address, - network, + provider, signer, }); @@ -127,7 +121,7 @@ const buy0xErc721 = async ({ const targetBuys = getTotalTokenIds(tokenIds); const fee = calculateBuyFee({ vault, randomBuys, targetBuys }); const amount = targetBuys + randomBuys; - const buyAmount = fee.add(WeiPerEther.mul(amount)); + const buyAmount = fee + WeiPerEther * BigInt(amount); const { data, guaranteedPrice } = await fetch0xQuote({ type: 'quote', @@ -138,48 +132,26 @@ const buy0xErc721 = async ({ slippagePercentage: slippage, }); - const args = [vaultId, amount, specificIds, data, userAddress]; - const slippageMultiplier = parseEther(`${slippage || 0}`).add(WeiPerEther); - const value = parseEther(guaranteedPrice) - .mul(buyAmount) - .div(WeiPerEther) - .mul(slippageMultiplier) - .div(WeiPerEther); - - const { gasEstimate, maxFeePerGas, maxPriorityFeePerGas } = - await estimateGasAndFees({ - contract, - method: 'buyAndRedeem', - args: args, - overrides: omitNil({ value }), - }); - - const gasLimit = increaseGasLimit({ estimate: gasEstimate, amount: 7 }); + const args = [ + BigInt(vaultId), + BigInt(amount), + specificIds.map(BigInt), + data, + userAddress, + ] as const; + const slippageMultiplier = parseEther(`${slippage || 0}`) + WeiPerEther; + const value = + (((parseEther(guaranteedPrice) * buyAmount) / WeiPerEther) * + slippageMultiplier) / + WeiPerEther; const overrides = omitNil({ value, - gasLimit, - maxFeePerGas, - maxPriorityFeePerGas, }); console.debug(address, 'buyAndRedeem', ...args, overrides); - // try { - return contract.buyAndRedeem(...args, overrides); - // } catch (e) { - // if (e?.code === 4001) { - // throw e; - // } - // if (Number(estimatedPriceImpact) > 20) { - // // This most likely means there's not enough liquidity and we need a higher slippage rate - // console.error(e); - // throw new Error( - // 'Price impact was too high, you may need to increase your slippage tolerance to complete the transaction' - // ); - // } - // throw e; - // } + return contract.write.buyAndRedeem({ args, ...overrides }); }; const buyErc1155 = buyErc721; @@ -206,23 +178,25 @@ const buy = async (args: { network?: number; /** The percentage amount of slippage you're willing to accept */ slippage?: number; + provider: Provider; signer: Signer; /** The address of the buyer */ - userAddress: string; + userAddress: Address; /** The vault you're buying from */ vault: BuyVault; /** Ids of the individual NFTs you want to buy. * For 721s you just pass a flat array of ids ['1','2','3']. * For 1155s if you're dealing with multiples, you pass a tuple of [tokenId, quantity] [['1', 2], ['2', 1], ['3', 2]] */ - tokenIds?: string[] | [string, number][]; + tokenIds?: TokenId[] | [TokenId, number][]; /** If you want to do a random buy, enter the number of randoms you want (you can buy targets and randoms at the same time) */ randomBuys?: number; standard?: 'ERC721' | 'ERC1155'; quote?: 'ETH'; -}): Promise => { +}) => { const { network = config.network, + provider, signer, userAddress, vault, @@ -244,6 +218,7 @@ const buy = async (args: { return fn({ network, randomBuys, + provider, signer, tokenIds, userAddress, diff --git a/packages/trade/src/trade/estimateGasAndFees.ts b/packages/trade/src/trade/estimateGasAndFees.ts deleted file mode 100644 index 7450a140..00000000 --- a/packages/trade/src/trade/estimateGasAndFees.ts +++ /dev/null @@ -1,60 +0,0 @@ -import type { BigNumber } from '@ethersproject/bignumber'; -import type { Contract } from '@ethersproject/contracts'; -import type { Provider } from '@ethersproject/providers'; - -const get1559GasFees = async ({ provider }: { provider: Provider }) => { - try { - const feeData = await provider.getFeeData(); - const { maxFeePerGas, maxPriorityFeePerGas } = feeData; - return { maxFeePerGas, maxPriorityFeePerGas }; - } catch { - return { - maxFeePerGas: null, - maxPriorityFeePerGas: null, - }; - } -}; - -/** - * Attempts to estimate the amount of gas you will pay for a contract interaction. - * If possible, it will use the EIP-1559 standard to estimate, otherwise it will attempt a fallback estimation. - * If the estimation entirely fails (for example, the contract call is invalid) it will return null values, so ensure you null-check the responses. - */ -const estimateGasAndFees = async (_args: { - contract: Contract; - method: string; - args: any[]; - overrides?: Record; -}) => { - const { contract, method, args, overrides } = _args; - - let maxFeePerGas: BigNumber = null; - let maxPriorityFeePerGas: BigNumber = null; - let gasEstimate: BigNumber = null; - - try { - const fees = await get1559GasFees({ - provider: contract.provider as Provider, - }); - maxFeePerGas = fees.maxFeePerGas; - maxPriorityFeePerGas = fees.maxPriorityFeePerGas; - gasEstimate = await contract.estimateGas[method](...args, { - ...overrides, - maxFeePerGas, - maxPriorityFeePerGas, - }); - } catch { - // EIP-1559 not supported/failed - try { - maxFeePerGas = null; - maxPriorityFeePerGas = null; - gasEstimate = await contract.estimateGas[method](...args, overrides); - } catch { - // Failed to estimate gas - } - } - - return { gasEstimate, maxFeePerGas, maxPriorityFeePerGas }; -}; - -export default estimateGasAndFees; diff --git a/packages/trade/src/trade/increaseGasLimit.ts b/packages/trade/src/trade/increaseGasLimit.ts index 743cb868..3c63080d 100644 --- a/packages/trade/src/trade/increaseGasLimit.ts +++ b/packages/trade/src/trade/increaseGasLimit.ts @@ -1,5 +1,3 @@ -import type { BigNumber } from '@ethersproject/bignumber'; - /** * Takes a contract gas estimate and increases it by a given percentage */ @@ -8,17 +6,17 @@ export const increaseGasLimit = ({ amount = 1, }: { /** A gas estimate */ - estimate: BigNumber; + estimate: bigint; /** The amount to increase the estimate by. This is a whole number percentage (i.e. 1 = 1%) */ amount?: number; }) => { try { if (estimate == null) { - return null; + return estimate; } - return estimate.mul(Number((amount * 10 + 1000).toFixed(1))).div(1000); + return (estimate * BigInt(Number((amount * 10 + 1000).toFixed(1)))) / 1000n; } catch { - return null; + return undefined; } }; diff --git a/packages/trade/src/trade/index.ts b/packages/trade/src/trade/index.ts index a02952ae..50a4c637 100644 --- a/packages/trade/src/trade/index.ts +++ b/packages/trade/src/trade/index.ts @@ -1,6 +1,5 @@ export { default as approve } from './approve'; export * from './buy'; -export { default as estimateGasAndFees } from './estimateGasAndFees'; export { default as increaseGasLimit } from './increaseGasLimit'; export { default as isApproved } from './isApproved'; export { default as mint } from './mint'; diff --git a/packages/trade/src/trade/isApproved.ts b/packages/trade/src/trade/isApproved.ts index 4bcaa6dc..b58245d9 100644 --- a/packages/trade/src/trade/isApproved.ts +++ b/packages/trade/src/trade/isApproved.ts @@ -1,48 +1,36 @@ -import type { BigNumber } from '@ethersproject/bignumber'; -import type { Provider } from '@ethersproject/providers'; -import erc721Abi from '@nftx/constants/abis/ERC721.json'; -import erc20Abi from '@nftx/constants/abis/ERC20.json'; -import punkAbi from '@nftx/constants/abis/CryptoPunks.json'; -import { MaxUint256 } from '@ethersproject/constants'; -import config from '@nftx/config'; +import { ERC20, ERC721, CryptoPunks } from '@nftx/abi'; +import { MaxUint256, Zero } from '@nftx/constants'; +import type { Address, Provider, TokenId } from '@nftx/types'; import { addressEqual, getContract, isCryptoPunk } from '@nftx/utils'; const isPunkApproved = async ({ - network, provider, tokenAddress, tokenId, userAddress, spenderAddress, }: { - network: number; provider: Provider; - tokenAddress: string; - tokenId: string; - userAddress: string; - spenderAddress: string; + tokenAddress: Address; + tokenId: TokenId; + userAddress: Address; + spenderAddress: Address; }) => { try { const contract = getContract({ - network, provider, address: tokenAddress, - abi: punkAbi, + abi: CryptoPunks, }); - const punk: { - isForSale: boolean; - punkIndex: BigNumber; - seller: string; - minValue: BigNumber; - onlySellTo: string; - } = await contract.punksOfferedForSale(tokenId); + const [isForSale, , seller, minValue, onlySellTo] = + await contract.read.punksOfferedForSale({ args: [BigInt(tokenId)] }); return [ - punk.isForSale, - addressEqual(punk.seller, userAddress), - punk.minValue.isZero(), - addressEqual(punk.onlySellTo, spenderAddress), + isForSale, + addressEqual(seller, userAddress), + minValue === Zero, + addressEqual(onlySellTo, spenderAddress), ].every(Boolean); } catch { return false; @@ -51,23 +39,20 @@ const isPunkApproved = async ({ const arePunksApproved = async ({ tokenIds, - network, provider, spenderAddress, tokenAddress, userAddress, }: { - tokenIds: string[]; - network: number; + tokenIds: TokenId[]; provider: Provider; - spenderAddress: string; - tokenAddress: string; - userAddress: string; + spenderAddress: Address; + tokenAddress: Address; + userAddress: Address; }) => { const results = await Promise.all( tokenIds.map(async (tokenId) => { return isPunkApproved({ - network, provider, spenderAddress, tokenAddress, @@ -81,60 +66,52 @@ const arePunksApproved = async ({ }; const isErc721Approved = async ({ - network, provider, tokenAddress, userAddress, spenderAddress, }: { - network: number; provider: Provider; - tokenAddress: string; - userAddress: string; - spenderAddress: string; + tokenAddress: Address; + userAddress: Address; + spenderAddress: Address; }) => { const contract = getContract({ - network, - abi: erc721Abi, + abi: ERC721, provider, address: tokenAddress, }); - const approved: boolean = await contract.isApprovedForAll( - userAddress, - spenderAddress - ); + const approved: boolean = await contract.read.isApprovedForAll({ + args: [userAddress, spenderAddress], + }); return approved; }; const isErc1155Approved = isErc721Approved; const isErc20Approved = async ({ - network, provider, tokenAddress, userAddress, spenderAddress, amount, }: { - network: number; provider: Provider; - tokenAddress: string; - userAddress: string; - spenderAddress: string; - amount: BigNumber; + tokenAddress: Address; + userAddress: Address; + spenderAddress: Address; + amount?: bigint; }) => { try { const contract = getContract({ - network, provider, - abi: erc20Abi, + abi: ERC20, address: tokenAddress, }); - const allowance: BigNumber = await contract.allowance( - userAddress, - spenderAddress - ); - return allowance.gt(0) && allowance.gte(amount ?? MaxUint256); + const allowance = await contract.read.allowance({ + args: [userAddress, spenderAddress], + }); + return allowance > Zero && allowance >= (amount ?? MaxUint256); } catch { return false; } @@ -145,45 +122,50 @@ const isApproved = async (args: { network?: number; provider: Provider; /** The token you want to spend */ - tokenAddress: string; + tokenAddress: Address; /** The contract that will be spending the token */ - spenderAddress: string; + spenderAddress: Address; /** The user who is approving the spender */ - userAddress: string; + userAddress: Address; /** Optionally provide the tokenId. Certain contracts such as CryptoPunks need to approve individual tokens */ - tokenId?: string; + tokenId?: TokenId; /** Optionally provide a list of tokenIds. Certain contracts such as CryptoPunks need to approve individual tokens */ - tokenIds?: string[]; + tokenIds?: TokenId[]; /** For ERC20 contracts, you can supply a specific amount to be approved. Defaults to the maximum amount */ - amount?: BigNumber; + amount?: bigint; /** The token standard for tokenAddress */ standard?: 'ERC721' | 'ERC1155' | 'ERC20'; }): Promise => { const { - network = config.network, provider, spenderAddress, tokenAddress, userAddress, amount, tokenId, - tokenIds, - standard = tokenId || tokenIds ? 'ERC721' : 'ERC20', } = args; + let { tokenIds } = args; + const { standard = tokenId || tokenIds ? 'ERC721' : 'ERC20' } = args; if (standard === 'ERC721') { if (isCryptoPunk(tokenAddress)) { + if (tokenIds == null || tokenIds.length === 0) { + if (tokenId) { + tokenIds = [tokenId]; + } else { + return true; + } + } + return arePunksApproved({ - network, provider, spenderAddress, tokenAddress, userAddress, - tokenIds: tokenIds ?? [tokenId], + tokenIds, }); } return isErc721Approved({ - network, provider, spenderAddress, tokenAddress, @@ -192,7 +174,6 @@ const isApproved = async (args: { } if (standard === 'ERC1155') { return isErc1155Approved({ - network, provider, tokenAddress, spenderAddress, @@ -202,7 +183,6 @@ const isApproved = async (args: { if (standard === 'ERC20') { return isErc20Approved({ amount, - network, provider, spenderAddress, tokenAddress, diff --git a/packages/trade/src/trade/mint.ts b/packages/trade/src/trade/mint.ts index 1cad43fd..8c07c004 100644 --- a/packages/trade/src/trade/mint.ts +++ b/packages/trade/src/trade/mint.ts @@ -1,38 +1,36 @@ -import type { ContractTransaction } from '@ethersproject/contracts'; -import config from '@nftx/config'; -import abi from '@nftx/constants/abis/NFTXVaultUpgradeable.json'; +import { NFTXVaultUpgradeable } from '@nftx/abi'; +import type { Address, Provider, Signer, TokenId } from '@nftx/types'; import { getContract } from '@nftx/utils'; -import type { Signer } from 'ethers'; import { getTokenIdAmounts, getUniqueTokenIds } from './utils'; /** Mints an NFT into the NFTX vault in exchange for a vToken. * For example, minting a punk NFT would return 0.95 PUNK (accounting for vault fees) */ const mint = async (args: { - network?: number; + provider: Provider; signer: Signer; - userAddress: string; - vaultAddress: string; + userAddress: Address; + vaultAddress: Address; vaultId: string; /** Ids of the individual NFTs you want to mint * For 721s you just pass a flat array of ids ['1','2','3'] * For 1155s if you're dealing with multiples, you pass a tuple of [tokenId, quantity] i.e. [['1', 2], ['2', 1], ['3', 2]] */ - tokenIds: string[] | [string, number][]; -}): Promise => { - const { network = config.network, signer, tokenIds, vaultAddress } = args; + tokenIds: TokenId[] | [TokenId, number][]; +}) => { + const { provider, signer, tokenIds, vaultAddress } = args; const ids = getUniqueTokenIds(tokenIds); const amounts = getTokenIdAmounts(tokenIds); const contract = getContract({ - network, + provider, signer, - abi, + abi: NFTXVaultUpgradeable, address: vaultAddress, }); - return contract.mint(ids, amounts); + return contract.write.mint({ args: [ids.map(BigInt), amounts.map(BigInt)] }); }; export default mint; diff --git a/packages/trade/src/trade/redeem.ts b/packages/trade/src/trade/redeem.ts index b4e9c568..cb4563e2 100644 --- a/packages/trade/src/trade/redeem.ts +++ b/packages/trade/src/trade/redeem.ts @@ -1,40 +1,31 @@ -import type { BigNumber } from '@ethersproject/bignumber'; -import type { ContractTransaction } from '@ethersproject/contracts'; -import config from '@nftx/config'; -import abi from '@nftx/constants/abis/NFTXVaultUpgradeable.json'; +import { NFTXVaultUpgradeable } from '@nftx/abi'; import { getContract } from '@nftx/utils'; -import type { Signer } from 'ethers'; import { getExactTokenIds } from './utils'; +import type { Address, Provider, Signer, TokenId } from '@nftx/types'; /** Redeems an item from the vault * Exchanges, for example, 1.05 PUNK for a punk nft (accounting for vault fees) */ const redeem = async (args: { - network?: number; + provider: Provider; signer: Signer; - userAddress: string; + userAddress: Address; vaultId: string; - vaultAddress: string; + vaultAddress: Address; /** Ids of the individual NFTs you want to redeem * For 721s you just pass a flat array of ids ['1','2','3'] * For 1155s if you're dealing with multiples, you pass a tuple of [tokenId, quantity] [['1', 2], ['2', 1], ['3', 2]] */ - targetIds: Array | Array<[string, number]>; + targetIds: Array | Array<[TokenId, number]>; /** If you want to do a random redeem, enter the number of randoms you want to carry out */ randomRedeems?: number; -}): Promise => { - const { - network = config.network, - signer, - targetIds, - vaultAddress, - randomRedeems, - } = args; +}) => { + const { provider, signer, targetIds, vaultAddress, randomRedeems } = args; const contract = getContract({ - network, + provider, signer, - abi, + abi: NFTXVaultUpgradeable, address: vaultAddress, }); @@ -44,20 +35,9 @@ const redeem = async (args: { // it will fill out the rest with randoms const amount = specificIds.length + (randomRedeems ?? 0); - // Add gas buffer to redeems to account for calculation weirdness - let gas: BigNumber; - try { - gas = await contract.estimateGas.redeem(amount, specificIds); - gas = gas.add(300000); - } catch (e) { - console.error(e); - } - - return contract.redeem( - amount, - specificIds, - amount > 1 && gas ? { gasLimit: gas } : null - ); + return contract.write.redeem({ + args: [BigInt(amount), specificIds.map(BigInt)], + }); }; export default redeem; diff --git a/packages/trade/src/trade/sell/approveSell.ts b/packages/trade/src/trade/sell/approveSell.ts index 077c276d..a475f393 100644 --- a/packages/trade/src/trade/sell/approveSell.ts +++ b/packages/trade/src/trade/sell/approveSell.ts @@ -1,7 +1,7 @@ import config from '@nftx/config'; import { NFTX_MARKETPLACE_0X_ZAP, NFTX_MARKETPLACE_ZAP } from '@nftx/constants'; +import type { Address, Provider, Signer, TokenId } from '@nftx/types'; import { getChainConstant } from '@nftx/utils'; -import type { Signer } from 'ethers'; import { doesNetworkSupport0x } from '../../price'; import approve from '../approve'; @@ -10,10 +10,11 @@ import approve from '../approve'; */ const approveSell = (_args: { network?: number; + provider: Provider; signer: Signer; - tokenId?: string; - assetAddress: string; - tokenIds?: string[] | [string, number][]; + tokenId?: TokenId; + assetAddress: Address; + tokenIds?: TokenId[] | [TokenId, number][]; standard?: 'ERC721' | 'ERC1155'; }) => { const { network = config.network, assetAddress, ...args } = _args; @@ -23,7 +24,6 @@ const approveSell = (_args: { const spenderAddress = getChainConstant(zap, network); return approve({ - network, tokenAddress: assetAddress, spenderAddress, ...args, diff --git a/packages/trade/src/trade/sell/isSellApproved.ts b/packages/trade/src/trade/sell/isSellApproved.ts index 6f07a839..e218e83b 100644 --- a/packages/trade/src/trade/sell/isSellApproved.ts +++ b/packages/trade/src/trade/sell/isSellApproved.ts @@ -1,5 +1,6 @@ import config from '@nftx/config'; import { NFTX_MARKETPLACE_0X_ZAP, NFTX_MARKETPLACE_ZAP } from '@nftx/constants'; +import type { Address } from '@nftx/types'; import { getChainConstant } from '@nftx/utils'; import { doesNetworkSupport0x } from '../../price'; import isApproved from '../isApproved'; @@ -7,7 +8,7 @@ import isApproved from '../isApproved'; type Args = Omit< Parameters[0], 'spenderAddress' | 'tokenAddress' | 'amount' -> & { assetAddress: string }; +> & { assetAddress: Address }; /** Returns whether you are approved to sell NFTs for a given collection */ const isSellApproved = (_args: Args) => { diff --git a/packages/trade/src/trade/sell/sell.ts b/packages/trade/src/trade/sell/sell.ts index b27a2f12..c5f41ad4 100644 --- a/packages/trade/src/trade/sell/sell.ts +++ b/packages/trade/src/trade/sell/sell.ts @@ -1,15 +1,12 @@ -import type { ContractTransaction } from '@ethersproject/contracts'; import config from '@nftx/config'; import { NFTX_MARKETPLACE_0X_ZAP, NFTX_MARKETPLACE_ZAP, + WeiPerEther, WETH_TOKEN, } from '@nftx/constants'; -import nftxMarketplaceZap from '@nftx/constants/abis/NFTXMarketplaceZap.json'; -import nftxMarketplace0xZap from '@nftx/constants/abis/NFTXMarketplace0xZap.json'; -import type { Signer } from 'ethers'; +import { NFTXMarketplace0xZap, NFTXMarketplaceZap } from '@nftx/abi'; import { omitNil } from '../../utils'; -import estimateGasAndFees from '../estimateGasAndFees'; import increaseGasLimit from '../increaseGasLimit'; import { getTokenIdAmounts, @@ -21,11 +18,10 @@ import { fetch0xQuote, fetchVaultSellPrice, } from '../../price'; -import { parseEther } from '@ethersproject/units'; import calculateSellFee from '../../price/calculateSellFee'; -import { WeiPerEther } from '@ethersproject/constants'; -import type { Vault } from '@nftx/types'; +import type { Address, Provider, Signer, TokenId, Vault } from '@nftx/types'; import { getChainConstant, getContract } from '@nftx/utils'; +import { parseEther } from 'viem'; type SellVault = Pick & { fees: Pick; @@ -36,21 +32,23 @@ const sell0xErc721 = async ({ vault, tokenIds, network, + provider, signer, slippage, userAddress, }: { vault: SellVault; - tokenIds: string[] | [string, number][]; + tokenIds: TokenId[] | [TokenId, number][]; network: number; + provider: Provider; signer: Signer; quote: 'ETH'; slippage: number; - userAddress: string; + userAddress: Address; }) => { const amount = getTotalTokenIds(tokenIds); const fee = calculateSellFee({ vault, amount }); - const sellAmount = parseEther(`${amount}`).sub(fee); + const sellAmount = parseEther(`${amount}`) - fee; const ids = getUniqueTokenIds(tokenIds); const address = getChainConstant(NFTX_MARKETPLACE_0X_ZAP, network); @@ -63,26 +61,19 @@ const sell0xErc721 = async ({ type: 'quote', }); - const args = [vaultId, ids, data, userAddress]; + const args = [BigInt(vaultId), ids.map(BigInt), data, userAddress] as const; const contract = getContract({ - network, + provider, signer, address, - abi: nftxMarketplace0xZap, + abi: NFTXMarketplace0xZap, }); - const { gasEstimate, maxFeePerGas, maxPriorityFeePerGas } = - await estimateGasAndFees({ - contract, - method: 'mintAndSell721', - args, - }); - const gasLimit = increaseGasLimit({ estimate: gasEstimate, amount: 7 }); - - const overrides = omitNil({ gasLimit, maxFeePerGas, maxPriorityFeePerGas }); - console.debug(address, 'mintAndSell721', ...args, overrides); + console.debug(address, 'mintAndSell721', ...args); - return contract.mintAndSell721(...args, overrides); + return contract.write.mintAndSell721({ + args, + }); }; const sellErc721 = async ({ @@ -92,50 +83,48 @@ const sellErc721 = async ({ path, userAddress, network, + provider, signer, slippage, }: { vault: SellVault; - path: [string, string]; - userAddress: string; - tokenIds: string[] | [string, number][]; + path: readonly [Address, Address]; + userAddress: Address; + tokenIds: TokenId[] | [TokenId, number][]; network: number; + provider: Provider; signer: Signer; slippage: number; }) => { const address = getChainConstant(NFTX_MARKETPLACE_ZAP, network); const contract = getContract({ - network, + provider, signer, - abi: nftxMarketplaceZap, + abi: NFTXMarketplaceZap, address, }); const ids = getUniqueTokenIds(tokenIds); let { price: minPrice } = await fetchVaultSellPrice({ vault, - provider: signer.provider, + provider, network, amount: ids.length, }); if (slippage) { - minPrice = minPrice - .mul(WeiPerEther.sub(parseEther(`${slippage}`))) - .div(WeiPerEther); + minPrice = + (minPrice * (WeiPerEther - parseEther(`${slippage}`))) / WeiPerEther; } - const args = [vaultId, ids, minPrice, path, userAddress]; - - const { gasEstimate, maxFeePerGas, maxPriorityFeePerGas } = - await estimateGasAndFees({ - contract, - method: 'mintAndSell721', - args, - }); - const gasLimit = increaseGasLimit({ estimate: gasEstimate, amount: 7 }); - const overrides = omitNil({ gasLimit, maxFeePerGas, maxPriorityFeePerGas }); + const args = [ + BigInt(vaultId), + ids.map(BigInt), + minPrice, + path, + userAddress, + ] as const; - console.debug(address, 'mintAndSell721', ...args, overrides); + console.debug(address, 'mintAndSell721', ...args); - return contract.mintAndSell721(...args, overrides); + return contract.write.mintAndSell721({ args }); }; const sellErc1155 = async ({ @@ -146,50 +135,49 @@ const sellErc1155 = async ({ path, userAddress, network, + provider, signer, }: { - tokenIds: string[] | [string, number][]; + tokenIds: TokenId[] | [TokenId, number][]; vault: SellVault; slippage: number; - path: [string, string]; - userAddress: string; + path: readonly [Address, Address]; + userAddress: Address; network: number; + provider: Provider; signer: Signer; }) => { const address = getChainConstant(NFTX_MARKETPLACE_ZAP, network); const contract = getContract({ - network, + provider, signer, - abi: nftxMarketplaceZap, + abi: NFTXMarketplaceZap, address, }); const ids = getUniqueTokenIds(tokenIds); const amounts = getTokenIdAmounts(tokenIds); let { price: minPrice } = await fetchVaultSellPrice({ vault, - provider: signer.provider, + provider, network, amount: ids.length, }); if (slippage) { - minPrice = minPrice - .mul(WeiPerEther.sub(parseEther(`${slippage}`))) - .div(WeiPerEther); + minPrice = + (minPrice * (WeiPerEther - parseEther(`${slippage}`))) / WeiPerEther; } - const args = [vaultId, ids, amounts, minPrice, path, userAddress]; - - const { gasEstimate, maxFeePerGas, maxPriorityFeePerGas } = - await estimateGasAndFees({ contract, method: 'mintAndSell1155', args }); - const gasLimit = increaseGasLimit({ estimate: gasEstimate, amount: 7 }); - const overrides = omitNil({ - gasLimit, - maxFeePerGas, - maxPriorityFeePerGas, - }); + const args = [ + BigInt(vaultId), + ids.map(BigInt), + amounts.map(BigInt), + minPrice, + path, + userAddress, + ] as const; - console.debug(address, 'mintAndSell1155', ...args, overrides); + console.debug(address, 'mintAndSell1155', ...args); - return contract.mintAndSell1155(...args, overrides); + return contract.write.mintAndSell1155({ args }); }; const sell0xErc1155 = async ({ @@ -197,23 +185,25 @@ const sell0xErc1155 = async ({ vault: { vaultId, id: vaultAddress }, tokenIds, network, + provider, signer, slippage, userAddress, }: { vault: SellVault; - tokenIds: string[] | [string, number][]; + tokenIds: TokenId[] | [TokenId, number][]; network: number; + provider: Provider; signer: Signer; quote: 'ETH'; slippage: number; - userAddress: string; + userAddress: Address; }) => { const ids = getUniqueTokenIds(tokenIds); const amounts = getTokenIdAmounts(tokenIds); const amount = getTotalTokenIds(tokenIds); const fee = calculateSellFee({ vault, amount }); - const sellAmount = parseEther(`${amount}`).sub(fee); + const sellAmount = parseEther(`${amount}`) - fee; const address = getChainConstant(NFTX_MARKETPLACE_0X_ZAP, network); const { data } = await fetch0xQuote({ @@ -226,25 +216,22 @@ const sell0xErc1155 = async ({ }); const contract = getContract({ - network, signer, address, - abi: nftxMarketplace0xZap, + provider, + abi: NFTXMarketplace0xZap, }); - const args = [vaultId, ids, amounts, data, userAddress]; - - const { gasEstimate, maxFeePerGas, maxPriorityFeePerGas } = - await estimateGasAndFees({ contract, method: 'mintAndSell1155', args }); - const gasLimit = increaseGasLimit({ estimate: gasEstimate, amount: 7 }); - const overrides = omitNil({ - gasLimit, - maxFeePerGas, - maxPriorityFeePerGas, - }); + const args = [ + BigInt(vaultId), + ids.map(BigInt), + amounts.map(BigInt), + data, + userAddress, + ] as const; - console.debug(address, 'mintAndSell1155', args, overrides); - return contract.mintAndSell1155(...args, overrides); + console.debug(address, 'mintAndSell1155', args); + return contract.write.mintAndSell1155({ args }); }; const matrix = { @@ -267,32 +254,34 @@ const sell = async (args: { slippage?: number; /** The vault you're selling into */ vault: SellVault; + provider: Provider; signer: Signer; /** The address of the seller */ - userAddress: string; + userAddress: Address; /** Ids of the individual NFTs you want to sell. * For 721s you just pass a flat array of ids ['1', '2']. * For 1155s if you're dealing with multiples, you pass a tuple of [tokenId, quantity] [['1', 2], ['2', 1]] */ - tokenIds: string[] | [string, number][]; + tokenIds: TokenId[] | [TokenId, number][]; standard?: 'ERC721' | 'ERC1155'; quote?: 'ETH'; -}): Promise => { +}) => { const { network = config.network, + provider, signer, tokenIds, userAddress, vault, slippage = 0, quote = 'ETH', - standard = Array.isArray(tokenIds?.[0]) ? 'ERC1155' : 'ERC721', + standard: givenStandard, } = args; - const path = [vault.id, getChainConstant(WETH_TOKEN, network)] as [ - string, - string - ]; + const standard = + givenStandard || (tokenIds?.some((x) => x?.[1] > 1) ? 'ERC1155' : 'ERC721'); + + const path = [vault.id, getChainConstant(WETH_TOKEN, network)] as const; const supports0x = doesNetworkSupport0x(network); @@ -308,6 +297,7 @@ const sell = async (args: { network, path, quote, + provider, signer, tokenIds, userAddress, diff --git a/packages/trade/src/trade/swap/approveSwap.ts b/packages/trade/src/trade/swap/approveSwap.ts index 33166d34..0700e689 100644 --- a/packages/trade/src/trade/swap/approveSwap.ts +++ b/packages/trade/src/trade/swap/approveSwap.ts @@ -1,8 +1,11 @@ import config from '@nftx/config'; -import { NFTX_MARKETPLACE_0X_ZAP, NFTX_MARKETPLACE_ZAP } from '@nftx/constants'; -import type { Vault } from '@nftx/types'; +import { + NFTX_MARKETPLACE_0X_ZAP, + NFTX_MARKETPLACE_ZAP, + Zero, +} from '@nftx/constants'; +import type { Address, Provider, Signer, TokenId, Vault } from '@nftx/types'; import { getChainConstant } from '@nftx/utils'; -import type { Signer } from 'ethers'; import { doesNetworkSupport0x } from '../../price'; import approve from '../approve'; import { getTotalTokenIds } from '../utils'; @@ -20,14 +23,15 @@ const approveSwap = ({ ...args }: { network?: number; + provider: Provider; signer: Signer; - tokenId?: string; - assetAddress: string; - mintTokenIds: string[] | [string, number][]; - redeemTokenIds: string[] | [string, number][]; + tokenId?: TokenId; + assetAddress: Address; + mintTokenIds: TokenId[] | [TokenId, number][]; + redeemTokenIds: TokenId[] | [TokenId, number][]; quote: 'ETH' | 'VTOKEN'; vault: { - id: string; + id: Vault['id']; fees: { targetSwapFee: Vault['fees']['targetSwapFee']; randomSwapFee: Vault['fees']['randomSwapFee']; @@ -39,8 +43,8 @@ const approveSwap = ({ const targetCount = getTotalTokenIds(redeemTokenIds); const randomCount = totalCount - targetCount; const hasFee = - (targetCount > 0 && vault.fees.targetSwapFee.gt(0)) || - (randomCount > 0 && vault.fees.randomSwapFee.gt(0)); + (targetCount > 0 && vault.fees.targetSwapFee > Zero) || + (randomCount > 0 && vault.fees.randomSwapFee > Zero); const supports0x = doesNetworkSupport0x(network); // The contract doing the swap can vary. @@ -60,7 +64,6 @@ const approveSwap = ({ return approve({ spenderAddress, tokenAddress: assetAddress, - network, tokenIds: mintTokenIds, ...args, }); diff --git a/packages/trade/src/trade/swap/isSwapApproved.ts b/packages/trade/src/trade/swap/isSwapApproved.ts index 2e59f46d..95a9f1dc 100644 --- a/packages/trade/src/trade/swap/isSwapApproved.ts +++ b/packages/trade/src/trade/swap/isSwapApproved.ts @@ -1,6 +1,10 @@ import config from '@nftx/config'; -import { NFTX_MARKETPLACE_0X_ZAP, NFTX_MARKETPLACE_ZAP } from '@nftx/constants'; -import type { Vault } from '@nftx/types'; +import { + NFTX_MARKETPLACE_0X_ZAP, + NFTX_MARKETPLACE_ZAP, + Zero, +} from '@nftx/constants'; +import type { Address, TokenId, Vault } from '@nftx/types'; import { getChainConstant } from '@nftx/utils'; import { doesNetworkSupport0x } from '../../price'; import isApproved from '../isApproved'; @@ -10,12 +14,12 @@ type Args = Omit< Parameters[0], 'spenderAddress' | 'tokenAddress' | 'amount' | 'tokenId' | 'tokenIds' > & { - assetAddress: string; - mintTokenIds: string[] | [string, number][]; - redeemTokenIds: string[] | [string, number][]; + assetAddress: Address; + mintTokenIds: TokenId[] | [TokenId, number][]; + redeemTokenIds: TokenId[] | [TokenId, number][]; quote: 'ETH' | 'VTOKEN'; vault: { - id: string; + id: Vault['id']; fees: { targetSwapFee: Vault['fees']['targetSwapFee']; randomSwapFee: Vault['fees']['randomSwapFee']; @@ -41,8 +45,8 @@ const isSwapApproved = (_args: Args) => { const targetCount = getTotalTokenIds(redeemTokenIds); const randomCount = totalCount - targetCount; const hasFee = - (targetCount > 0 && vault.fees.targetSwapFee.gt(0)) || - (randomCount > 0 && vault.fees.randomSwapFee.gt(0)); + (targetCount > 0 && vault.fees.targetSwapFee > Zero) || + (randomCount > 0 && vault.fees.randomSwapFee > Zero); const supports0x = doesNetworkSupport0x(network); // The contract doing the swap can vary. diff --git a/packages/trade/src/trade/swap/swap.ts b/packages/trade/src/trade/swap/swap.ts index 5310042f..acf0b3be 100644 --- a/packages/trade/src/trade/swap/swap.ts +++ b/packages/trade/src/trade/swap/swap.ts @@ -1,32 +1,32 @@ import { NFTX_MARKETPLACE_0X_ZAP, NFTX_MARKETPLACE_ZAP, + WeiPerEther, WETH_TOKEN, + Zero, } from '@nftx/constants'; -import type { Signer } from 'ethers'; import { getExactTokenIds, getTokenIdAmounts, getTotalTokenIds, getUniqueTokenIds, } from '../utils'; -import nftxMarketplaceZap from '@nftx/constants/abis/NFTXMarketplaceZap.json'; -import nftxMarketplace0xZap from '@nftx/constants/abis/NFTXMarketplace0xZap.json'; -import vaultAbi from '@nftx/constants/abis/NFTXVaultUpgradeable.json'; -import estimateGasAndFees from '../estimateGasAndFees'; +import { + NFTXMarketplace0xZap, + NFTXMarketplaceZap, + NFTXVaultUpgradeable, +} from '@nftx/abi'; import { omitNil } from '../../utils'; -import increaseGasLimit from '../increaseGasLimit'; import config from '@nftx/config'; import { doesNetworkSupport0x, fetch0xQuote, fetchVaultSwapPrice, } from '../../price'; -import { WeiPerEther } from '@ethersproject/constants'; -import { parseEther } from '@ethersproject/units'; import calculateSwapFee from '../../price/calculateSwapFee'; -import type { Vault } from '@nftx/types'; +import type { Address, Provider, Signer, TokenId, Vault } from '@nftx/types'; import { getChainConstant, getContract } from '@nftx/utils'; +import { parseEther } from 'viem'; type SwapVault = Pick & { fees: Pick; @@ -37,6 +37,7 @@ const swapErc721WithEth = async ({ mintTokenIds, network, redeemTokenIds, + provider, signer, userAddress, vault, @@ -44,10 +45,11 @@ const swapErc721WithEth = async ({ slippage, }: { network: number; + provider: Provider; signer: Signer; - userAddress: string; - mintTokenIds: string[] | [string, number][]; - redeemTokenIds: string[] | [string, number][]; + userAddress: Address; + mintTokenIds: TokenId[] | [TokenId, number][]; + redeemTokenIds: TokenId[] | [TokenId, number][]; slippage: number; vault: SwapVault; }) => { @@ -56,76 +58,71 @@ const swapErc721WithEth = async ({ const address = getChainConstant(NFTX_MARKETPLACE_ZAP, network); const contract = getContract({ - network, + provider, signer, address, - abi: nftxMarketplaceZap, + abi: NFTXMarketplaceZap, }); - const path = [getChainConstant(WETH_TOKEN, network), vaultAddress]; - const args = [vaultId, mintIds, redeemIds, path, userAddress]; + const path = [getChainConstant(WETH_TOKEN, network), vaultAddress] as const; + const args = [ + BigInt(vaultId), + mintIds.map(BigInt), + redeemIds.map(BigInt), + path, + userAddress, + ] as const; const method = 'buyAndSwap721'; let { price: maxPrice } = await fetchVaultSwapPrice({ - provider: signer.provider, + provider, network, vault, randomSwaps: mintIds.length - redeemIds.length, targetSwaps: redeemIds.length, }); if (slippage) { - maxPrice = maxPrice - .mul(WeiPerEther.add(parseEther(`${slippage}`))) - .div(WeiPerEther); + maxPrice = + (maxPrice * (WeiPerEther + parseEther(`${slippage}`))) / WeiPerEther; } - const { gasEstimate, maxFeePerGas, maxPriorityFeePerGas } = - await estimateGasAndFees({ - contract, - args, - method, - overrides: omitNil({ value: maxPrice }), - }); - const gasLimit = increaseGasLimit({ estimate: gasEstimate, amount: 7 }); - const overrides = omitNil({ value: maxPrice, - gasLimit, - maxFeePerGas, - maxPriorityFeePerGas, }); console.debug(address, method, args, overrides); - return contract[method](...args, overrides); + return contract.write.buyAndSwap721({ args, ...overrides }); }; const swapErc721Direct = async ({ mintTokenIds, - network, redeemTokenIds, + provider, signer, vault: { id: vaultAddress }, }: { - network: number; + provider: Provider; signer: Signer; vault: SwapVault; - mintTokenIds: string[] | [string, number][]; - redeemTokenIds: string[] | [string, number][]; + mintTokenIds: TokenId[] | [TokenId, number][]; + redeemTokenIds: TokenId[] | [TokenId, number][]; }) => { const mintIds = getUniqueTokenIds(mintTokenIds); const amounts = getTokenIdAmounts(mintTokenIds); const redeemIds = getExactTokenIds(redeemTokenIds); const contract = getContract({ - network, + provider, signer, address: vaultAddress, - abi: vaultAbi, + abi: NFTXVaultUpgradeable, }); console.debug(vaultAddress, 'swap', mintIds, amounts, redeemIds); - return contract.swap(mintIds, amounts, redeemIds); + return contract.write.swap({ + args: [mintIds.map(BigInt), amounts.map(BigInt), redeemIds.map(BigInt)], + }); }; const swap0xErc721 = async ({ @@ -133,17 +130,19 @@ const swap0xErc721 = async ({ network, redeemTokenIds, userAddress, + provider, signer, vault, vault: { id: vaultAddress, vaultId }, slippage, }: { network: number; + provider: Provider; signer: Signer; vault: SwapVault; - userAddress: string; - mintTokenIds: string[] | [string, number][]; - redeemTokenIds: string[] | [string, number][]; + userAddress: Address; + mintTokenIds: TokenId[] | [TokenId, number][]; + redeemTokenIds: TokenId[] | [TokenId, number][]; quote: 'ETH'; slippage: number; }) => { @@ -154,8 +153,8 @@ const swap0xErc721 = async ({ const buyAmount = calculateSwapFee({ vault, randomSwaps, targetSwaps }); const address = getChainConstant(NFTX_MARKETPLACE_0X_ZAP, network); const contract = getContract({ - network, - abi: nftxMarketplace0xZap, + abi: NFTXMarketplace0xZap, + provider, signer, address, }); @@ -177,33 +176,28 @@ const swap0xErc721 = async ({ slippagePercentage: slippage, }); - const args = [vaultId, mintIds, redeemIds, data, userAddress]; - - const { gasEstimate, maxFeePerGas, maxPriorityFeePerGas } = - await estimateGasAndFees({ - args, - contract, - method: 'buyAndSwap721', - overrides: omitNil({ value }), - }); - const gasLimit = increaseGasLimit({ estimate: gasEstimate, amount: 7 }); + const args = [ + BigInt(vaultId), + mintIds.map(BigInt), + redeemIds.map(BigInt), + data, + userAddress, + ] as const; const overrides = omitNil({ value, - gasLimit, - maxFeePerGas, - maxPriorityFeePerGas, }); console.debug(address, 'buyAndSwap721', args, overrides); - return contract.buyAndSwap721(...args, overrides); + return contract.write.buyAndSwap721({ args, value: BigInt(value) }); }; const swapErc1155WithEth = async ({ mintTokenIds, network, redeemTokenIds, + provider, signer, userAddress, slippage, @@ -211,11 +205,12 @@ const swapErc1155WithEth = async ({ vault: { id: vaultAddress, vaultId }, }: { network: number; + provider: Provider; signer: Signer; vault: SwapVault; - userAddress: string; - mintTokenIds: string[] | [string, number][]; - redeemTokenIds: string[] | [string, number][]; + userAddress: Address; + mintTokenIds: TokenId[] | [TokenId, number][]; + redeemTokenIds: TokenId[] | [TokenId, number][]; slippage: number; }) => { const mintIds = getUniqueTokenIds(mintTokenIds); @@ -224,47 +219,41 @@ const swapErc1155WithEth = async ({ const address = getChainConstant(NFTX_MARKETPLACE_ZAP, network); let { price: maxPrice } = await fetchVaultSwapPrice({ - provider: signer.provider, + provider, network, vault, randomSwaps: mintIds.length - redeemIds.length, targetSwaps: redeemIds.length, }); if (slippage) { - maxPrice = maxPrice - .mul(WeiPerEther.add(parseEther(`${slippage}`))) - .div(WeiPerEther); + maxPrice = + (maxPrice * (WeiPerEther + parseEther(`${slippage}`))) / WeiPerEther; } const contract = getContract({ - network, + provider, signer, - abi: nftxMarketplaceZap, + abi: NFTXMarketplaceZap, address, }); - const path = [getChainConstant(WETH_TOKEN, network), vaultAddress]; - const args = [vaultId, mintIds, amounts, redeemIds, path, userAddress]; - const method = 'buyAndSwap1155'; - - const { gasEstimate, maxFeePerGas, maxPriorityFeePerGas } = - await estimateGasAndFees({ - args, - contract, - method, - overrides: omitNil({ value: maxPrice }), - }); - const gasLimit = increaseGasLimit({ estimate: gasEstimate, amount: 7 }); + const path = [getChainConstant(WETH_TOKEN, network), vaultAddress] as const; + const args = [ + BigInt(vaultId), + mintIds.map(BigInt), + amounts.map(BigInt), + redeemIds.map(BigInt), + path, + userAddress, + ] as const; + const overrides = omitNil({ value: maxPrice, - gasLimit, - maxFeePerGas, - maxPriorityFeePerGas, }); console.debug(address, 'buyAndSwap1155', ...args, overrides); - return contract[method](...args, overrides); + return contract.write.buyAndSwap1155({ args, ...overrides }); }; const swapErc1155Direct = swapErc721Direct; @@ -273,6 +262,7 @@ const swap0xErc1155 = async ({ mintTokenIds, network, redeemTokenIds, + provider, signer, vault, vault: { id: vaultAddress, vaultId }, @@ -280,13 +270,14 @@ const swap0xErc1155 = async ({ userAddress, }: { network: number; + provider: Provider; signer: Signer; vault: SwapVault; - mintTokenIds: string[] | [string, number][]; - redeemTokenIds: string[] | [string, number][]; + mintTokenIds: TokenId[] | [TokenId, number][]; + redeemTokenIds: TokenId[] | [TokenId, number][]; quote: 'ETH'; slippage: number; - userAddress: string; + userAddress: Address; }) => { const mintIds = getUniqueTokenIds(mintTokenIds); const amounts = getTokenIdAmounts(mintTokenIds); @@ -297,8 +288,8 @@ const swap0xErc1155 = async ({ const address = getChainConstant(NFTX_MARKETPLACE_0X_ZAP, network); const contract = getContract({ - network, - abi: nftxMarketplace0xZap, + abi: NFTXMarketplace0xZap, + provider, signer, address, }); @@ -320,26 +311,18 @@ const swap0xErc1155 = async ({ slippagePercentage: slippage, }); - const args = [vaultId, mintIds, amounts, redeemIds, data, userAddress]; - - const { gasEstimate, maxFeePerGas, maxPriorityFeePerGas } = - await estimateGasAndFees({ - args, - contract, - method: 'buyAndSwap1155', - overrides: omitNil({ value }), - }); - const gasLimit = increaseGasLimit({ estimate: gasEstimate, amount: 7 }); - const overrides = omitNil({ - value, - gasLimit, - maxFeePerGas, - maxPriorityFeePerGas, - }); + const args = [ + BigInt(vaultId), + mintIds.map(BigInt), + amounts.map(BigInt), + redeemIds.map(BigInt), + data, + userAddress, + ] as const; - console.debug(address, 'buyAndSwap1155', args, overrides); + console.debug(address, 'buyAndSwap1155', args, value); - return contract.buyAndSwap1155(...args, overrides); + return contract.write.buyAndSwap1155({ args, value: BigInt(value) }); }; const matrix = { @@ -367,12 +350,14 @@ const matrix = { }, VTOKEN: { ERC721: { + true: null, false: { true: swapErc721Direct, false: swapErc721Direct, }, }, ERC1155: { + true: null, false: { true: swapErc1155Direct, false: swapErc1155Direct, @@ -388,14 +373,15 @@ const matrix = { */ const swap = (args: { network?: number; + provider: Provider; signer: Signer; /** Token IDs of the NFTs you want to put into the vault */ - mintTokenIds: string[] | [string, number][]; + mintTokenIds: TokenId[] | [TokenId, number][]; /** Token IDs of the NFTs you want to take out of the vault */ - redeemTokenIds: string[] | [string, number][]; + redeemTokenIds: TokenId[] | [TokenId, number][]; /** The vault you are swapping in */ vault: SwapVault; - userAddress: string; + userAddress: Address; /** The percentage amount of slippage you're willing to accept */ slippage?: number; quote?: 'ETH' | 'VTOKEN'; @@ -403,6 +389,7 @@ const swap = (args: { }) => { const { network = config.network, + provider, signer, vault, mintTokenIds, @@ -418,8 +405,8 @@ const swap = (args: { const randomCount = totalCount - targetCount; const requiresEth = quote === 'ETH' && - ((targetCount > 0 && vault.fees.targetSwapFee.gt(0)) || - (randomCount > 0 && vault.fees.randomSwapFee.gt(0))); + ((targetCount > 0 && vault.fees.targetSwapFee > Zero) || + (randomCount > 0 && vault.fees.randomSwapFee > Zero)); const supports0x = doesNetworkSupport0x(network); const fn = matrix[quote]?.[standard][`${requiresEth}`]?.[`${supports0x}`]; @@ -432,8 +419,9 @@ const swap = (args: { return fn({ mintTokenIds, network, - quote, + quote: quote as any, redeemTokenIds, + provider, signer, userAddress, slippage, diff --git a/packages/trade/src/trade/utils.ts b/packages/trade/src/trade/utils.ts index 5d6163c7..1f0034bd 100644 --- a/packages/trade/src/trade/utils.ts +++ b/packages/trade/src/trade/utils.ts @@ -1,18 +1,30 @@ +import type { TokenId } from '@nftx/types'; + +export const normalizeTokenIds = ( + tokenIds: Array | Array<[TokenId, number]> +): Array<[TokenId, number]> => { + return (tokenIds as any[]).reduce((acc, item) => { + if (Array.isArray(item) && item[0]) { + return [...acc, [item[0], item[1] ?? 1]]; + } + if (item) { + return [...acc, [item, 1]]; + } + return acc; + }, [] as Array<[TokenId, number]>); +}; + /** Extracts the ids given an array of target ids. * If an id has multiple quantities, the id is included multiple times in the output * @example ['1', '2', '3'] -> ['1', '2', '3'] * @example [['1', 1], ['2', 2], ['3', 3]] -> ['1', '2', '2', '3', '3', '3'] */ export const getExactTokenIds = ( - tokenIds: Array | Array<[string, number]> -): string[] => { - return tokenIds - .map((item: string | [string, number]) => { - if (Array.isArray(item)) { - const [id, quantity] = item; - return Array(quantity ?? 1).fill(id); - } - return item; + tokenIds: Array | Array<[TokenId, number]> +): TokenId[] => { + return normalizeTokenIds(tokenIds) + .map(([id, quantity]) => { + return Array(quantity).fill(id); }) .flat(); }; @@ -23,16 +35,9 @@ export const getExactTokenIds = ( * @example [['1', 1], ['2', 2], ['3', 3]] -> ['1', '2', '3'] */ export const getUniqueTokenIds = ( - tokenIds: Array | Array<[string, number]> -): string[] => { - return tokenIds - .map((item: string | [string, number]) => { - if (Array.isArray(item)) { - return item[0]; - } - return item; - }) - .filter((x) => x != null); + tokenIds: Array | Array<[TokenId, number]> +): TokenId[] => { + return normalizeTokenIds(tokenIds).map(([id]) => id); }; /** Returns an array of amounts for each token id @@ -40,13 +45,10 @@ export const getUniqueTokenIds = ( * @example [['1', 1], ['2', 2], ['3', 3]] -> [1, 2, 3] */ export const getTokenIdAmounts = ( - tokenIds: Array | Array<[string, number]> + tokenIds: Array | Array<[TokenId, number]> ): number[] => { - return tokenIds.map((item: string | [string, number]) => { - if (Array.isArray(item)) { - return item[1] ?? 1; - } - return 1; + return normalizeTokenIds(tokenIds).map(([, amount]) => { + return amount; }); }; @@ -56,7 +58,7 @@ export const getTokenIdAmounts = ( * @example [['1', 1], ['2', 2], ['3', 3]] -> 6 */ export const getTotalTokenIds = ( - tokenIds: Array | Array<[string, number]> + tokenIds: Array | Array<[TokenId, number]> ): number => { return getExactTokenIds(tokenIds).length; }; diff --git a/packages/trade/src/utils.ts b/packages/trade/src/utils.ts index eb91c482..735e7d55 100644 --- a/packages/trade/src/utils.ts +++ b/packages/trade/src/utils.ts @@ -7,6 +7,8 @@ export const reduceObj = >( ) => Array<[string, any]> ): any => { return Object.fromEntries( + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore Object.entries(obj).reduce((acc, [key, value]) => { return fn(acc, key, value); }, []) diff --git a/packages/types/package.json b/packages/types/package.json index 35d49d74..ff6f8e6d 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -18,16 +18,15 @@ }, "scripts": { "lint": "eslint --fix -c ../../.eslintrc.js --ext ts,tsx src && tsc --noEmit", + "test": "echo \"no tests\"", "build": "rm -rf dist && tsc -d --outDir dist/ts --emitDeclarationOnly && mkdir dist/cjs && echo \"module.exports = {}\" > dist/cjs/index.js", "prepublishOnly": "yarn build" }, "bugs": { "url": "https://github.com/NFTX-project/nftxjs/issues" }, - "peerDependencies": { - "@ethersproject/bignumber": "^5.6.0" - }, - "devDependencies": { - "@ethersproject/bignumber": "^5.6.0" + "dependencies": { + "abitype": "^0.7.1", + "viem": "0.1.19" } } diff --git a/packages/types/src/assets.ts b/packages/types/src/assets.ts index 956bb5cc..dd384bef 100644 --- a/packages/types/src/assets.ts +++ b/packages/types/src/assets.ts @@ -1,26 +1,26 @@ -import type { BigNumber } from 'ethers'; +import type { Address, BigIntString, TokenId } from './web3'; /** * An ERC721 or ERC1155 asset */ export type Asset = { id: string; - tokenId: string; - assetAddress: string; + tokenId: TokenId; + assetAddress: Address; /** * URL path to fetch the asset's metadata * {@link AssetMetadata} */ metaUrl: string; - vaultId: string; - quantity?: BigNumber; + vaultId?: string; + quantity?: bigint; }; /** * Metadata about an ERC asset pulled from covalent or opensea */ export type AssetMetadata = Asset & { - name: string; + name?: string; traits: Record; api: 'covalent' | 'opensea'; assetName: string; @@ -29,13 +29,13 @@ export type AssetMetadata = Asset & { imageUrl: string; imagePreviewUrl: string; detailUrl: string; - animationUrl: string; - backgroundColor: string; + animationUrl?: string; + backgroundColor?: string; }; /** Metadata bouat an ERC collection */ export type Collection = { - address: string; + address: Address; isSpam: boolean; media: [ { @@ -57,8 +57,8 @@ export type Collection = { lastIngestedAt: string; }; symbol: string; - tokenId: string; + tokenId: TokenId; tokenType: 'ERC721' | 'ERC1155' | 'UNKNOWN'; totalBalance: number; - totalSupply: string; + totalSupply: BigIntString; }; diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 94d3a3fc..79b491af 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -5,3 +5,4 @@ export * from './price'; export * from './tokens'; export * from './users'; export * from './vaults'; +export * from './web3'; diff --git a/packages/types/src/pools.ts b/packages/types/src/pools.ts index 1a2c915c..6362c672 100644 --- a/packages/types/src/pools.ts +++ b/packages/types/src/pools.ts @@ -1,5 +1,5 @@ -import type { BigNumber } from '@ethersproject/bignumber'; import type { TokenReserve } from './tokens'; +import type { Address } from './web3'; /** * An NFTX pool @@ -7,17 +7,17 @@ import type { TokenReserve } from './tokens'; */ export type Pool = { vaultId: string; - vaultAddress: string; - liquidityPoolId: string; - stakingTokenId: string; + vaultAddress: Address; + liquidityPoolId: Address; + stakingTokenId: Address; liquidityApr: number; inventoryApr: number; /** The total amount of inventory (xToken) in the pool, in ETH */ - inventoryStaked: BigNumber; + inventoryStaked: bigint; /** The total amount of liquidity (xSlp) in the pool, in ETH */ - liquidityStaked: BigNumber; + liquidityStaked: bigint; /** The total value staked (xToken + xSlp) in the pool, in ETH */ - totalValueStaked: BigNumber; + totalValueStaked: bigint; inventoryLockTime: number; liquidityLockTime: number; /** The % of the pool that is LP */ @@ -27,17 +27,17 @@ export type Pool = { poolReserves: TokenReserve; /** The total amount of xToken in the inventory contract */ - xTokenSupply: BigNumber; + xTokenSupply: bigint; /** The amount of xToken per vToken */ - xTokenShare: BigNumber; + xTokenShare: bigint; /** The total amount of xSlp in the dividend token contract */ - xSlpSupply: BigNumber; + xSlpSupply: bigint; /** The total supply of SLP on the staking token contract */ - slpSupply: BigNumber; + slpSupply: bigint; /** The SLP balance of the staking contract */ - slpBalance: BigNumber; + slpBalance: bigint; /** The total number of fees generated in the last 30 days */ - periodFees: BigNumber; + periodFees: bigint; /** The vault creation date */ createdAt: number; }; diff --git a/packages/types/src/positions.ts b/packages/types/src/positions.ts index bb4e0c3b..620c2f39 100644 --- a/packages/types/src/positions.ts +++ b/packages/types/src/positions.ts @@ -1,57 +1,57 @@ -import type { BigNumber } from '@ethersproject/bignumber'; import type { Pool } from './pools'; +import type { Address } from './web3'; /** * A given user's NFTX position in a given a pool */ export type Position = Pool & { - userAddress: string; + userAddress: Address; /** The amount of ETH staked by the user (paired with vToken) */ - liquidityEth: BigNumber; + liquidityEth: bigint; /** The amount of vToken staked by the user (paired with ETH) */ - liquidityTokens: BigNumber; + liquidityTokens: bigint; /** The total liquidity staked by the user in ETH terms */ - liquidityValue: BigNumber; + liquidityValue: bigint; /** The user's % share of all staked liquidity */ - liquidityShare: BigNumber; + liquidityShare: bigint; /** The % of the user's total position that is in liquidity (vs inventory) */ liquiditySplit: number; /** The amount of vToken the user can currently claim */ - claimableAmount: BigNumber; + claimableAmount: bigint; /** The amount of vToken the user can currently claim in ETH terms */ - claimableValue: BigNumber; + claimableValue: bigint; /** The amount of xToken staked by the user (in vToken terms) */ - inventoryTokens: BigNumber; + inventoryTokens: bigint; /** The total inventory staked by the user in ETH terms */ - inventoryValue: BigNumber; + inventoryValue: bigint; /** The user's % share of all staked inventory */ - inventoryShare: BigNumber; + inventoryShare: bigint; /** The % of the user's total position that is in inventory (vs liquidity) */ inventorySplit: number; /** The ETH value of inventory staked + liquidity staked */ - valueStaked: BigNumber; + valueStaked: bigint; /** The ETH value of inventory + liquidity + claimable */ - totalValue: BigNumber; + totalValue: bigint; /** The user's xToken balance */ - xTokenBalance: BigNumber; + xTokenBalance: bigint; /** The user's xSlp balance */ - xSlpBalance: BigNumber; + xSlpBalance: bigint; /** The user's slp balance */ - slpBalance: BigNumber; + slpBalance: bigint; // yield: Pick[]; - // lifetimeYield: BigNumber; + // lifetimeYield: bigint; }; /** A fee generation event */ export type PositionYield = { vaultId: string; - vaultAddress: string; + vaultAddress: Address; /** The transaction hash */ - txnId: string; + txnId: Address; /** The vault symbol */ symbol: string; /** The timestamp (in seconds) of the transaction */ @@ -59,5 +59,5 @@ export type PositionYield = { /** Mint/Redeem/Swap */ type: string; /** The amount generated for the user in vToken terms */ - amount: BigNumber; + amount: bigint; }; diff --git a/packages/types/src/price.ts b/packages/types/src/price.ts index 6c87615f..4ade89af 100644 --- a/packages/types/src/price.ts +++ b/packages/types/src/price.ts @@ -1,10 +1,8 @@ -import type { BigNumber } from '@ethersproject/bignumber'; - /** A price object returned by all pricing methods (@nftx/trade) */ export type Price = { - price: BigNumber; - estimatedGas?: BigNumber; - gasPrice?: BigNumber; + price: bigint; + estimatedGas?: bigint; + gasPrice?: bigint; /** * A list of sources providing liquidity for the given price * This will only be provided if 0x pricing is enabled diff --git a/packages/types/src/tokens.ts b/packages/types/src/tokens.ts index fe7549fa..19988b3f 100644 --- a/packages/types/src/tokens.ts +++ b/packages/types/src/tokens.ts @@ -1,10 +1,10 @@ -import type { BigNumber } from '@ethersproject/bignumber'; +import type { Address } from './web3'; /** * Common token metadata */ export type Token = { - id: string; + id: Address; name: string; symbol: string; }; @@ -13,9 +13,9 @@ export type Token = { * A token reserve */ export type TokenReserve = { - tokenId: string; + tokenId: Address; derivedEth: string; - reserveVtoken: BigNumber; - reserveWeth: BigNumber; - midPrice: BigNumber; + reserveVtoken: bigint; + reserveWeth: bigint; + midPrice: bigint; }; diff --git a/packages/types/src/users.ts b/packages/types/src/users.ts index 9086a8c8..e0007353 100644 --- a/packages/types/src/users.ts +++ b/packages/types/src/users.ts @@ -1,4 +1,4 @@ -import type { BigNumber } from '@ethersproject/bignumber'; +import type { Address } from './web3'; // export type NftxTokenType = 'xTokenWETH' | 'xToken' | 'vToken' | 'vTokenWETH'; export enum NftxTokenType { @@ -16,9 +16,9 @@ export enum NftxTokenType { * This could be */ export type UserVaultBalance = { - balance: BigNumber; + balance: bigint; symbol: string; - address: string; + address: Address; name: string; type: NftxTokenType; vaultId: string; diff --git a/packages/types/src/vaults.ts b/packages/types/src/vaults.ts index 31973032..db75e881 100644 --- a/packages/types/src/vaults.ts +++ b/packages/types/src/vaults.ts @@ -1,6 +1,6 @@ -import type { BigNumber } from '@ethersproject/bignumber'; import type { Price } from './price'; import type { Token } from './tokens'; +import type { Address, TokenId } from './web3'; export type VaultFeatures = { enableMint: boolean; @@ -12,62 +12,62 @@ export type VaultFeatures = { export type VaultHolding = { id: string; - tokenId: string; - amount: BigNumber; + tokenId: TokenId; + amount: bigint; dateAdded: number; }; export type VaultFees = { - mintFee: BigNumber; - randomRedeemFee: BigNumber; - targetRedeemFee: BigNumber; - targetSwapFee: BigNumber; - randomSwapFee: BigNumber; + mintFee: bigint; + randomRedeemFee: bigint; + targetRedeemFee: bigint; + targetSwapFee: bigint; + randomSwapFee: bigint; }; export type Vault = { vaultId: string; - id: string; + id: Address; asset: Token; - createdBy: { id: string }; + createdBy: { id: Address }; createdAt: number; derivedETH: string; - rawPrice: BigNumber; + rawPrice: bigint; buyPrice: Price; - reserveVtoken: BigNumber; - reserveWeth: BigNumber; + reserveVtoken: bigint; + reserveWeth: bigint; features: VaultFeatures; totalHoldings: number; totalMints: number; totalRedeems: number; - totalFees: BigNumber; + totalFees: bigint; holdings: VaultHolding[]; is1155: boolean; isFinalized: boolean; usesFactoryFees: boolean; fees: VaultFees; - manager: { id: string }; + manager: { id: Address }; token: Token; eligibilityModule: { - id: string; + id: Address; name: string; eligibleIds: string[]; eligibleRange: [string, string]; merkleReference: string; }; lpStakingPool: { - id: string; + id: Address; stakingToken: { - id: string; + id: Address; }; dividendToken: { - id: string; + id: Address; }; }; inventoryStakingPool: { - id: string; + id: Address; dividendToken: { - id: string; + id: Address; symbol: string; }; }; @@ -78,22 +78,22 @@ export type Vault = { export type VaultActivity = { vaultId: string; - vaultAddress: string; + vaultAddress: Address; amount: number; - ethAmount: BigNumber; + ethAmount: bigint; date: number; - feeAmount: BigNumber; - tokenId: string; - txId: string; + feeAmount: bigint; + tokenId: TokenId; + txId: Address; source: string; type: 'buy' | 'sell' | 'swap' | 'mint' | 'redeem' | 'stake' | 'unstake'; stakeType?: 'liquidity' | 'inventory'; - swapTokenId?: string; + swapTokenId?: TokenId; random?: boolean; }; export type VaultFeeTransfer = { - amount: BigNumber; + amount: bigint; to: string; }; @@ -101,6 +101,6 @@ export type VaultFeeReceipt = { vaultId: string; vaultAddress: string; transfers: VaultFeeTransfer[]; - amount: BigNumber; + amount: bigint; date: number; }; diff --git a/packages/types/src/web3.ts b/packages/types/src/web3.ts new file mode 100644 index 00000000..6d3dd728 --- /dev/null +++ b/packages/types/src/web3.ts @@ -0,0 +1,54 @@ +import type { + createPublicClient, + createWalletClient, + TransactionReceipt, + ExtractResultFromAbi, + ExtractArgsFromAbi, +} from 'viem'; +import type { Abi, ExtractAbiFunctionNames } from 'abitype'; + +export type Provider = ReturnType; +export type Signer = ReturnType; + +export type Address = `0x${string}`; + +export type BigIntString = `${number}`; + +export type BigIntish = bigint | BigIntString | number; + +export type TokenId = BigIntString; + +export type Transaction = { + hash: Address; + wait: () => Promise; +}; + +type ContractRead = { + [K in ExtractAbiFunctionNames]: ( + args: ExtractArgsFromAbi + ) => Promise>; +}; +type WriteOpts = { + value?: bigint; + gas?: bigint; + gasPrice?: bigint; + maxFeePerGas?: bigint; + maxPriorityFeePerGas?: bigint; +}; + +type ContractWrite = { + [K in ExtractAbiFunctionNames]: ( + args: ExtractArgsFromAbi & WriteOpts + ) => Promise; +}; +type ContractEstimate = { + [K in ExtractAbiFunctionNames]: ( + args: ExtractArgsFromAbi & WriteOpts + ) => Promise<{ gasEstimate: bigint }>; +}; + +export type Contract = { + read: ContractRead; + write: ContractWrite; + estimate: ContractEstimate; +}; diff --git a/packages/utils/package.json b/packages/utils/package.json index a29c3320..dd4a6083 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -19,39 +19,24 @@ }, "scripts": { "lint": "eslint --fix -c ../../.eslintrc.js --ext ts,tsx src && tsc --noEmit", - "test": "echo \"no tests\" #jest --config ../../jest.config.js", + "test": "jest --config ../../jest.config.js", "build": "rm -rf dist && rollup -c && tsc -d --outDir dist/ts --emitDeclarationOnly", "prepublishOnly": "yarn build", "docs": "typedoc src/index.ts" }, - "peerDependencies": { - "@ethersproject/abi": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/contracts": "^5.6.0", - "@ethersproject/providers": "^5.6.2", - "@ethersproject/units": "^5.6.0", - "ethers": "^5.6.2" - }, - "devDependencies": { - "@ethersproject/abi": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/contracts": "^5.6.0", - "@ethersproject/providers": "^5.6.2", - "@ethersproject/units": "^5.6.0", - "ethers": "^5.6.2" - }, "bugs": { "url": "https://github.com/NFTX-project/nftxjs/issues" }, "sideEffects": false, "dependencies": { + "@nftx/abi": "^0.9.0", "@nftx/config": "^0.9.5", "@nftx/constants": "^0.9.5", "@nftx/subgraph": "^0.9.5", "@nftx/types": "^0.9.0", + "abitype": "^0.7.1", "keccak256": "^1.0.6", - "merkletreejs": "^0.2.32" + "merkletreejs": "^0.2.32", + "viem": "0.1.19" } } diff --git a/packages/utils/rollup.config.js b/packages/utils/rollup.config.js index 2d42fd1d..5a63469a 100644 --- a/packages/utils/rollup.config.js +++ b/packages/utils/rollup.config.js @@ -1,13 +1,7 @@ -import { readdirSync } from 'fs'; import base from '../../rollup.base'; -const abis = readdirSync('../constants/abis') - .filter((filename) => filename.endsWith('.json')) - .map((filename) => `@nftx/constants/abis/${filename}`); - const config = { ...base, - external: [...base.external, ...abis], }; export default config; diff --git a/packages/utils/src/assets/fetchAssetMetadata.ts b/packages/utils/src/assets/fetchAssetMetadata.ts index 610ce273..4d67f52b 100644 --- a/packages/utils/src/assets/fetchAssetMetadata.ts +++ b/packages/utils/src/assets/fetchAssetMetadata.ts @@ -1,5 +1,5 @@ import config from '@nftx/config'; -import type { AssetMetadata } from '@nftx/types'; +import type { Address, AssetMetadata } from '@nftx/types'; export type Response = { animation_url: null | string; @@ -30,7 +30,7 @@ export type Response = { * @returns Promise<{@link @nftx/types!AssetMetadata}> */ const fetchAssetMetadata = async (args: { - assetAddress: string; + assetAddress: Address; tokenId: string; network?: number; }) => { @@ -49,12 +49,10 @@ const fetchAssetMetadata = async (args: { id: `${assetAddress}/${tokenId}`, assetAddress, metaUrl, - vaultId: null, - quantity: null, - name: data.name, + name: data.name ?? undefined, api: data.api_response, traits: data.traits, - tokenId: data.token_id, + tokenId: data.token_id as `${number}`, assetName: data.asset_contract.name, openseaSlug: data.collection?.slug, imageUrl: data.image_url, @@ -62,8 +60,10 @@ const fetchAssetMetadata = async (args: { openseaBlocked: data.supports_wyvern === false, animationUrl: data.animation_url?.includes('.mp4') ? data.animation_url - : null, - backgroundColor: data.background_color ? `#${data.background_color}` : null, + : undefined, + backgroundColor: data.background_color + ? `#${data.background_color}` + : undefined, detailUrl: data.api_response === 'covalent' ? `https://looksrare.org/collections/${data.asset_contract.address.toLowerCase()}/${ diff --git a/packages/utils/src/eligibility/__tests__/checkEligible.test.ts b/packages/utils/src/eligibility/__tests__/checkEligible.test.ts new file mode 100644 index 00000000..29d1681a --- /dev/null +++ b/packages/utils/src/eligibility/__tests__/checkEligible.test.ts @@ -0,0 +1,73 @@ +import makeCheckEligible from '../checkEligible'; +import type { getContract as _getContract } from '../../web3'; +import type { TokenId } from '@nftx/types'; + +type GetContract = typeof _getContract; + +let checkEligible: ReturnType; +let run: () => ReturnType; +let vault: Parameters[0]['vault']; +let provider: any; +let tokenIds: TokenId[]; +let getContract: GetContract; +let contract: { + read: { + checkEligible: jest.Mock; + }; +}; + +beforeEach(() => { + vault = { + eligibilityModule: { + eligibleIds: [], + eligibleRange: ['0', '9999'], + id: '0x1234', + merkleReference: '', + name: 'module', + }, + }; + provider = {} as any; + tokenIds = ['1', '2', '3']; + contract = { + read: { + checkEligible: jest.fn(async () => tokenIds.map((_, i) => !!(i % 2))), + }, + }; + getContract = jest.fn().mockReturnValue(contract); + + checkEligible = makeCheckEligible({ getContract }); + run = () => checkEligible({ provider, tokenIds, vault }); +}); + +it('returns whether a set of tokens are eligible for minting into a vault', async () => { + const result = await run(); + + expect(result).toEqual([ + { tokenId: '1', eligible: false }, + { tokenId: '2', eligible: true }, + { tokenId: '3', eligible: false }, + ]); +}); + +it('calls the eligibility contract method', async () => { + await run(); + + expect(contract.read.checkEligible).toBeCalled(); + expect(contract.read.checkEligible).toBeCalledWith({ args: [[1n, 2n, 3n]] }); +}); + +describe('when the vault does not have an eligibility module', () => { + beforeEach(() => { + vault.eligibilityModule = null as any; + }); + + it('returns true for all tokens', async () => { + const result = await run(); + + expect(result).toEqual([ + { tokenId: '1', eligible: true }, + { tokenId: '2', eligible: true }, + { tokenId: '3', eligible: true }, + ]); + }); +}); diff --git a/packages/utils/src/eligibility/__tests__/fetchMerkleLeaves.test.ts b/packages/utils/src/eligibility/__tests__/fetchMerkleLeaves.test.ts new file mode 100644 index 00000000..4cddeb64 --- /dev/null +++ b/packages/utils/src/eligibility/__tests__/fetchMerkleLeaves.test.ts @@ -0,0 +1,91 @@ +import makeFetchMerkleLeaves from '../fetchMerkleLeaves'; + +let fetchMerkleLeaves: ReturnType; +let run: () => ReturnType; +let vault: Parameters[0]['vault']; +let provider: any; +let getContract: jest.Mock; +let contract: { + read: { + merkleLeavesURI: jest.Mock; + }; +}; +let fetch: jest.Mock; + +beforeEach(() => { + vault = { + eligibilityModule: { + id: '0x1234', + merkleReference: 'example-merkle-ref', + }, + }; + provider = {}; + contract = { + read: { + merkleLeavesURI: jest.fn().mockResolvedValue('http://example.com'), + }, + }; + getContract = jest.fn().mockReturnValue(contract); + fetch = jest.fn().mockResolvedValue({ + json: jest.fn().mockResolvedValue(['1', '2', '3']), + }); + + fetchMerkleLeaves = makeFetchMerkleLeaves({ getContract, fetch }); + run = () => fetchMerkleLeaves({ provider, vault }); +}); + +it('returns a list of merkle leaves for a vault', async () => { + const result = await run(); + + expect(result).toEqual(['1', '2', '3']); +}); +it('fetches merkle leaves from the uri returned from the merkle leaves uri contract method', async () => { + await run(); + + expect(getContract.mock.calls[0][0].address).toBe( + vault.eligibilityModule?.id + ); + expect(contract.read.merkleLeavesURI).toBeCalled(); + expect(fetch).toBeCalled(); + expect(fetch).toBeCalledWith('http://example.com'); +}); + +describe("when the vault's eligibility module has no merkle reference", () => { + beforeEach(() => { + if (vault.eligibilityModule) { + vault.eligibilityModule.merkleReference = null as any; + } + }); + + it('returns an empty list', async () => { + const result = await run(); + + expect(result).toEqual([]); + }); + it('does not call any contract methods', async () => { + await run(); + + expect(getContract).not.toBeCalled(); + expect(contract.read.merkleLeavesURI).not.toBeCalled(); + expect(fetch).not.toBeCalled(); + }); +}); + +describe('when the vault has no eligibility module', () => { + beforeEach(() => { + vault.eligibilityModule = null as any; + }); + + it('returns an empty list', async () => { + const result = await run(); + + expect(result).toEqual([]); + }); + it('does not call any contract methods', async () => { + await run(); + + expect(getContract).not.toBeCalled(); + expect(contract.read.merkleLeavesURI).not.toBeCalled(); + expect(fetch).not.toBeCalled(); + }); +}); diff --git a/packages/utils/src/eligibility/__tests__/fetchMerkleReference.test.ts b/packages/utils/src/eligibility/__tests__/fetchMerkleReference.test.ts new file mode 100644 index 00000000..c8200e9b --- /dev/null +++ b/packages/utils/src/eligibility/__tests__/fetchMerkleReference.test.ts @@ -0,0 +1,59 @@ +import makeFetchMerkleReference from '../fetchMerkleReference'; + +let fetchMerkleReference: ReturnType; +let run: () => ReturnType; +let provider: any; +let vault: Parameters[0]['vault']; +let getContract: jest.Mock; +let contract: { + read: { + merkleReference: jest.Mock; + }; +}; + +beforeEach(() => { + provider = {}; + vault = { eligibilityModule: { id: '0x1234', name: 'MerkleEligibilityFoo' } }; + getContract = jest.fn().mockReturnValue(contract); + contract = { + read: { + merkleReference: jest.fn().mockResolvedValue('merkle-reference'), + }, + }; + getContract = jest.fn().mockReturnValue(contract); + + fetchMerkleReference = makeFetchMerkleReference({ getContract }); + run = () => fetchMerkleReference({ provider, vault }); +}); + +it('fetches the merkle reference for a vault', async () => { + const result = await run(); + + expect(result).toBe('merkle-reference'); +}); + +describe('when not an eligibility module', () => { + beforeEach(() => { + vault.eligibilityModule = null as any; + }); + + it('returns null', async () => { + const result = await run(); + + expect(result).toBe(null); + }); +}); + +describe('when not a merkle vault', () => { + beforeEach(() => { + if (vault.eligibilityModule) { + vault.eligibilityModule.name = 'Foo'; + } + }); + + it('returns null', async () => { + const result = await run(); + + expect(result).toBe(null); + }); +}); diff --git a/packages/utils/src/eligibility/checkEligible.ts b/packages/utils/src/eligibility/checkEligible.ts index 51133e3a..777bae43 100644 --- a/packages/utils/src/eligibility/checkEligible.ts +++ b/packages/utils/src/eligibility/checkEligible.ts @@ -1,10 +1,10 @@ -import NFtxEligibilityAbi from '@nftx/constants/abis/NFTXEligibility.json'; -import type { Provider } from '@ethersproject/providers'; -import type { Vault } from '@nftx/types'; -import { getContract } from '../web3'; -import config from '@nftx/config'; +import { NFTXEligibility } from '@nftx/abi'; +import type { Provider, TokenId, Vault } from '@nftx/types'; +import type { getContract } from '../web3'; -export default () => +type GetContract = typeof getContract; + +export default ({ getContract }: { getContract: GetContract }) => /** Checks if a series of token ids are eligible for minting * This is based on the vault's eligibility module * Also bear in mind that this does not deal with unprocessed merkle vaults @@ -13,23 +13,20 @@ export default () => * (Unprocessed assets will always just return false if passed in here first) */ async function checkEligible(args: { - network?: number; vault: Pick; provider: Provider; - tokenIds: string[]; + tokenIds: TokenId[]; }) { - const { network = config.network, vault, provider, tokenIds } = args; + const { vault, provider, tokenIds } = args; if (!vault.eligibilityModule?.id) { return tokenIds.map((tokenId) => ({ tokenId, eligible: true })); } - const contract = getContract({ - network, - provider, - abi: NFtxEligibilityAbi, - address: vault.eligibilityModule.id, - }); - const results: boolean[] = await contract.checkEligible(tokenIds); + const results = await getContract({ + abi: NFTXEligibility, + address: vault.eligibilityModule.id, + provider, + }).read.checkEligible({ args: [tokenIds.map(BigInt)] }); return tokenIds.map((tokenId, i) => ({ tokenId, eligible: !!results[i] })); }; diff --git a/packages/utils/src/eligibility/fetchMerkleLeaves.ts b/packages/utils/src/eligibility/fetchMerkleLeaves.ts index 94fbdba6..b9cae9d5 100644 --- a/packages/utils/src/eligibility/fetchMerkleLeaves.ts +++ b/packages/utils/src/eligibility/fetchMerkleLeaves.ts @@ -1,20 +1,25 @@ -import type { Provider } from '@ethersproject/providers'; -import abi from '@nftx/constants/abis/NFTXENSMerkleEligibility.json'; -import config from '@nftx/config'; -import type { Vault } from '@nftx/types'; -import { getContract } from '../web3'; +import { NFTXENSMerkleEligibility } from '@nftx/abi'; +import type { Provider, Vault } from '@nftx/types'; +import type { getContract } from '../web3'; -export default () => +type GetContract = typeof getContract; +type Fetch = typeof fetch; + +export default ({ + getContract, + fetch, +}: { + getContract: GetContract; + fetch: Fetch; +}) => /** * Fetches a list of eligible token ids for a vault with merkle eligibility rules */ async function fetchMerkleLeaves({ - network = config.network, provider, vault, }: { provider: Provider; - network?: number; vault: { eligibilityModule?: { id: Vault['eligibilityModule']['id']; @@ -33,14 +38,12 @@ export default () => let leaves: string[] = []; try { - const contract = getContract({ - network, - provider, - abi, + const uri = await getContract({ + abi: NFTXENSMerkleEligibility, address: vault.eligibilityModule.id, - }); + provider, + }).read.merkleLeavesURI({}); - const uri: string = await contract.merkleLeavesURI(); leaves = await (await fetch(uri)).json(); } catch (e) { console.error(e); diff --git a/packages/utils/src/eligibility/fetchMerkleReference.ts b/packages/utils/src/eligibility/fetchMerkleReference.ts index ee820d4b..c7b6a393 100644 --- a/packages/utils/src/eligibility/fetchMerkleReference.ts +++ b/packages/utils/src/eligibility/fetchMerkleReference.ts @@ -1,13 +1,12 @@ -import abi from '@nftx/constants/abis/NFTXENSMerkleEligibility.json'; -import type { Provider } from '@ethersproject/providers'; -import type { Vault } from '@nftx/types'; -import { getContract } from '../web3'; -import config from '@nftx/config'; +import type { Provider, Vault } from '@nftx/types'; +import type { getContract } from '../web3'; import isMerkleVault from './isMerkleVault'; +import { NFTXENSMerkleEligibility } from '@nftx/abi'; -export default () => +type GetContract = typeof getContract; + +export default ({ getContract }: { getContract: GetContract }) => async function fetchMerkleReference(args: { - network: number; provider: Provider; vault: { eligibilityModule?: { @@ -16,19 +15,21 @@ export default () => }; }; }) { - const { network = config.network, provider, vault } = args; + const { provider, vault } = args; if (!isMerkleVault(vault)) { return null; } + if (!vault.eligibilityModule?.id) { + return null; + } const contract = getContract({ - network, + abi: NFTXENSMerkleEligibility, + address: vault.eligibilityModule?.id, provider, - abi, - address: vault.eligibilityModule.id, }); - const reference: string = await contract.merkleReference(); + const reference = await contract.read.merkleReference({}); return reference; }; diff --git a/packages/utils/src/eligibility/index.ts b/packages/utils/src/eligibility/index.ts index 1510f7a9..42d8bab2 100644 --- a/packages/utils/src/eligibility/index.ts +++ b/packages/utils/src/eligibility/index.ts @@ -1,3 +1,4 @@ +import { getContract } from '../web3'; import makeCheckEligible from './checkEligible'; import makeFetchMerkleLeaves from './fetchMerkleLeaves'; import makeFetchMerkleReference from './fetchMerkleReference'; @@ -6,8 +7,11 @@ import makeRequiresProcessing from './requiresProcessing'; export { default as isMerkleVault } from './isMerkleVault'; -export const checkEligible = makeCheckEligible(); -export const fetchMerkleLeaves = makeFetchMerkleLeaves(); -export const fetchMerkleReference = makeFetchMerkleReference(); +export const checkEligible = makeCheckEligible({ getContract }); +export const fetchMerkleLeaves = makeFetchMerkleLeaves({ + fetch: typeof fetch === 'undefined' ? (undefined as any) : fetch, + getContract, +}); +export const fetchMerkleReference = makeFetchMerkleReference({ getContract }); export const processTokens = makeProcessTokens({ fetchMerkleLeaves }); export const requiresProcessing = makeRequiresProcessing({ fetchMerkleLeaves }); diff --git a/packages/utils/src/eligibility/processTokens.ts b/packages/utils/src/eligibility/processTokens.ts index f889da12..bf1cb24c 100644 --- a/packages/utils/src/eligibility/processTokens.ts +++ b/packages/utils/src/eligibility/processTokens.ts @@ -1,10 +1,7 @@ -import abi from '@nftx/constants/abis/NFTXENSMerkleEligibility.json'; -import type { Provider } from '@ethersproject/providers'; -import config from '@nftx/config'; -import { getContract } from '../web3'; +import { NFTXENSMerkleEligibility } from '@nftx/abi'; import type fetchMerkleLeaves from './fetchMerkleLeaves'; -import type { Signer } from 'ethers'; -import type { Vault } from '@nftx/types'; +import type { Address, Provider, Signer, TokenId, Vault } from '@nftx/types'; +import getContract from '../web3/getContract'; type FetchMerkleLeaves = ReturnType; @@ -19,7 +16,6 @@ export default ({ * Do not call this method on a vault that doesn't implement a merkle module */ async function processTokens(args: { - network?: number; provider: Provider; signer: Signer; vault: { @@ -28,33 +24,20 @@ export default ({ 'id' | 'merkleReference' >; }; - tokenIds: string[]; + tokenIds: TokenId[]; /** Merkle eligibility leaves. If this parameter is omitted, they will be fetched as part of this method */ leaves?: string[]; }) { - const { - network = config.network, - provider, - signer, - vault, - tokenIds, - } = args; + const { provider, signer, vault, tokenIds } = args; let { leaves } = args; if (!vault?.eligibilityModule?.merkleReference) { throw new Error('Not a valid eligibility module'); } if (!leaves) { - leaves = await fetchMerkleLeaves({ provider, vault, network }); + leaves = await fetchMerkleLeaves({ provider, vault }); } - const contract = getContract({ - network, - signer, - abi, - address: vault.eligibilityModule.id, - }); - const { default: keccak256 } = await import('keccak256'); const { default: MerkleTree } = await import('merkletreejs'); @@ -66,7 +49,15 @@ export default ({ const proofs = tokenIds.map((tokenId) => { return tree.getHexProof(keccak256(tokenId)); - }); + }) as readonly Address[][]; - return contract.processTokens(tokenIds, proofs); + const contract = getContract({ + abi: NFTXENSMerkleEligibility, + address: vault.eligibilityModule.id, + provider, + signer, + }); + return contract.write.processTokens({ + args: [tokenIds.map(BigInt), proofs], + }); }; diff --git a/packages/utils/src/eligibility/requiresProcessing.ts b/packages/utils/src/eligibility/requiresProcessing.ts index f9f00e30..f500d50f 100644 --- a/packages/utils/src/eligibility/requiresProcessing.ts +++ b/packages/utils/src/eligibility/requiresProcessing.ts @@ -1,9 +1,7 @@ -import type { Provider } from '@ethersproject/providers'; -import config from '@nftx/config'; -import abi from '@nftx/constants/abis/NFTXENSMerkleEligibility.json'; -import type { Vault } from '@nftx/types'; -import { getContract } from '../web3'; +import type { Address, Provider, Vault } from '@nftx/types'; import type fetchMerkleLeaves from './fetchMerkleLeaves'; +import { NFTXENSMerkleEligibility } from '@nftx/abi'; +import getContract from '../web3/getContract'; type FetchMerkleLeaves = ReturnType; @@ -17,7 +15,6 @@ export default ({ * For each token that returns true, you will need to call {@link processTokens} */ async function requiresProcessing(args: { - network?: number; provider: Provider; tokenIds: string[]; vault: { @@ -29,7 +26,7 @@ export default ({ /** Merkle eligibility leaves. If this parameter is omitted, they will be fetched as part of this method */ leaves?: string[]; }) { - const { tokenIds, network = config.network, provider, vault } = args; + const { tokenIds, provider, vault } = args; let { leaves } = args; if (!tokenIds.length) { return []; @@ -42,13 +39,12 @@ export default ({ } if (!leaves) { - leaves = await fetchMerkleLeaves({ provider, vault, network }); + leaves = await fetchMerkleLeaves({ provider, vault }); } const contract = getContract({ - network, provider, - abi, + abi: NFTXENSMerkleEligibility, address: vault.eligibilityModule.id, }); @@ -76,10 +72,9 @@ export default ({ const result = await Promise.all( tokenIds.map(async (tokenId, i) => { const proof = proofs[i]; - const result: boolean = await contract.requiresProcessing( - tokenId, - proof - ); + const result: boolean = await contract.read.requiresProcessing({ + args: [BigInt(tokenId), proof as Address[]], + }); return { tokenId, requiresProcessing: result, diff --git a/packages/utils/src/positions/__tests__/adjustPosition.test.ts b/packages/utils/src/positions/__tests__/adjustPosition.test.ts new file mode 100644 index 00000000..eb1d3c5b --- /dev/null +++ b/packages/utils/src/positions/__tests__/adjustPosition.test.ts @@ -0,0 +1,317 @@ +import { WeiPerEther, Zero } from '@nftx/constants'; +import type { Position } from '@nftx/types'; +import { parseEther } from 'viem'; +import adjustPosition from '../adjustPosition'; +import testPosition from './test-position'; + +let position: Position; +let vToken: bigint; +let slp: bigint; +let lpNft: bigint; +let lpEth: bigint; +let run: () => Position; + +beforeEach(() => { + vToken = null as any; + slp = null as any; + lpNft = null as any; + lpEth = null as any; + position = testPosition as any; + run = () => adjustPosition(position, { lpEth, lpNft, slp, vToken }); +}); + +describe('add inventory (vToken)', () => { + let result: Position; + beforeEach(() => { + vToken = parseEther('1'); + result = run(); + }); + + it('adds the vToken to the vToken balance', () => { + expect(`${position.inventoryTokens}`).toBe('370830868609868634'); + expect(`${result.inventoryTokens}`).toBe(`${1370830868609868634n}`); + }); + it('adjusts the inventory share', () => { + expect(`${position.inventoryShare}`).toBe('40738233836317630'); + expect(`${result.inventoryShare}`).toBe('151755161256182218'); + }); + it('adjusts the inventory split', () => { + expect(Math.floor(position.inventorySplit * 10000) / 10000).toBe(0.0872); + expect(Math.floor(result.inventorySplit * 10000) / 10000).toBe(0.1501); + }); + it('adjusts the inventory tokens', () => { + expect(`${position.inventoryTokens}`).toBe('370830868609868634'); + expect(`${result.inventoryTokens}`).toBe('1370830868609868634'); + }); + it('adjusts the inventory eth value', () => { + expect(`${position.inventoryValue}`).toBe('1733078193961315'); + expect(`${result.inventoryValue}`).toBe('6406578543212429'); + }); + it('adjusts the total value', () => { + expect(`${position.totalValue}`).toBe('39442784740050594'); + expect(`${result.totalValue}`).toBe('44116285089301708'); + }); + it('adjusts the value staked', () => { + expect(`${position.valueStaked}`).toBe('38000618670827965'); + expect(`${result.valueStaked}`).toBe('42674119020079079'); + }); + it('adjusts the xtokenBalance', () => { + expect(`${position.xTokenBalance}`).toBe('339746544880983538'); + expect(`${result.xTokenBalance}`).toBe('1431239230229039785'); + }); + it('adjusts the xTokensupply', () => { + expect(`${position.xTokenSupply}`).toBe('8339746544880983538'); + expect(`${result.xTokenSupply}`).toBe('9431239230229039785'); + }); + it('adjusts the APRs', () => { + expect(Math.floor(position.inventoryApr * 10000) / 10000).toBe(0.079); + expect(Math.floor(position.liquidityApr * 10000) / 10000).toBe(0.0967); + expect(Math.floor(result.inventoryApr * 10000) / 10000).toBe(0.0699); + expect(Math.floor(result.liquidityApr * 10000) / 10000).toBe(0.0967); + }); + + describe('when there is no inventory', () => { + beforeEach(() => { + position = { + ...position, + inventoryShare: Zero, + inventorySplit: 0, + inventoryStaked: Zero, + inventoryTokens: Zero, + inventoryValue: Zero, + liquiditySplit: 1, + totalValue: position.liquidityValue + position.claimableValue, + totalValueStaked: position.liquidityValue, + xTokenBalance: Zero, + }; + // const vToken = + // Zero - + // (position.xTokenBalance * WeiPerEther) / position.xTokenShare - + // 1n; + + // position = adjustPosition(position, { + // vToken, + // }); + }); + + it('adjusts the inventory share', () => { + expect(`${position.inventoryShare}`).toBe('0'); + expect(`${result.inventoryShare}`).toBe('151755161256182218'); + }); + it('adjusts the inventory split', () => { + expect(Math.floor(position.inventorySplit * 10000) / 10000).toBe(0); + expect(Math.floor(result.inventorySplit * 10000) / 10000).toBe(0.1501); + }); + it('adjusts the inventory tokens', () => { + expect(`${position.inventoryTokens}`).toBe('0'); + expect(`${result.inventoryTokens}`).toBe('1370830868609868634'); + }); + it('adjusts the inventory eth value', () => { + expect(`${position.inventoryValue}`).toBe('0'); + expect(`${result.inventoryValue}`).toBe('6406578543212429'); + }); + it('adjusts the total value', () => { + expect(`${position.totalValue}`).toBe('37709706546089279'); + expect(`${result.totalValue}`).toBe('44116285089301708'); + }); + it('adjusts the value staked', () => { + expect(`${position.valueStaked}`).toBe('38000618670827965'); + expect(`${result.valueStaked}`).toBe('42674119020079079'); + }); + it('adjusts the xtokenBalance', () => { + expect(`${position.xTokenBalance}`).toBe('0'); + expect(`${result.xTokenBalance}`).toBe('1431239230229039785'); + }); + it('adjusts the xTokensupply', () => { + expect(`${position.xTokenSupply}`).toBe('8339746544880983538'); + expect(`${result.xTokenSupply}`).toBe('9431239230229039785'); + }); + it('adjusts the APRs', () => { + expect(Math.floor(position.inventoryApr * 10000) / 10000).toBe(0.079); + expect(Math.floor(position.liquidityApr * 10000) / 10000).toBe(0.0967); + expect(Math.floor(result.inventoryApr * 10000) / 10000).toBe(0.0699); + expect(Math.floor(result.liquidityApr * 10000) / 10000).toBe(0.0967); + }); + }); +}); + +describe('add liquidity (NFT + ETH)', () => { + let result: Position; + beforeEach(() => { + lpNft = parseEther('2'); + lpEth = parseEther('0.009278350515464'); + result = run(); + }); + + it('adjusts the liquidity share', () => { + expect(position.liquidityShare.toString()).toBe('212337346198680636'); + expect(result.liquidityShare.toString()).toBe('348192036883254955'); + }); + it('adjusts the liquidity split', () => { + expect(Math.floor(position.liquiditySplit * 10000) / 10000).toBe(0.9127); + expect(Math.floor(result.liquiditySplit * 10000) / 10000).toBe(0.9694); + }); + it('adjusts the liquidity tokens', () => { + expect(position.liquidityTokens.toString()).toBe('3880126004770513556'); + expect(result.liquidityTokens.toString()).toBe('5880126004770513556'); + }); + it('adjusts the liquidity eth', () => { + expect(position.liquidityEth.toString()).toBe('18133770238433325'); + expect(result.liquidityEth.toString()).toBe('27412120753897325'); + }); + it('adjusts the liquidity eth value', () => { + expect(position.liquidityValue.toString()).toBe('36267540476866650'); + expect(result.liquidityValue.toString()).toBe('54824241507794650'); + }); + it('adjusts the total value', () => { + expect(position.totalValue.toString()).toBe('39442784740050594'); + expect(result.totalValue.toString()).toBe('57999485770978594'); + }); + it('adjusts the value staked', () => { + expect(position.valueStaked.toString()).toBe('38000618670827965'); + expect(result.valueStaked.toString()).toBe('56557319701755965'); + }); + it('adjusts the xSlpBalance', () => { + expect(position.xSlpBalance.toString()).toBe('198809686783688845'); + expect(result.xSlpBalance.toString()).toBe('301285578823925439'); + }); + it('adjusts the slpBalance', () => { + expect(position.slpBalance.toString()).toBe('762809774802693685'); + expect(result.slpBalance.toString()).toBe('865285666842930279'); + }); + it('adjusts the slpSupply', () => { + expect(position.slpSupply.toString()).toBe('936291662031349969'); + expect(result.slpSupply.toString()).toBe('1038767554071586563'); + }); + it('adjusts the APRs', () => { + expect(Math.floor(position.inventoryApr * 10000) / 10000).toBe(0.079); + expect(Math.floor(position.liquidityApr * 10000) / 10000).toBe(0.0967); + expect(Math.floor(result.inventoryApr * 10000) / 10000).toBe(0.079); + expect(Math.floor(result.liquidityApr * 10000) / 10000).toBe(0.0833); + }); + + describe('when there is no liquidity', () => { + let result: Position; + beforeEach(() => { + position = adjustPosition(position, { + lpEth: Zero - position.liquidityEth, + lpNft: Zero - position.liquidityTokens, + }); + result = run(); + }); + + it('adjusts the liquidity share', () => { + expect(position.liquidityShare.toString()).toBe('0'); + expect(result.liquidityShare.toString()).toBe('95053302762792044'); + }); + it('adjusts the liquidity split', () => { + expect(Math.floor(position.liquiditySplit * 10000) / 10000).toBe(0); + expect(Math.floor(result.liquiditySplit * 10000) / 10000).toBe(0.9151); + }); + it('adjusts the liquidity tokens', () => { + expect(position.liquidityTokens.toString()).toBe('0'); + expect(result.liquidityTokens.toString()).toBe('2000000000000000000'); + }); + it('adjusts the liquidity eth', () => { + expect(position.liquidityEth.toString()).toBe('0'); + expect(result.liquidityEth.toString()).toBe('9278350515464000'); + }); + it('adjusts the liquidity eth value', () => { + expect(position.liquidityValue.toString()).toBe('0'); + expect(result.liquidityValue.toString()).toBe('18556701030928000'); + }); + it('adjusts the total value', () => { + expect(position.totalValue.toString()).toBe('3175244263183944'); + expect(result.totalValue.toString()).toBe('21731945294111944'); + }); + it('adjusts the value staked', () => { + expect(position.valueStaked.toString()).toBe('1733078193961315'); + expect(result.valueStaked.toString()).toBe('20289779224889315'); + }); + it('adjusts the xSlpBalance', () => { + expect(position.xSlpBalance.toString()).toBe('0'); + expect(result.xSlpBalance.toString()).toBe('80123601418848767'); + }); + it('adjusts the slpBalance', () => { + expect(position.slpBalance.toString()).toBe('564000088019004840'); + expect(result.slpBalance.toString()).toBe('644123689437853607'); + }); + it('adjusts the slpSupply', () => { + expect(position.slpSupply.toString()).toBe('737481975247661124'); + expect(result.slpSupply.toString()).toBe('817605576666509891'); + }); + it('adjusts the APRs', () => { + expect(Math.floor(position.inventoryApr * 10000) / 10000).toBe(0.079); + expect(Math.floor(position.liquidityApr * 10000) / 10000).toBe(0.1393); + expect(Math.floor(result.inventoryApr * 10000) / 10000).toBe(0.079); + expect(Math.floor(result.liquidityApr * 10000) / 10000).toBe(0.0905); + }); + }); +}); + +describe('add liquidity (SLP)', () => { + let result: Position; + beforeEach(() => { + slp = parseEther('0.5'); + result = run(); + }); + + it('adjusts the liquidity share', () => { + expect(position.liquidityShare.toString()).toBe('212337346198680636'); + expect(result.liquidityShare.toString()).toBe('553376843232682128'); + }); + it('adjusts the liquidity split', () => { + expect(Math.floor(position.liquiditySplit * 10000) / 10000).toBe(0.9127); + expect(Math.floor(result.liquiditySplit * 10000) / 10000).toBe(0.9865); + }); + it('adjusts the liquidity tokens', () => { + expect(position.liquidityTokens.toString()).toBe('3880126004770513556'); + expect(result.liquidityTokens.toString()).toBe('13638518735885803628'); + }); + it('adjusts the liquidity eth', () => { + expect(position.liquidityEth.toString()).toBe('18133770238433325'); + expect(result.liquidityEth.toString()).toBe('63739622075430166'); + }); + it('adjusts the liquidity eth value', () => { + expect(position.liquidityValue.toString()).toBe('36267540476866650'); + expect(result.liquidityValue.toString()).toBe('127479244150860332'); + }); + it('adjusts the total value', () => { + expect(position.totalValue.toString()).toBe('39442784740050594'); + expect(result.totalValue.toString()).toBe('130654488414044276'); + }); + it('adjusts the value staked', () => { + expect(position.valueStaked.toString()).toBe('38000618670827965'); + expect(result.valueStaked.toString()).toBe('129212322344821647'); + }); + it('adjusts the xSlpBalance', () => { + expect(position.xSlpBalance.toString()).toBe('198809686783688845'); + expect(result.xSlpBalance.toString()).toBe('698809686783688845'); + }); + it('adjusts the slpBalance', () => { + expect(position.slpBalance.toString()).toBe('762809774802693685'); + expect(result.slpBalance.toString()).toBe('1262809774802693685'); + }); + it('adjusts the slpSupply', () => { + expect(position.slpSupply.toString()).toBe('936291662031349969'); + expect(result.slpSupply.toString()).toBe('1436291662031349969'); + }); + it('adjusts the APRs', () => { + expect(Math.floor(position.inventoryApr * 10000) / 10000).toBe(0.079); + expect(Math.floor(position.liquidityApr * 10000) / 10000).toBe(0.0967); + expect(Math.floor(result.inventoryApr * 10000) / 10000).toBe(0.079); + expect(Math.floor(result.liquidityApr * 10000) / 10000).toBe(0.0541); + }); +}); + +describe('do nothing', () => { + let result: Position; + beforeEach(() => { + result = run(); + }); + + it('returns the original position values', () => { + expect(result).toEqual(position); + expect(result).not.toBe(position); + }); +}); diff --git a/packages/utils/src/positions/__tests__/test-position.ts b/packages/utils/src/positions/__tests__/test-position.ts new file mode 100644 index 00000000..1a544699 --- /dev/null +++ b/packages/utils/src/positions/__tests__/test-position.ts @@ -0,0 +1,43 @@ +export default { + claimableAmount: BigInt('0x04484f3f75bdd049'), + claimableValue: BigInt('0x051fa474435ce5'), + createdAt: 1625422322, + inventoryApr: 0.07909678196991424, + inventoryLockTime: 604800, + inventoryShare: BigInt('0x90bb3534972bbe'), + inventorySplit: 0.08723468142714468, + inventoryStaked: BigInt('0x8a784a8dedfa07'), + inventoryTokens: BigInt('0x052574b5d33da35a'), + inventoryValue: BigInt('0x062839b61e7963'), + liquidityApr: 0.09672482538396256, + liquidityEth: BigInt('0x406c916580182d'), + liquidityLockTime: 172800, + liquidityPoolId: '0x1974999817733a1c0e3bf7f00edc55060ea501ad', + liquidityShare: BigInt('0x02f25fb0fcb8b43c'), + liquiditySplit: 0.9127653185728554, + liquidityStaked: BigInt('0x025ecf12bc208fd2'), + liquidityTokens: BigInt('0x35d8fa0b261a2294'), + liquidityValue: BigInt('0x80d922cb00305a'), + stakingTokenId: '0x22e7086e37dcd1e9400986d5e2ebace86c0a9f08', + periodFees: BigInt('0x0429d069189e0000'), + poolReserves: { + midPrice: BigInt('0x109a86182cbe2a'), + reserveVtoken: BigInt('0xfd982baa2c29cba0'), + reserveWeth: BigInt('0x012f67895e1047e9'), + tokenId: '0xe944f2b46fcfc9d0e887bbeaad95268d9416d0fd', + derivedEth: '', + }, + slpBalance: BigInt('0x0a960b72da4f6e35'), + slpSupply: BigInt('0x0cfe604e5189e8d1'), + totalValue: BigInt('0x8c2100f56206a2'), + totalValueStaked: BigInt('0x02e9475d4a0e89d9'), + userAddress: '0x6ce798bc8c8c93f3c312644dcbdd2ad6698622c5', + valueStaked: BigInt('0x87015c811ea9bd'), + vaultAddress: '0xe944f2b46fcfc9d0e887bbeaad95268d9416d0fd', + vaultId: '36', + xSlpBalance: BigInt('0x02c2505b56a6008d'), + xSlpSupply: BigInt('0x0a960b72da4f6e35'), + xTokenBalance: BigInt('0x04b705aeb94c1df2'), + xTokenShare: BigInt('0x0f25c2d0791bacb7'), + xTokenSupply: BigInt('0x73bcbb4bf46c1df2'), +}; diff --git a/packages/utils/src/positions/adjustPosition.ts b/packages/utils/src/positions/adjustPosition.ts index 80d1738e..0080a7a2 100644 --- a/packages/utils/src/positions/adjustPosition.ts +++ b/packages/utils/src/positions/adjustPosition.ts @@ -1,5 +1,4 @@ -import type { BigNumber } from '@ethersproject/bignumber'; -import { WeiPerEther, Zero } from '@ethersproject/constants'; +import { WeiPerEther, Zero } from '@nftx/constants'; import type { Position } from '@nftx/types'; import { calculateVaultApr } from '../vaults'; import { @@ -19,13 +18,13 @@ const adjustPosition = ( position: Position, args: { /** Amount of vToken to stake as inventory */ - vToken?: BigNumber; + vToken?: bigint; /** Amount of slp (vTokenWETH) to stake as liquidity */ - slp?: BigNumber; + slp?: bigint; /** Amount of NFTs to stake (must be paired with lpEth) */ - lpNft?: BigNumber; + lpNft?: bigint; /** Amount of ETH to stake (must be paired with lpNft) */ - lpEth?: BigNumber; + lpEth?: bigint; } ): Position => { const { vToken, slp, lpEth, lpNft } = args; @@ -51,20 +50,19 @@ const adjustPosition = ( inventoryApr, liquidityApr, } = position; - const adjustVToken = vToken?.gt(0) || vToken?.lt(0); - const adjustSlp = slp?.gt(0) || slp?.lt(0); + const adjustVToken = vToken != null && vToken !== 0n; + const adjustSlp = slp != null && slp !== 0n; const adjustLp = - lpNft && - lpEth && - (lpNft.gt(0) || lpNft.lt(0) || lpEth.gt(0) || lpEth.lt(0)); + lpNft != null && lpEth != null && (lpNft !== 0n || lpEth !== 0n); const hasAdjustments = adjustLp || adjustSlp || adjustVToken; if (adjustVToken) { - inventoryTokens = inventoryTokens.add(vToken); + inventoryTokens = inventoryTokens + vToken; - const newXTokens = vToken.mul(position.xTokenShare).div(WeiPerEther); - xTokenBalance = xTokenBalance.add(newXTokens); - xTokenSupply = xTokenSupply.add(newXTokens); + const newXTokens = (vToken * position.xTokenShare) / WeiPerEther; + + xTokenBalance = xTokenBalance + newXTokens; + xTokenSupply = xTokenSupply + newXTokens; inventoryShare = calculateInventoryShare({ xTokenSupply, xToken: xTokenBalance, @@ -72,7 +70,7 @@ const adjustPosition = ( [inventorySplit, liquiditySplit] = calculateStakeSplit({ inventoryBalance: inventoryTokens, - liquidityBalance: liquidityTokens.mul(2), + liquidityBalance: liquidityTokens * 2n, }); inventoryValue = calculateInventoryEth({ @@ -83,18 +81,26 @@ const adjustPosition = ( if (adjustSlp) { const newXSlp = slp; - xSlpBalance = xSlpBalance.add(newXSlp); - xSlpSupply = xSlpSupply.add(newXSlp); - slpBalance = slpBalance.add(slp); - slpSupply = slpSupply.add(slp); + xSlpBalance = xSlpBalance + newXSlp; + xSlpSupply = xSlpSupply + newXSlp; + slpBalance = slpBalance + slp; + slpSupply = slpSupply + slp; liquidityShare = calculateLiquidityShare({ xSlp: xSlpBalance, xSlpSupply }); - if (position.xSlpBalance.isZero()) { - liquidityTokens = - poolReserves?.reserveVtoken.mul(liquidityShare).div(WeiPerEther) ?? - Zero; - liquidityEth = - poolReserves?.reserveWeth.mul(liquidityShare).div(WeiPerEther) ?? Zero; + if (position.xSlpBalance === 0n) { + if ( + poolReserves?.reserveVtoken && + poolReserves.reserveWeth && + liquidityShare + ) { + liquidityTokens = + (poolReserves.reserveVtoken * liquidityShare) / WeiPerEther; + liquidityEth = + (poolReserves.reserveWeth * liquidityShare) / WeiPerEther; + } else { + liquidityTokens = Zero; + liquidityEth = Zero; + } } else { const balanceChange = calculatePercentageDifference( position.xSlpBalance, @@ -111,7 +117,7 @@ const adjustPosition = ( [inventorySplit, liquiditySplit] = calculateStakeSplit({ inventoryBalance: inventoryTokens, - liquidityBalance: liquidityTokens.mul(2), + liquidityBalance: liquidityTokens * 2n, }); poolReserves = { @@ -126,29 +132,29 @@ const adjustPosition = ( ), }; const hasLiquidity = - poolReserves.reserveVtoken.gt(0) && poolReserves.reserveWeth.gt(0); + poolReserves.reserveVtoken > Zero && poolReserves.reserveWeth > Zero; // Recalculate the mid price: amount * reserveB / reserveA poolReserves.midPrice = hasLiquidity - ? WeiPerEther.mul(poolReserves.reserveWeth).div( - poolReserves.reserveVtoken - ) + ? (WeiPerEther * poolReserves.reserveWeth) / poolReserves.reserveVtoken : Zero; - liquidityValue = liquidityEth.mul(2); + liquidityValue = liquidityEth * 2n; } if (adjustLp) { - liquidityTokens = liquidityTokens.add(lpNft); - liquidityEth = liquidityEth.add(lpEth); - - if (position.liquidityTokens.isZero()) { - const slpToken = poolReserves?.reserveVtoken?.gt(0) - ? lpNft.mul(slpSupply).div(poolReserves.reserveVtoken) - : lpNft; - const slpWeth = poolReserves?.reserveWeth?.gt(0) - ? lpEth.mul(slpSupply).div(poolReserves.reserveWeth) - : lpEth; - const slpAdded = slpToken.lt(slpWeth) ? slpToken : slpWeth; + liquidityTokens = liquidityTokens + lpNft; + liquidityEth = liquidityEth + lpEth; + + if (position.liquidityTokens === Zero) { + const slpToken = + (poolReserves.reserveVtoken ?? Zero) > Zero + ? (lpNft * slpSupply) / poolReserves.reserveVtoken + : lpNft; + const slpWeth = + (poolReserves.reserveWeth ?? Zero) > Zero + ? (lpEth * slpSupply) / poolReserves.reserveWeth + : lpEth; + const slpAdded = slpToken < slpWeth ? slpToken : slpWeth; xSlpBalance = slpAdded; } else { @@ -159,10 +165,10 @@ const adjustPosition = ( xSlpBalance = increaseByPercentage(xSlpBalance, balanceChange); } - const xSlpDiff = xSlpBalance.sub(position.xSlpBalance); - xSlpSupply = xSlpSupply.add(xSlpDiff); - slpSupply = slpSupply.add(xSlpDiff); - slpBalance = slpBalance.add(xSlpDiff); + const xSlpDiff = xSlpBalance - position.xSlpBalance; + xSlpSupply = xSlpSupply + xSlpDiff; + slpSupply = slpSupply + xSlpDiff; + slpBalance = slpBalance + xSlpDiff; const supplyChange = calculatePercentageDifference( position.xSlpSupply, @@ -183,25 +189,23 @@ const adjustPosition = ( ), }; const hasLiquidity = - poolReserves.reserveVtoken.gt(0) && poolReserves.reserveWeth.gt(0); + poolReserves.reserveVtoken > Zero && poolReserves.reserveWeth > Zero; // Recalculate the mid price: amount * reserveB / reserveA poolReserves.midPrice = hasLiquidity - ? WeiPerEther.mul(poolReserves.reserveWeth).div( - poolReserves.reserveVtoken - ) + ? (WeiPerEther * poolReserves.reserveWeth) / poolReserves.reserveVtoken : Zero; - liquidityValue = liquidityEth.mul(2); + liquidityValue = liquidityEth * 2n; [inventorySplit, liquiditySplit] = calculateStakeSplit({ inventoryBalance: inventoryTokens, - liquidityBalance: liquidityTokens.mul(2), + liquidityBalance: liquidityTokens * 2n, }); } if (hasAdjustments) { - valueStaked = liquidityValue.add(inventoryValue); - totalValue = valueStaked.add(position.claimableValue); + valueStaked = liquidityValue + inventoryValue; + totalValue = valueStaked + position.claimableValue; const newApr = calculateVaultApr({ periodFees: position.periodFees, diff --git a/packages/utils/src/positions/utils.ts b/packages/utils/src/positions/utils.ts index 10822f05..0c7ebc7c 100644 --- a/packages/utils/src/positions/utils.ts +++ b/packages/utils/src/positions/utils.ts @@ -1,33 +1,28 @@ -import { WeiPerEther, Zero } from '@ethersproject/constants'; -import type { BigNumber } from '@ethersproject/bignumber'; -import { formatEther } from '@ethersproject/units'; +import { WeiPerEther, Zero } from '@nftx/constants'; import type { TokenReserve } from '@nftx/types'; +import { formatEther } from 'viem'; export const calculateInventoryEth = ({ inventoryBalance, reserves, }: { - inventoryBalance: BigNumber; + inventoryBalance: bigint; reserves: TokenReserve; }) => { - return ( - inventoryBalance.mul(reserves?.midPrice ?? '0').div(WeiPerEther) ?? Zero - ); + return (inventoryBalance * (reserves?.midPrice ?? 0)) / WeiPerEther; }; export const calculateStakeSplit = ({ inventoryBalance, liquidityBalance, }: { - inventoryBalance: BigNumber; - liquidityBalance: BigNumber; + inventoryBalance: bigint; + liquidityBalance: bigint; }) => { - const totalVTokens = inventoryBalance.add(liquidityBalance); + const totalVTokens = inventoryBalance + liquidityBalance; const inventorySplit = Number( formatEther( - inventoryBalance - .mul(WeiPerEther) - .div(totalVTokens.gt(0) ? totalVTokens : '1') + (inventoryBalance * WeiPerEther) / (totalVTokens > 0 ? totalVTokens : 1n) ) ); const liquiditySplit = 1 - inventorySplit; @@ -39,45 +34,45 @@ export const calculateInventoryShare = ({ xToken, xTokenSupply, }: { - xToken: BigNumber; - xTokenSupply: BigNumber; + xToken: bigint; + xTokenSupply: bigint; }) => { - if (!xToken?.gt(0)) { + if (!xToken || xToken <= 0) { return Zero; } - if (!xTokenSupply?.gt(0)) { + if (!xTokenSupply || xTokenSupply <= 0) { return Zero; } - return xToken.mul(WeiPerEther).div(xTokenSupply); + return (xToken * WeiPerEther) / xTokenSupply; }; export const calculateLiquidityShare = ({ xSlp, xSlpSupply, }: { - xSlp: BigNumber; - xSlpSupply: BigNumber; + xSlp: bigint; + xSlpSupply: bigint; }) => { - if (!xSlp?.gt(0) || !xSlpSupply?.gt(0)) { + if (!xSlp || xSlp <= 0 || !xSlpSupply || xSlp <= 0) { return Zero; } - return xSlp.mul(WeiPerEther).div(xSlpSupply); + return (xSlp * WeiPerEther) / xSlpSupply; }; -export const calculatePercentageDifference = (a: BigNumber, b: BigNumber) => { - if ((a.eq(0) && b.gt(0)) || (b.eq(0) && a.lt(0))) { +export const calculatePercentageDifference = (a: bigint, b: bigint) => { + if ((a === 0n && b > 0n) || (b === 0n && a < 0n)) { return WeiPerEther; - } else if ((a.eq(0) && b.lt(0)) || (b.eq(0) && a.gt(0))) { - return Zero.sub(WeiPerEther); - } else if (a.eq(0) && b.eq(0)) { + } else if ((a === 0n && b < 0n) || (b === 0n && a > 0n)) { + return Zero - WeiPerEther; + } else if (a === 0n && b === 0n) { return Zero; } - const diff = b.sub(a); - const frac = diff.mul(WeiPerEther).div(a); + const diff = b - a; + const frac = (diff * WeiPerEther) / a; return frac; }; -export const increaseByPercentage = (a: BigNumber, perc: BigNumber) => { - return a.add(a.mul(perc).div(WeiPerEther)); +export const increaseByPercentage = (a: bigint, perc: bigint) => { + return a + (a * perc) / WeiPerEther; }; diff --git a/packages/utils/src/staking/fetchMaxInventoryWithdraw.ts b/packages/utils/src/staking/fetchMaxInventoryWithdraw.ts index a7c24d23..48dc6e32 100644 --- a/packages/utils/src/staking/fetchMaxInventoryWithdraw.ts +++ b/packages/utils/src/staking/fetchMaxInventoryWithdraw.ts @@ -1,9 +1,7 @@ -import abi from '@nftx/constants/abis/NFTXUnstakingInventoryZap.json'; -import { parseEther } from '@ethersproject/units'; import { getChainConstant, getContract } from '../web3'; -import type { Provider } from '@ethersproject/providers'; import { NFTX_UNSTAKING_INVENTORY_ZAP } from '@nftx/constants'; -import type { BigNumber } from '@ethersproject/bignumber'; +import { NFTXUnstakingInventoryZap } from '@nftx/abi'; +import type { Address, Provider } from '@nftx/types'; type GetContract = typeof getContract; @@ -16,25 +14,22 @@ export default ({ getContract }: { getContract: GetContract }) => network: number; provider: Provider; vaultId: string; - userAddress: string; - xToken: string; + userAddress: Address; + xToken: Address; }) { const { network, provider, xToken, userAddress, vaultId } = args; const contract = getContract({ - network, provider, - abi, + abi: NFTXUnstakingInventoryZap, address: getChainConstant(NFTX_UNSTAKING_INVENTORY_ZAP, network), }); - const response = await contract.maxNftsUsingXToken( - vaultId, - userAddress, - xToken - ); + const response = await contract.read.maxNftsUsingXToken({ + args: [BigInt(vaultId), userAddress, xToken], + }); - const numNfts: BigNumber = parseEther(`${response.numNfts}`); - const shortByTinyAmount: boolean = response.shortByTinyAmount; + const numNfts = response[0]; + const shortByTinyAmount: boolean = response[1]; return { numNfts, shortByTinyAmount }; }; diff --git a/packages/utils/src/staking/fetchUserTimelock.ts b/packages/utils/src/staking/fetchUserTimelock.ts index 0405558b..638044dd 100644 --- a/packages/utils/src/staking/fetchUserTimelock.ts +++ b/packages/utils/src/staking/fetchUserTimelock.ts @@ -1,10 +1,8 @@ -import type { BigNumber } from '@ethersproject/bignumber'; -import type { Provider } from '@ethersproject/providers'; import config from '@nftx/config'; import { NFTX_INVENTORY_STAKING, NFTX_LP_STAKING } from '@nftx/constants'; -import NftxInventoryStakingAbi from '@nftx/constants/abis/NFTXInventoryStaking.json'; -import NftxLpStakingAbi from '@nftx/constants/abis/NFTXLpStaking.json'; +import { NFTXInventoryStaking, NFTXLpStaking } from '@nftx/abi'; import { getChainConstant, getContract } from '../web3'; +import type { Address, Provider } from '@nftx/types'; /** * For a given vault, returns the date that the user is locked in for staking @@ -17,34 +15,36 @@ const fetchUserTimelock = async ({ }: { network?: number; provider: Provider; - userAddress: string; + userAddress: Address; vaultId: string; }) => { const ipContract = getContract({ - network, provider, - abi: NftxInventoryStakingAbi, + abi: NFTXInventoryStaking, address: getChainConstant(NFTX_INVENTORY_STAKING, network), }); - let inventoryTimelock: number = null; + let inventoryTimelock = 0; try { - const x: BigNumber = await ipContract.timelockUntil(vaultId, userAddress); + const x = await ipContract.read.timelockUntil({ + args: [BigInt(vaultId), userAddress], + }); inventoryTimelock = Number(`${x}`); } catch { // Failed to fetch the timelock } const lpContract = getContract({ - network, provider, - abi: NftxLpStakingAbi, + abi: NFTXLpStaking, address: getChainConstant(NFTX_LP_STAKING, network), }); - let liquidityTimelock: number = null; + let liquidityTimelock = 0; try { - const x: BigNumber = await lpContract.lockedUntil(vaultId, userAddress); + const x = await lpContract.read.lockedUntil({ + args: [BigInt(vaultId), userAddress], + }); liquidityTimelock = Number(`${x}`); } catch { // Failed to fetch timelock diff --git a/packages/utils/src/tokens/__tests__/fetchReservesForTokens.test.ts b/packages/utils/src/tokens/__tests__/fetchReservesForTokens.test.ts new file mode 100644 index 00000000..202d0f04 --- /dev/null +++ b/packages/utils/src/tokens/__tests__/fetchReservesForTokens.test.ts @@ -0,0 +1,91 @@ +import { WETH_TOKEN, Zero } from '@nftx/constants'; +import { parseEther } from 'viem'; +import makeFetchReservesFortokens, { + Response, +} from '../fetchReservesForTokens'; + +let response: Response; +let querySubgraph: jest.Mock; +let fetchReservesForTokens: ReturnType; +let run: () => ReturnType; + +beforeEach(() => { + response = { + tokens: [ + { + id: '', + derivedETH: '', + basePairs: [], + quotePairs: [], + }, + ], + }; + querySubgraph = jest.fn().mockResolvedValue(response); + fetchReservesForTokens = makeFetchReservesFortokens({ querySubgraph }); + run = () => fetchReservesForTokens({ network: 1, tokenAddresses: ['0x'] }); +}); + +it('fetches reserves for a group of tokens', async () => { + const [result] = await run(); + + expect(result).toHaveProperty('tokenId'); + expect(result).toHaveProperty('derivedEth'); + expect(result).toHaveProperty('reserveVtoken'); + expect(result).toHaveProperty('reserveWeth'); +}); + +it('fetches the reserves from the sushi subgraph', async () => { + await run(); + + expect(querySubgraph).toBeCalled(); +}); + +describe('when reserves are TOKEN-ETH', () => { + beforeEach(() => { + response.tokens[0].basePairs[0] = { + id: 'TOKEN-ETH', + reserve0: '10', + reserve1: '1', + token0: { id: '0xTOKEN' }, + token1: { id: WETH_TOKEN[1] }, + }; + }); + + it('allocates the reserve pair', async () => { + const [result] = await run(); + + expect(`${result.reserveVtoken}`).toBe(parseEther('10').toString()); + expect(`${result.reserveWeth}`).toBe(parseEther('1').toString()); + expect(`${result.midPrice}`).toBe(parseEther('0.1').toString()); + }); +}); + +describe('when reserves are WETH-TOKEN', () => { + beforeEach(() => { + response.tokens[0].quotePairs[0] = { + id: 'ETH-TOKEN', + reserve0: '1', + reserve1: '10', + token0: { id: WETH_TOKEN[1] }, + token1: { id: '0xTOKEN' }, + }; + }); + + it('allocates teh reserve pair', async () => { + const [result] = await run(); + + expect(`${result.reserveVtoken}`).toBe(parseEther('10').toString()); + expect(`${result.reserveWeth}`).toBe(parseEther('1').toString()); + expect(`${result.midPrice}`).toBe(parseEther('0.1').toString()); + }); +}); + +describe('when there are no reserves', () => { + it('returns an empty reserve', async () => { + const [result] = await run(); + + expect(result.reserveVtoken).toBe(null); + expect(result.reserveWeth).toBe(null); + expect(result.midPrice).toEqual(Zero); + }); +}); diff --git a/packages/utils/src/tokens/fetchReservesForToken.ts b/packages/utils/src/tokens/fetchReservesForToken.ts index a402b597..54b32d2b 100644 --- a/packages/utils/src/tokens/fetchReservesForToken.ts +++ b/packages/utils/src/tokens/fetchReservesForToken.ts @@ -1,22 +1,31 @@ -import fetchReservesForTokens from './fetchReservesForTokens'; +import type { Address } from '@nftx/types'; +import type fetchReservesForTokens from './fetchReservesForTokens'; + +type FetchReservesForTokens = ReturnType; /** * Fetch token/weth reserves for the given address * The reserves are pulled from the Sushi subgraph * @returns Promise<{@link @nftx/types!TokenReserve}[]> */ -const fetchReservesForToken = async ({ - network, - tokenAddress, -}: { - network: number; - tokenAddress: string; -}) => { - const results = await fetchReservesForTokens({ +const fetchReservesForToken = + ({ + fetchReservesForTokens, + }: { + fetchReservesForTokens: FetchReservesForTokens; + }) => + async ({ network, - tokenAddresses: [tokenAddress], - }); - return results?.[0]; -}; + tokenAddress, + }: { + network: number; + tokenAddress: Address; + }) => { + const results = await fetchReservesForTokens({ + network, + tokenAddresses: [tokenAddress], + }); + return results?.[0]; + }; export default fetchReservesForToken; diff --git a/packages/utils/src/tokens/fetchReservesForTokens.ts b/packages/utils/src/tokens/fetchReservesForTokens.ts index c5606409..79bccaf4 100644 --- a/packages/utils/src/tokens/fetchReservesForTokens.ts +++ b/packages/utils/src/tokens/fetchReservesForTokens.ts @@ -1,31 +1,27 @@ -import { parseEther } from '@ethersproject/units'; -import { WETH_TOKEN } from '@nftx/constants'; +import { WeiPerEther, WETH_TOKEN, Zero } from '@nftx/constants'; import { addressEqual, getChainConstant } from '../web3'; -import { gql, querySubgraph } from '@nftx/subgraph'; -import type { BigNumber } from '@ethersproject/bignumber'; -import { WeiPerEther, Zero } from '@ethersproject/constants'; +import { gql, type querySubgraph } from '@nftx/subgraph'; import { compareByAlpha, toLowerCase } from '../utils'; import config from '@nftx/config'; -import type { TokenReserve } from '@nftx/types'; - -function midQuote( - amountA: BigNumber, - reserveA: BigNumber, - reserveB: BigNumber -) { - if (!amountA.gt(0)) { +import type { Address, BigIntString, TokenReserve } from '@nftx/types'; +import { parseEther } from 'viem'; + +type QuerySubgraph = typeof querySubgraph; + +function midQuote(amountA: bigint, reserveA: bigint, reserveB: bigint) { + if (amountA <= Zero) { return Zero; } - if (!reserveA.gt(0) || !reserveB.gt(0)) { + if (reserveA <= Zero || reserveB <= Zero) { return Zero; } - const amountB = amountA.mul(reserveB).div(reserveA); + const amountB = (amountA * reserveB) / reserveA; return amountB; } -const calcMidPrice = (reserveVtoken: BigNumber, reserveWeth: BigNumber) => { +const calcMidPrice = (reserveVtoken: bigint, reserveWeth: bigint) => { if (reserveVtoken && reserveWeth) { return midQuote(WeiPerEther, reserveVtoken, reserveWeth); } @@ -35,34 +31,34 @@ const calcMidPrice = (reserveVtoken: BigNumber, reserveWeth: BigNumber) => { const LIMIT = 1000; -type TokenPair = { +export type TokenPair = { id?: string; derivedETH: string; basePairs: { id: string; - reserve0: string; - reserve1: string; + reserve0: BigIntString; + reserve1: BigIntString; token0: { - id: string; + id: Address; }; token1: { - id: string; + id: Address; }; }[]; quotePairs: { id: string; - reserve0: string; - reserve1: string; + reserve0: BigIntString; + reserve1: BigIntString; token0: { - id: string; + id: Address; }; token1: { - id: string; + id: Address; }; }[]; }; -type Response = { +export type Response = { tokens: TokenPair[]; }; @@ -76,12 +72,16 @@ function formatTokenReserves(token: TokenPair, network: number): TokenReserve { ); if (wethPair) { - const reserveVtoken = parseEther(wethPair.reserve0 || '0'); - const reserveWeth = parseEther(wethPair.reserve1 || '0'); + const reserveVtoken = parseEther( + (wethPair.reserve0 as BigIntString) || '0' + ); + const reserveWeth = parseEther( + (wethPair.reserve1 as BigIntString) || '0' + ); const midPrice = calcMidPrice(reserveVtoken, reserveWeth); return { - tokenId: token.id, + tokenId: token.id as Address, derivedEth: token.derivedETH || '0', reserveVtoken, reserveWeth, @@ -103,7 +103,7 @@ function formatTokenReserves(token: TokenPair, network: number): TokenReserve { const midPrice = calcMidPrice(reserveVtoken, reserveWeth); return { - tokenId: token.id, + tokenId: token.id as Address, derivedEth: token.derivedETH || '0', reserveVtoken, reserveWeth, @@ -113,10 +113,10 @@ function formatTokenReserves(token: TokenPair, network: number): TokenReserve { } return { - tokenId: token?.id, + tokenId: token?.id as Address, derivedEth: token?.derivedETH, - reserveVtoken: null, - reserveWeth: null, + reserveVtoken: null as any, + reserveWeth: null as any, midPrice: Zero, }; } @@ -126,12 +126,11 @@ function formatTokenReserves(token: TokenPair, network: number): TokenReserve { * The reserves are pulled from the Sushi subgraph * @returns Promise<{@link @nftx/types!TokenReserve}[]> */ -const fetchReservesForTokens = async (args: { - network?: number; - tokenAddresses?: string[]; -}) => { - const { network = config.network, tokenAddresses } = args; - const query = gql`{ +const fetchReservesForTokens = + ({ querySubgraph }: { querySubgraph: QuerySubgraph }) => + async (args: { network?: number; tokenAddresses?: Address[] }) => { + const { network = config.network, tokenAddresses } = args; + const query = gql`{ tokens( first: ${LIMIT}, where: { @@ -164,24 +163,24 @@ const fetchReservesForTokens = async (args: { } } }`; - const response = await querySubgraph({ - url: getChainConstant(config.subgraph.SUSHI_SUBGRAPH, network), - query, - variables: { - tokenAddresses: tokenAddresses - .map(toLowerCase) - .sort((a, b) => compareByAlpha(a, b)), - }, - }); - - const reserves = - response?.tokens?.map( - (token): TokenReserve => formatTokenReserves(token, network) - ) ?? []; - - // TODO: handle cases where more than 1000 tokens are found - - return reserves; -}; + const response = await querySubgraph({ + url: getChainConstant(config.subgraph.SUSHI_SUBGRAPH, network), + query, + variables: { + tokenAddresses: (tokenAddresses ?? []) + .map(toLowerCase) + .sort((a, b) => compareByAlpha(a, b)), + }, + }); + + const reserves = + response?.tokens?.map( + (token): TokenReserve => formatTokenReserves(token, network) + ) ?? []; + + // TODO: handle cases where more than 1000 tokens are found + + return reserves; + }; export default fetchReservesForTokens; diff --git a/packages/utils/src/tokens/index.ts b/packages/utils/src/tokens/index.ts index 72c1542e..6fe29c64 100644 --- a/packages/utils/src/tokens/index.ts +++ b/packages/utils/src/tokens/index.ts @@ -1,2 +1,11 @@ -export { default as fetchReservesForToken } from './fetchReservesForToken'; -export { default as fetchReservesForTokens } from './fetchReservesForTokens'; +import makeFetchReservesForToken from './fetchReservesForToken'; +import makeFetchReservesForTokens from './fetchReservesForTokens'; +import { querySubgraph } from '@nftx/subgraph'; + +export const fetchReservesForTokens = makeFetchReservesForTokens({ + querySubgraph, +}); + +export const fetchReservesForToken = makeFetchReservesForToken({ + fetchReservesForTokens, +}); diff --git a/packages/utils/src/utils.ts b/packages/utils/src/utils.ts index eb91c482..1f7dfd42 100644 --- a/packages/utils/src/utils.ts +++ b/packages/utils/src/utils.ts @@ -7,7 +7,7 @@ export const reduceObj = >( ) => Array<[string, any]> ): any => { return Object.fromEntries( - Object.entries(obj).reduce((acc, [key, value]) => { + Object.entries(obj).reduce((acc: any, [key, value]) => { return fn(acc, key, value); }, []) ) as any; diff --git a/packages/utils/src/vaults/__tests__/calculateVaultApr.test.ts b/packages/utils/src/vaults/__tests__/calculateVaultApr.test.ts new file mode 100644 index 00000000..a431ab01 --- /dev/null +++ b/packages/utils/src/vaults/__tests__/calculateVaultApr.test.ts @@ -0,0 +1,104 @@ +import { Zero } from '@nftx/constants'; +import { parseEther } from 'viem'; +import calculateVaultApr from '../calculateVaultApr'; + +type Args = Parameters[0]; +type Vault = Args['vault']; + +let vault: Vault; +let slpSupply: bigint; +let slpBalance: bigint; +let xTokenSupply: bigint; +let xTokenShare: bigint; +let periodFees: bigint; +let run: () => ReturnType; + +beforeEach(() => { + vault = { + createdAt: Date.now() / 1000 - 60 * 60 * 24 * 365, + reserveVtoken: parseEther('10'), + }; + slpSupply = parseEther('100'); + slpBalance = parseEther('50'); + xTokenShare = parseEther('1'); + xTokenSupply = parseEther('10'); + periodFees = parseEther('5'); + + run = () => + calculateVaultApr({ + periodFees, + slpBalance, + slpSupply, + vault, + xTokenShare, + xTokenSupply, + }); +}); + +describe('when the vault is older than 30 days', () => { + it("returns the vault's 30 day APR rate", () => { + const { inventoryApr, liquidityApr } = run(); + + expect(inventoryApr).toBe(1.2); // 120% + expect(liquidityApr).toBe(4.8); // 480% + }); +}); + +describe('when the vault is less than 30 days old', () => { + beforeEach(() => { + // If we do exactly 10 days ago we sometimes hit rounding/race-condition issues + // due to getPeriodMultiplier using Date.now(), which results in sometimes + // rounding up to 11 days and then only calculating x2 instead of x3 + // So stick to 9 days ago and we get consistent results + vault.createdAt = Date.now() / 1000 - 60 * 60 * 24 * 9; + }); + + it('returns a pro-rata estimate of the 30-day APR', () => { + const { inventoryApr, liquidityApr } = run(); + + // The vault was created ~10 days ago instead of 30+ + // We should therefore be multiplying the fees to get 30 days' worth + // aka tenDaysFees * 3 + expect(inventoryApr).toBe(3.6); // 360% (120% * 3) + expect(liquidityApr).toBe(14.4); // 1,440% (480% * 3) + }); +}); + +describe('when there have been no period fees', () => { + beforeEach(() => { + periodFees = Zero; + }); + + it('returns 0', () => { + const { inventoryApr, liquidityApr } = run(); + + expect(inventoryApr).toBe(0); + expect(liquidityApr).toBe(0); + }); +}); + +describe('when there is no slp balance', () => { + beforeEach(() => { + slpBalance = Zero; + }); + + it('returns a liquidity apr of 0', () => { + const { inventoryApr, liquidityApr } = run(); + + expect(inventoryApr).toBe(1.2); + expect(liquidityApr).toBe(0); + }); +}); + +describe('when there is no xToken', () => { + beforeEach(() => { + xTokenSupply = Zero; + }); + + it('returns an inventory apr of 0', () => { + const { inventoryApr, liquidityApr } = run(); + + expect(inventoryApr).toBe(0); + expect(liquidityApr).toBe(4.8); + }); +}); diff --git a/packages/utils/src/vaults/__tests__/fetchUserVaultBalance.test.ts b/packages/utils/src/vaults/__tests__/fetchUserVaultBalance.test.ts new file mode 100644 index 00000000..f3d16f37 --- /dev/null +++ b/packages/utils/src/vaults/__tests__/fetchUserVaultBalance.test.ts @@ -0,0 +1,85 @@ +import type { Address } from '@nftx/types'; +import { parseEther } from 'viem'; +import makeFetchUserVaultBalance from '../fetchUserVaultBalance'; + +const AddressZero = '0x00'; + +let vaultId: string; +let userAddress: Address; +let response: any; +let fetchUserVaultBalances: jest.Mock; +let balanceOf: jest.Mock; +let fetchUserVaultBalance: ReturnType; +let provider: any; +let run: () => ReturnType; + +beforeEach(() => { + provider = null; + vaultId = '0'; + userAddress = '0x001'; + response = { + slp: [ + { + type: 'vTokenWETH', + vaultId, + address: AddressZero, + }, + ], + xSlp: [ + { + type: 'xTokenWETH', + vaultId, + address: AddressZero, + }, + ], + vTokens: [ + { + type: 'vToken', + vaultId, + address: AddressZero, + }, + ], + xTokens: [ + { + type: 'xToken', + vaultId, + address: AddressZero, + }, + ], + }; + fetchUserVaultBalances = jest.fn().mockResolvedValue(response); + balanceOf = jest.fn().mockResolvedValue(parseEther('1')); + fetchUserVaultBalance = makeFetchUserVaultBalance({ + balanceOf, + fetchUserVaultBalances, + }); + run = () => + fetchUserVaultBalance({ network: 1, provider, userAddress, vaultId }); +}); + +it("returns a list of a user's balances for a specific vault", async () => { + const result = await run(); + + expect(result).toHaveLength(4); +}); + +it('gets the on-chain amount (rather than relying on the subgraph value)', async () => { + await run(); + + expect(balanceOf).toHaveBeenCalledTimes(4); +}); + +describe('when there are no tokens found', () => { + beforeEach(() => { + response.slp = []; + response.xSlp = []; + response.vTokens = []; + response.xTokens = []; + }); + + it('returns an empty array', async () => { + const result = await run(); + + expect(result).toHaveLength(0); + }); +}); diff --git a/packages/utils/src/vaults/__tests__/fetchUserVaultBalances.test.ts b/packages/utils/src/vaults/__tests__/fetchUserVaultBalances.test.ts new file mode 100644 index 00000000..bffbf4fd --- /dev/null +++ b/packages/utils/src/vaults/__tests__/fetchUserVaultBalances.test.ts @@ -0,0 +1,162 @@ +import type { NftxTokenType } from '@nftx/types'; +import { parseEther } from 'viem'; +import makeFetchUserVaultBalances, { + type Response, +} from '../fetchUserVaultBalances'; + +const AddressZero = '0x00'; + +let userAddress: string; +let response: Response; +let querySubgraph: jest.Mock; +let fetchUserVaultBalances: ReturnType; +let run: () => ReturnType; + +beforeEach(() => { + const one = parseEther('1').toString() as `${number}`; + + response = { + account: { + ERC20balances: [ + { + contract: { + asVaultAsset: { + type: 'vToken' as NftxTokenType, + vaultId: '0', + }, + id: AddressZero, + name: 'vToken', + symbol: 'vToken', + }, + valueExact: one, + }, + { + contract: { + asVaultAsset: { + type: 'vTokenWETH' as NftxTokenType, + vaultId: '0', + }, + id: AddressZero, + name: 'vTokenWeth', + symbol: 'vTokenWETH', + }, + valueExact: one, + }, + { + contract: { + asVaultAsset: { + type: 'xToken' as NftxTokenType, + vaultId: '0', + }, + id: AddressZero, + name: 'xToken', + symbol: 'xToken', + }, + valueExact: one, + }, + { + contract: { + asVaultAsset: { + type: 'xTokenWETH' as NftxTokenType, + vaultId: '0', + }, + id: AddressZero, + name: 'xTokenWeth', + symbol: 'xTokenWETH', + }, + valueExact: one, + }, + ], + }, + }; + querySubgraph = jest.fn().mockResolvedValue(response); + fetchUserVaultBalances = makeFetchUserVaultBalances({ querySubgraph }); + userAddress = '0x001'; + + run = () => fetchUserVaultBalances({ network: 1, userAddress }); +}); + +it('fetches balances from the token balance subgraph', async () => { + await run(); + + expect(querySubgraph).toHaveBeenCalled(); +}); + +it('returns the balances grouped by type', async () => { + const result = await run(); + + expect(result).toEqual({ + slp: [ + { + address: AddressZero, + balance: parseEther('1'), + name: 'vTokenWeth', + symbol: 'vTokenWETH', + type: 'vTokenWETH', + vaultId: '0', + }, + ], + vTokens: [ + { + address: AddressZero, + balance: parseEther('1'), + name: 'vToken', + symbol: 'vToken', + type: 'vToken', + vaultId: '0', + }, + ], + xSlp: [ + { + address: AddressZero, + balance: parseEther('1'), + name: 'xTokenWeth', + symbol: 'xTokenWETH', + type: 'xTokenWETH', + vaultId: '0', + }, + ], + xTokens: [ + { + address: AddressZero, + balance: parseEther('1'), + name: 'xToken', + symbol: 'xToken', + type: 'xToken', + vaultId: '0', + }, + ], + }); +}); + +describe('if the value is 0', () => { + beforeEach(() => { + response.account.ERC20balances[0].valueExact = '0'; + }); + + it('excludes it from the response', async () => { + const { vTokens, slp, xSlp, xTokens } = await run(); + + expect(vTokens).toHaveLength(0); + expect(slp).toHaveLength(1); + expect(xSlp).toHaveLength(1); + expect(xTokens).toHaveLength(1); + }); +}); + +describe('when response fails or is empty', () => { + beforeEach(() => { + response.account = null as any; + }); + + it('returns empty groups', async () => { + const response = await run(); + + expect(response).toEqual({ + vTokens: [], + xTokens: [], + slp: [], + xSlp: [], + }); + }); +}); diff --git a/packages/utils/src/vaults/calculateVaultApr.ts b/packages/utils/src/vaults/calculateVaultApr.ts index c0d0352b..6ee8f6ac 100644 --- a/packages/utils/src/vaults/calculateVaultApr.ts +++ b/packages/utils/src/vaults/calculateVaultApr.ts @@ -1,20 +1,19 @@ -import type { BigNumber } from '@ethersproject/bignumber'; -import { WeiPerEther, Zero } from '@ethersproject/constants'; -import { parseEther } from '@ethersproject/units'; +import { WeiPerEther, Zero } from '@nftx/constants'; import type { Vault } from '@nftx/types'; +import { parseEther } from 'viem'; import { toEthersNumber } from '../web3'; const calculatePercentageStaked = ({ balance, supply, }: { - balance: BigNumber; - supply: BigNumber; + balance: bigint; + supply: bigint; }) => { - if (!balance || !supply || balance.eq(0) || supply.eq(0)) { + if (!balance || !supply || balance === Zero || supply === Zero) { return Zero; } - return balance.mul(WeiPerEther).div(supply); + return (balance * WeiPerEther) / supply; }; const calculateLiquidityPoolSize = ({ @@ -22,20 +21,20 @@ const calculateLiquidityPoolSize = ({ slpSupply, slpBalance, }: { - reserveVToken: BigNumber; - slpSupply: BigNumber; - slpBalance: BigNumber; + reserveVToken: bigint; + slpSupply: bigint; + slpBalance: bigint; }) => { const percentageStaked = calculatePercentageStaked({ balance: slpBalance, supply: slpSupply, }); - if (reserveVToken.eq(0) || percentageStaked.eq(0)) { + if (reserveVToken === Zero || percentageStaked === Zero) { return Zero; } - const vToken = reserveVToken.mul(percentageStaked).div(WeiPerEther); + const vToken = (reserveVToken * percentageStaked) / WeiPerEther; return vToken; }; @@ -44,10 +43,10 @@ const calculateInventoryPoolSize = ({ xTokenSupply, xTokenShare, }: { - xTokenSupply: BigNumber; - xTokenShare: BigNumber; + xTokenSupply: bigint; + xTokenShare: bigint; }) => { - const vToken = xTokenSupply.mul(xTokenShare).div(WeiPerEther); + const vToken = (xTokenSupply * xTokenShare) / WeiPerEther; return vToken; }; @@ -68,25 +67,24 @@ const calculateApr = ({ multiplier, createdAt, }: { - vToken: BigNumber; - periodFees: BigNumber; + vToken: bigint; + periodFees: bigint; share: number; multiplier: number; createdAt: number; }) => { let apr = 0; - if (vToken.gt(0) && periodFees.gt(0)) { + if (vToken > Zero && periodFees > Zero) { const periodMultiplier = getPeriodMultiplier(createdAt); // yearly return - const numerator = periodFees - .mul(periodMultiplier) - .mul(parseEther(`${share}`)) - .div(WeiPerEther) - .mul(12); - const denominator = vToken.mul(multiplier); - const result = numerator.mul(WeiPerEther).div(denominator); - apr = toEthersNumber(result); + const numerator = + ((periodFees * BigInt(periodMultiplier) * parseEther(`${share}`)) / + WeiPerEther) * + 12n; + const denominator = vToken * BigInt(multiplier); + const result = (numerator * WeiPerEther) / denominator; + apr = toEthersNumber(result) ?? 0; } return apr; @@ -99,11 +97,11 @@ const calculateApr = ({ */ const calculateVaultApr = (args: { vault: Pick; - slpSupply: BigNumber; - slpBalance: BigNumber; - xTokenSupply: BigNumber; - xTokenShare: BigNumber; - periodFees: BigNumber; + slpSupply: bigint; + slpBalance: bigint; + xTokenSupply: bigint; + xTokenShare: bigint; + periodFees: bigint; }) => { const { vault, diff --git a/packages/utils/src/vaults/fetchUserVaultBalance.ts b/packages/utils/src/vaults/fetchUserVaultBalance.ts index 99f95bf5..96004dd5 100644 --- a/packages/utils/src/vaults/fetchUserVaultBalance.ts +++ b/packages/utils/src/vaults/fetchUserVaultBalance.ts @@ -1,4 +1,4 @@ -import type { Provider } from '@ethersproject/providers'; +import type { Address, Provider, UserVaultBalance } from '@nftx/types'; import type { balanceOf } from '../web3'; import type fetchUserVaultBalances from './fetchUserVaultBalances'; @@ -13,7 +13,8 @@ export default ({ balanceOf: BalanceOf; }) => /** - * Fetches a user's holdings of vToken/xToken/vTokenWETH/xTokenWETH for a specific vault + * Fetches a user's holdings of vToken/xToken/vTokenWETH/xTokenWETH for a specific vault. + * Unlike fetchUserVaultBalances, this method returns an on-chain balance value. */ async function fetchUserVaultBalance({ userAddress, @@ -21,7 +22,7 @@ export default ({ provider, vaultId, }: { - userAddress: string; + userAddress: Address; network: number; provider: Provider; vaultId: string; @@ -35,20 +36,20 @@ export default ({ const xSlp = balances.xSlp.find((x) => x.vaultId === vaultId); const vToken = balances.vTokens.find((x) => x.vaultId === vaultId); const xToken = balances.xTokens.find((x) => x.vaultId === vaultId); + const tokens = [slp, xSlp, vToken, xToken].filter( + Boolean + ) as UserVaultBalance[]; const result = await Promise.all( - [slp, xSlp, vToken, xToken] - .filter(Boolean) - .map(async ({ address, ...rest }) => { - const balance = await balanceOf({ - network, - provider, - ownerAddress: userAddress, - tokenAddress: address, - }); + tokens.map(async ({ address, ...rest }) => { + const balance = await balanceOf({ + provider, + ownerAddress: userAddress, + tokenAddress: address, + }); - return { ...rest, address, balance }; - }) + return { ...rest, address, balance }; + }) ); return result; diff --git a/packages/utils/src/vaults/fetchUserVaultBalances.ts b/packages/utils/src/vaults/fetchUserVaultBalances.ts index 0760c1ef..6817d17b 100644 --- a/packages/utils/src/vaults/fetchUserVaultBalances.ts +++ b/packages/utils/src/vaults/fetchUserVaultBalances.ts @@ -1,11 +1,27 @@ -import { BigNumber } from '@ethersproject/bignumber'; import config from '@nftx/config'; import { gql, type querySubgraph } from '@nftx/subgraph'; -import type { NftxTokenType, UserVaultBalance } from '@nftx/types'; +import type { Address, NftxTokenType, UserVaultBalance } from '@nftx/types'; import { getChainConstant } from '../web3'; type QuerySubgraph = typeof querySubgraph; +export type Response = { + account: { + ERC20balances: Array<{ + contract: { + id: Address; + name: string; + symbol: string; + asVaultAsset: { + type: NftxTokenType; + vaultId: string; + }; + }; + valueExact: `${number}`; + }>; + }; +}; + export default ({ querySubgraph }: { querySubgraph: QuerySubgraph }) => /** * Fetches a user's holdings of vToken/xToken/vTokenWETH/xTokenWETH across all vaults @@ -17,23 +33,6 @@ export default ({ querySubgraph }: { querySubgraph: QuerySubgraph }) => userAddress: string; network: number; }) { - type Response = { - account: { - ERC20balances: Array<{ - contract: { - id: string; - name: string; - symbol: string; - asVaultAsset: { - type: NftxTokenType; - vaultId: string; - }; - }; - valueExact: string; - }>; - }; - }; - const query = gql` { account(id: $userAddress) { @@ -64,13 +63,13 @@ export default ({ querySubgraph }: { querySubgraph: QuerySubgraph }) => const erc20Balances = data?.account?.ERC20balances ?? []; - const balances: UserVaultBalance[] = await Promise.all( - erc20Balances.map(async ({ valueExact, contract }) => { + const balances: Array = erc20Balances.map( + ({ valueExact, contract }) => { if (valueExact === '0') { return null; } - const balance = BigNumber.from(valueExact); + const balance = BigInt(valueExact); return { type: contract.asVaultAsset.type, @@ -80,7 +79,7 @@ export default ({ querySubgraph }: { querySubgraph: QuerySubgraph }) => symbol: contract.symbol, balance, }; - }) + } ); const vTokens: UserVaultBalance[] = []; diff --git a/packages/utils/src/vaults/fetchXTokenShare.ts b/packages/utils/src/vaults/fetchXTokenShare.ts index 4891aec5..8dea47f9 100644 --- a/packages/utils/src/vaults/fetchXTokenShare.ts +++ b/packages/utils/src/vaults/fetchXTokenShare.ts @@ -1,10 +1,8 @@ -import type { Provider } from '@ethersproject/providers'; -import type { BigNumber } from '@ethersproject/bignumber'; -import abi from '@nftx/constants/abis/NFTXInventoryStaking.json'; +import { NFTXInventoryStaking } from '@nftx/abi'; import { NFTX_INVENTORY_STAKING } from '@nftx/constants'; -import getContract from '../web3/getContract'; -import { getChainConstant } from '../web3'; +import { getChainConstant, getContract } from '../web3'; import config from '@nftx/config'; +import type { Provider } from '@nftx/types'; /** * For the given vaultId, returns the xTokenShare. @@ -21,12 +19,13 @@ const fetchXTokenShare = async ({ }) => { const address = getChainConstant(NFTX_INVENTORY_STAKING, network); const contract = getContract({ - network, provider, - abi, + abi: NFTXInventoryStaking, address, }); - const share: BigNumber = await contract.xTokenShareValue(vaultId); + const share = await contract.read.xTokenShareValue({ + args: [BigInt(vaultId)], + }); return share; }; diff --git a/packages/utils/src/vaults/fetchXTokenShares.ts b/packages/utils/src/vaults/fetchXTokenShares.ts index f5aa0f86..35cd81b9 100644 --- a/packages/utils/src/vaults/fetchXTokenShares.ts +++ b/packages/utils/src/vaults/fetchXTokenShares.ts @@ -1,5 +1,5 @@ -import type { Provider } from '@ethersproject/providers'; import config from '@nftx/config'; +import type { Provider } from '@nftx/types'; import fetchXTokenShare from './fetchXTokenShare'; /** @@ -27,7 +27,7 @@ const fetchXTokenShares = async ({ }) ); - return shares.filter(Boolean); + return shares.filter((x): x is { vaultId: string; share: bigint } => !!x); }; export default fetchXTokenShares; diff --git a/packages/utils/src/vaults/utils.ts b/packages/utils/src/vaults/utils.ts index cc3d3b98..af5bc046 100644 --- a/packages/utils/src/vaults/utils.ts +++ b/packages/utils/src/vaults/utils.ts @@ -1,5 +1,6 @@ -import { Zero } from '@ethersproject/constants'; +import { Zero } from '@nftx/constants'; import type { Vault } from '@nftx/types'; +import { addressEqual } from '../web3'; /** Returns whether a vault has swaps enabled (either random or target swaps count) */ export const isVaultSwappable = (vault: { @@ -16,21 +17,21 @@ export const isVaultSwappable = (vault: { export const doesVaultHaveTargetSwapFee = (vault: { fees: Pick; }) => { - return (vault?.fees?.targetSwapFee ?? Zero).isZero() === false; + return (vault?.fees?.targetSwapFee ?? Zero) !== Zero; }; /** Returns whether a vault charges a fee for a random swap */ export const doesVaultHaveRandomSwapFee = (vault: { fees: Pick; }) => { - return (vault?.fees?.randomSwapFee ?? Zero).isZero() === false; + return (vault?.fees?.randomSwapFee ?? Zero) !== Zero; }; /** * Carries out a rudimentary check to see if a vault contains a given search string. */ export const matchVault = ( - vault: Pick, + vault: Pick, search: string ) => { if (!vault || !search) { @@ -41,14 +42,19 @@ export const matchVault = ( vault.token.name.toLowerCase().includes(s) || vault.token.symbol.toLowerCase().includes(s) || vault.asset.name.toLowerCase().includes(s) || - vault.asset.symbol.toLowerCase().includes(s) + vault.asset.symbol.toLowerCase().includes(s) || + addressEqual(vault.id, s) || + vault.vaultId === s || + addressEqual(vault.asset.id, s) ); }; /** * Returns any vaults that match a search string */ -export const searchVaults = >( +export const searchVaults = < + T extends Pick +>( vaults: T[], search: string ) => { diff --git a/packages/utils/src/web3/MulticallContract.ts b/packages/utils/src/web3/MulticallContract.ts deleted file mode 100644 index 575144f3..00000000 --- a/packages/utils/src/web3/MulticallContract.ts +++ /dev/null @@ -1,224 +0,0 @@ -import { - Contract as EthersContract, - ContractInterface, -} from '@ethersproject/contracts'; -import type { Provider } from '@ethersproject/providers'; -import { MULTICALL } from '@nftx/constants'; -import getChainConstant from './getChainConstant'; - -const ABI = [ - 'function aggregate(tuple(address target, bytes callData)[] calls) view returns (uint256 blockNumber, bytes[] returnData)', -]; - -type Res = (res: T) => void; -type Rej = (e: any) => void; - -type Request = { - res: Res; - rej: Rej; - method: string; - args: any[]; - contract: EthersContract; -}; -type Requests = Array; - -const queue: Record = {}; - -let queued = false; - -function warnOnInvalidContractCall({ - contract: { address }, - args, - method, -}: Pick & { - contract: Pick; -}) { - console.warn( - `Invalid contract call: address=${address} method=${method} args=${args}` - ); -} - -/** Directly run a contract method on the contract itself (bypassing multicall) - * equivalent to contract.foo(arg1, arg2) - */ -const singlecall = ({ res, rej, args, method, contract }: Request) => { - return contract[method](...args).then(res, rej); -}; - -/** Encode a request - * Takes the method/args and creates a hex of the data - * returns a tuple of [address, data] - */ -const encode = ({ - args, - method, - contract: { interface: abi, address }, -}: Request) => { - if (!address || !method) { - warnOnInvalidContractCall({ method, args, contract: { address } }); - return undefined; - } - try { - const encoded = abi.encodeFunctionData(method, args); - return [address, encoded] as const; - } catch (e) { - warnOnInvalidContractCall({ method, args, contract: { address } }); - return undefined; - } -}; - -/** decodes a hex string and returns the response data */ -const decode = ( - { contract: { interface: abi }, method }: Request, - data: string -) => { - const decoded = abi.decodeFunctionResult(method, data); - // deep breath - // so when you encode/decode contract calls, you'll always get a tuple back - // but if you were to do the contract call natively with ethers.js - // you would only get a tuple back if the result was actually a tuple - // if a contract method only returns a single value, it would just return that directly - // ideally we want to keep functionally as close to ethers.js's Contract class - // so we attempt to tell if the result is actually a tuple of a single value - // an if it's a single value, unwrap the tuple - const arr = [...decoded]; - if (arr.length === 1) { - return arr[0]; - } - return decoded; -}; - -const multicall = () => { - // if we have calls spread across multiple chains, we need to process them all separately - Object.keys(queue).forEach(async (network) => { - // grab the waiting calls and empty the queue list - const requests = (queue[network] ?? []).splice(0); - if (!requests.length) { - return; - } - if (requests.length === 1) { - // if we only have one call, it'd be an unecessary extra trip to go through the multicall contract - return singlecall(requests[0]); - } - const multicallAddress = getChainConstant(MULTICALL, Number(network), null); - if (multicallAddress == null) { - // Not a supported multicall network - return Promise.all(requests.map((request) => singlecall(request))); - } - // we need a provider, so just use the first request's instance - // I can't think of a scenario where different calls would be using different providers - // unless you used a signer for one request - but MulticallContract should really only be - // used for reads... - const provider = requests[0].contract.provider; - // we use the block number to tag the request, wonder if there's a more efficient way to do this - // as right now this will cause an additional contract call - const blockNumber = await provider.getBlockNumber(); - const contract = new EthersContract(multicallAddress, ABI, provider); - - let results: any[]; - try { - [, results] = await contract.aggregate(requests.map(encode), { - blockTag: blockNumber, - }); - } catch { - // if the entire multicall fails just fall back to single call - requests.forEach(singlecall); - return; - } - - // the requests and results should have a 1:1 match up - requests.forEach((request, i) => { - const { res, rej } = request; - const data = results[i]; - if (data == '0x') { - warnOnInvalidContractCall(request); - rej(null); - return; - } - - try { - res(decode(request, data)); - } catch (e) { - warnOnInvalidContractCall(request); - rej(e); - } - }); - }); -}; - -/** starts the timeout for the multicall fn - * if there is already a timeout, it does nothing - */ -const triggerMulticall = () => { - if (queued) { - return; - } - queued = true; - setTimeout(() => { - queued = false; - multicall(); - }, 100); -}; - -/** creates a request and queues it up - * returns a promise that resolves once the request has been resolved by multicall - */ -const addToQueue = ( - network: number, - contract: EthersContract, - method: string, - args: any[] -) => { - return new Promise((res, rej) => { - queue[network] = queue[network] ?? []; - queue[network].push({ contract, args, method, res, rej }); - triggerMulticall(); - }); -}; - -const wrapContract = (network: number, contract: EthersContract) => { - // instead of returning the actual contract, we actually create a proxy against - // an empty object and then defer all getters to the contract - // if you call a contract method, we intercept it and queue it up for multicall - const proxy = new Proxy( - {}, - { - get(target, prop: string) { - if (typeof contract[prop] !== 'function') { - return contract[prop]; - } - return function (...args: any[]) { - return addToQueue(network, contract, prop, args); - }; - }, - } - ); - - return proxy; -}; - -export interface IMulticallContractClass { - new >( - network: number, - addressOrName: string, - contractInterface: ContractInterface, - provider: Provider - ): IMulticallContract; -} -export type IMulticallContract> = EthersContract & - T; - -class MulticallContract extends EthersContract { - constructor( - network: number, - addressOrName: string, - contractInterface: ContractInterface, - signerOrProvider: any - ) { - super(addressOrName, contractInterface, signerOrProvider); - const wrappedContract = wrapContract(network, this); - return wrappedContract; - } -} - -export default MulticallContract as IMulticallContractClass; diff --git a/packages/utils/src/web3/addressEqual.ts b/packages/utils/src/web3/addressEqual.ts index f2239c7e..1e7e8939 100644 --- a/packages/utils/src/web3/addressEqual.ts +++ b/packages/utils/src/web3/addressEqual.ts @@ -1,8 +1,8 @@ /** Checks if 2 addresses are equal. * This is a rudimentary 0x address comparison function. It doesn't check if the addresses are valid or even defined, just that they are case-insensitivly equal */ -const addressEqual = (a: string, b: string) => { - if (!a || !b) { +const addressEqual = (a: any, b: any) => { + if (typeof a !== 'string' || typeof b !== 'string') { return false; } return a.toLowerCase() === b.toLowerCase(); diff --git a/packages/utils/src/web3/balanceOf.ts b/packages/utils/src/web3/balanceOf.ts index 842715c0..f93b55a2 100644 --- a/packages/utils/src/web3/balanceOf.ts +++ b/packages/utils/src/web3/balanceOf.ts @@ -1,32 +1,23 @@ -import type { Provider } from '@ethersproject/providers'; -import type { BigNumber } from '@ethersproject/bignumber'; -import abi from '@nftx/constants/abis/ERC20.json'; +import { ERC20 } from '@nftx/abi'; import getContract from './getContract'; -import config from '@nftx/config'; +import type { Address, Provider } from '@nftx/types'; /** Return the user's balance of a given token */ const balanceOf = async (args: { - network?: number; provider: Provider; /** The token address */ - tokenAddress: string; + tokenAddress: Address; /** The owner (i.e. the user) whose balance we're fetching */ - ownerAddress: string; + ownerAddress: Address; }) => { - const { - network = config.network, - ownerAddress, - provider, - tokenAddress, - } = args; + const { ownerAddress, provider, tokenAddress } = args; const contract = getContract({ - network, - address: tokenAddress.toLowerCase(), - abi, + address: tokenAddress, + abi: ERC20, provider, }); - const result: BigNumber = await contract.balanceOf(ownerAddress); + const result = await contract.read.balanceOf({ args: [ownerAddress] }); return result; }; diff --git a/packages/utils/src/web3/fromEthersNumber.ts b/packages/utils/src/web3/fromEthersNumber.ts index c50a79d1..68582d1c 100644 --- a/packages/utils/src/web3/fromEthersNumber.ts +++ b/packages/utils/src/web3/fromEthersNumber.ts @@ -1,4 +1,4 @@ -import { parseUnits } from '@ethersproject/units'; +import { parseUnits } from 'viem'; /** Takes a number and returns a BigNumber * Essentially the same as ethers.js's parseEther but accounts for things like decimal precision @@ -22,7 +22,7 @@ const fromEthersNumber = ( } try { - return parseUnits(value, precision); + return parseUnits(value as `${number}`, precision); } catch (e) { console.error(e); return null; diff --git a/packages/utils/src/web3/getContract.ts b/packages/utils/src/web3/getContract.ts index 7c77fa93..2fa4e268 100644 --- a/packages/utils/src/web3/getContract.ts +++ b/packages/utils/src/web3/getContract.ts @@ -1,40 +1,97 @@ -import { ContractInterface, Contract } from '@ethersproject/contracts'; -import type { Provider } from '@ethersproject/providers'; -import config from '@nftx/config'; -import type { Signer } from 'ethers'; -import MulticallContract from './MulticallContract'; - -/** - * Returns an ethers.js contract - * For "read" calls: if multicall is supported and enabled it will return a MulticallContract - */ -const getContract = ({ - network = config.network, +import type { Address, Contract, Provider, Signer } from '@nftx/types'; +import type { Abi } from 'abitype'; +import { getAccount } from 'viem'; + +function getContract(args: { + address: Address; + abi: T; + provider: Provider; +}): Pick, 'read'>; +function getContract(args: { + address: Address; + abi: T; + provider: Provider; + signer: Signer; +}): Contract; +function getContract({ + abi, + address, provider, signer, - address, - abi, - multicall = true, }: { - network?: number; - /** An ethers provider - only required for contract reads */ - provider?: Provider; - /** An ethers signer - only required for contract writes */ + address: Address; + abi: T; + provider: Provider; signer?: Signer; - /** The contract address */ - address: string; - /** The JSON-formatted ABI interface */ - abi: ContractInterface; - /** Whether or not to enable multicall contracts */ - multicall?: boolean; -}): Contract & T => { - if (signer) { - return new Contract(address, abi, signer) as Contract & T; - } - if (multicall && config.contracts.multicall) { - return new MulticallContract(network, address, abi, provider); - } - return new Contract(address, abi, provider) as Contract & T; -}; +}) { + const read = new Proxy({} as Contract['read'], { + get(_target, functionName: any) { + return ({ args = [] }: { args?: any[] }) => { + return provider.readContract({ + abi, + address, + functionName, + args, + } as any); + }; + }, + }); + const write = new Proxy({} as Contract['write'], { + get(_target: any, functionName: any) { + return async (args: any) => { + if (!signer) { + throw new Error('Cannot perform a write operation without a signer'); + } + const [address] = await signer.getAddresses(); + const account = getAccount(address); + + const { request } = await provider.simulateContract({ + address, + abi, + functionName, + account, + ...args, + } as any); + const hash = await signer.writeContract(request as any); + + return { + transactionHash: hash, + wait: () => provider.waitForTransactionReceipt({ hash }), + }; + }; + }, + }); + + const estimate = new Proxy({} as Contract['estimate'], { + get(_target, functionName: any) { + return async (args: any) => { + if (!signer) { + throw new Error('Cannot estimate gas without a signer'); + } + try { + const [address] = await signer.getAddresses(); + const account = getAccount(address); + + const gasEstimate = await provider.estimateContractGas({ + address, + abi, + functionName, + account, + ...args, + } as any); + + return { gasEstimate }; + } catch (e) { + console.error(e); + return { gasEstimate: null }; + } + }; + }, + }); + + const contract = { read, write, estimate }; + + return contract; +} export default getContract; diff --git a/packages/utils/src/web3/index.ts b/packages/utils/src/web3/index.ts index 0e721a67..6e74d388 100644 --- a/packages/utils/src/web3/index.ts +++ b/packages/utils/src/web3/index.ts @@ -5,12 +5,12 @@ export { default as balanceOf } from './balanceOf'; export { default as totalSupply } from './totalSupply'; export { default as getChainConstant } from './getChainConstant'; export { default as fromEthersNumber } from './fromEthersNumber'; -export { default as getContract } from './getContract'; -export { default as MulticallContract } from './MulticallContract'; export { default as parseLogEvent } from './parseLogEvent'; export { default as parseLogEvents } from './parseLogEvents'; export { default as toEthersNumber } from './toEthersNumber'; +export { default as getContract } from './getContract'; export const fetchBlockNumberByTimestamp = makeFetchBlockNumberByTimestamp({ - fetch, + // Fun with possibly-undefined globals! + fetch: typeof fetch !== 'undefined' ? fetch : (undefined as any), }); diff --git a/packages/utils/src/web3/parseLogEvent.ts b/packages/utils/src/web3/parseLogEvent.ts index 9a4482a5..374e790f 100644 --- a/packages/utils/src/web3/parseLogEvent.ts +++ b/packages/utils/src/web3/parseLogEvent.ts @@ -1,25 +1,24 @@ -import type { Log } from '@ethersproject/providers'; +import type { Abi } from 'abitype'; +import type { Log } from 'viem'; import parseLogEvents from './parseLogEvents'; /** Searches an array of transaction logs, parses the found log, and returns its args */ -const parseLogEvent = ({ - interface: iface, +const parseLogEvent = ({ logs, signature, filter, + abi, }: { logs: Log[]; /** The starting characters of the encoded topic i.e. 0x1234 */ signature: string; - /** A string representation of the event's interface - * i.e. event Transfer(address indexed from, address indexed to, uint value) */ - interface: string; /** Optionally filter out logs */ filter?: (log: Log) => boolean; -}): T => { + abi: T; +}) => { try { - const events = parseLogEvents({ - interface: iface, + const events = parseLogEvents({ + abi, logs, signature, filter, diff --git a/packages/utils/src/web3/parseLogEvents.ts b/packages/utils/src/web3/parseLogEvents.ts index 4807c0d0..3e02686b 100644 --- a/packages/utils/src/web3/parseLogEvents.ts +++ b/packages/utils/src/web3/parseLogEvents.ts @@ -1,27 +1,25 @@ -import type { Log } from '@ethersproject/providers'; -import { Interface } from '@ethersproject/abi'; +import type { Abi } from 'abitype'; +import { decodeEventLog, Log } from 'viem'; /** Searches an array of transaction logs, parses the found logs, and returns them */ -const parseLogEvents = ({ - interface: iface, +const parseLogEvents = ({ logs, signature, filter, + abi, }: { logs: Log[]; /** The starting characters of the encoded topic i.e. 0x1234 */ signature: string; - /** A string representation of the event's interface - * i.e. event Transfer(address indexed from, address indexed to, uint value) */ - interface: string; /** Optionally filter out logs */ filter?: (log: Log) => boolean; -}): T => { + abi: T; + // FIXME: currently ts can't handle inferring the return type from viem, it just blows up +}): any[] => { try { - const parser = new Interface([iface]); const events = logs .filter((log) => { - if (!log.topics[0].startsWith(signature)) { + if (!log.topics[0]?.startsWith(signature)) { return false; } if (filter != null && !filter(log)) { @@ -29,12 +27,12 @@ const parseLogEvents = ({ } return true; }) - .map((e) => parser.parseLog(e).args); + .map((log) => decodeEventLog({ abi, ...log }).args); - return events as any as T; + return events; } catch (e) { console.error(e); - return null; + return []; } }; diff --git a/packages/utils/src/web3/toEthersNumber.ts b/packages/utils/src/web3/toEthersNumber.ts index 5d7e723e..b76fde9a 100644 --- a/packages/utils/src/web3/toEthersNumber.ts +++ b/packages/utils/src/web3/toEthersNumber.ts @@ -1,20 +1,18 @@ -import { BigNumber, BigNumberish } from '@ethersproject/bignumber'; -import { WeiPerEther } from '@ethersproject/constants'; -import { formatEther } from '@ethersproject/units'; +import { formatEther, parseEther } from 'viem'; /** Takes a BigNumber and returns a regular number * Essentially the same as formatEther but without the formatting */ const toEthersNumber = ( - val: BigNumberish, + val: bigint | string | number, { precision = 18 }: { precision?: number } = {} ) => { if (val == null) { return null; } try { - const asBigNumber = BigNumber.from(val); - if (asBigNumber.lt(WeiPerEther)) { + const asBigNumber = BigInt(`${val}`); + if (asBigNumber < parseEther('1')) { return Number(formatEther(asBigNumber)); } return Number(`${asBigNumber}`) / 10 ** precision; diff --git a/packages/utils/src/web3/totalSupply.ts b/packages/utils/src/web3/totalSupply.ts index b545ff3d..b49f81a9 100644 --- a/packages/utils/src/web3/totalSupply.ts +++ b/packages/utils/src/web3/totalSupply.ts @@ -1,27 +1,22 @@ -import type { Provider } from '@ethersproject/providers'; -import type { BigNumber } from '@ethersproject/bignumber'; import getContract from './getContract'; -import abi from '@nftx/constants/abis/ERC20.json'; -import config from '@nftx/config'; +import { ERC20 } from '@nftx/abi'; +import type { Address, Provider } from '@nftx/types'; /** Return the total supply of a given token */ const totalSupply = async ({ - network = config.network, provider, tokenAddress, }: { - network?: number; provider: Provider; - tokenAddress: string; + tokenAddress: Address; }) => { const contract = getContract({ - network, - address: tokenAddress.toLowerCase(), + address: tokenAddress, provider, - abi, + abi: ERC20, }); - const supply: BigNumber = await contract.totalSupply(); + const supply = await contract.read.totalSupply({}); return supply; }; diff --git a/packages/utils/src/web3/types.ts b/packages/utils/src/web3/types.ts deleted file mode 100644 index 0679a0c0..00000000 --- a/packages/utils/src/web3/types.ts +++ /dev/null @@ -1 +0,0 @@ -export type Address = string; diff --git a/tsconfig.json b/tsconfig.json index d46712cc..30d07984 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,6 +11,7 @@ "declaration": false, "esModuleInterop": true, "types": ["node", "jest"], - "sourceMap": true + "sourceMap": true, + "strict": true } } diff --git a/yarn.lock b/yarn.lock index d7c35594..5b0ac686 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4,7 +4,7 @@ "@ampproject/remapping@^2.1.0": version "2.2.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== dependencies: "@jridgewell/gen-mapping" "^0.1.0" @@ -12,31 +12,31 @@ "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz" integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== dependencies: "@babel/highlight" "^7.16.7" "@babel/code-frame@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== dependencies: "@babel/highlight" "^7.18.6" "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.10": version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz" integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== "@babel/compat-data@^7.20.0": version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.5.tgz#86f172690b093373a933223b4745deeb6049e733" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz" integrity sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g== "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.17.8", "@babel/core@^7.7.2", "@babel/core@^7.8.0": version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.10.tgz#74ef0fbf56b7dfc3f198fc2d927f4f03e12f4b05" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz" integrity sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA== dependencies: "@ampproject/remapping" "^2.1.0" @@ -57,7 +57,7 @@ "@babel/core@^7.7.5": version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.5.tgz#45e2114dc6cd4ab167f81daf7820e8fa1250d113" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.20.5.tgz" integrity sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ== dependencies: "@ampproject/remapping" "^2.1.0" @@ -78,7 +78,7 @@ "@babel/generator@^7.12.11", "@babel/generator@^7.20.5": version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.5.tgz#cb25abee3178adf58d6814b68517c62bdbfdda95" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz" integrity sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA== dependencies: "@babel/types" "^7.20.5" @@ -87,7 +87,7 @@ "@babel/generator@^7.17.10", "@babel/generator@^7.7.2": version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.10.tgz#c281fa35b0c349bbe9d02916f4ae08fc85ed7189" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz" integrity sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg== dependencies: "@babel/types" "^7.17.10" @@ -96,14 +96,14 @@ "@babel/helper-annotate-as-pure@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz" integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== dependencies: "@babel/types" "^7.16.7" "@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz" integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== dependencies: "@babel/helper-explode-assignable-expression" "^7.16.7" @@ -111,7 +111,7 @@ "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10": version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz#09c63106d47af93cf31803db6bc49fef354e2ebe" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz" integrity sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ== dependencies: "@babel/compat-data" "^7.17.10" @@ -121,7 +121,7 @@ "@babel/helper-compilation-targets@^7.20.0": version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz" integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== dependencies: "@babel/compat-data" "^7.20.0" @@ -131,7 +131,7 @@ "@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6": version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz#71835d7fb9f38bd9f1378e40a4c0902fdc2ea49d" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz" integrity sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" @@ -144,7 +144,7 @@ "@babel/helper-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.0": version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz" integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" @@ -152,7 +152,7 @@ "@babel/helper-define-polyfill-provider@^0.3.1": version "0.3.1" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz" integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== dependencies: "@babel/helper-compilation-targets" "^7.13.0" @@ -166,26 +166,26 @@ "@babel/helper-environment-visitor@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz" integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== dependencies: "@babel/types" "^7.16.7" "@babel/helper-environment-visitor@^7.18.9": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== "@babel/helper-explode-assignable-expression@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" + resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz" integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== dependencies: "@babel/types" "^7.16.7" "@babel/helper-function-name@^7.16.7", "@babel/helper-function-name@^7.17.9": version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz" integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== dependencies: "@babel/template" "^7.16.7" @@ -193,7 +193,7 @@ "@babel/helper-function-name@^7.19.0": version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz" integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== dependencies: "@babel/template" "^7.18.10" @@ -201,42 +201,42 @@ "@babel/helper-hoist-variables@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz" integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== dependencies: "@babel/types" "^7.16.7" "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== dependencies: "@babel/types" "^7.18.6" "@babel/helper-member-expression-to-functions@^7.16.7", "@babel/helper-member-expression-to-functions@^7.17.7": version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz" integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== dependencies: "@babel/types" "^7.17.0" "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz" integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== dependencies: "@babel/types" "^7.16.7" "@babel/helper-module-imports@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== dependencies: "@babel/types" "^7.18.6" "@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.7": version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz" integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== dependencies: "@babel/helper-environment-visitor" "^7.16.7" @@ -250,7 +250,7 @@ "@babel/helper-module-transforms@^7.20.2": version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz" integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== dependencies: "@babel/helper-environment-visitor" "^7.18.9" @@ -264,19 +264,19 @@ "@babel/helper-optimise-call-expression@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz" integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== dependencies: "@babel/types" "^7.16.7" "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz" integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== "@babel/helper-remap-async-to-generator@^7.16.8": version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz" integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" @@ -285,7 +285,7 @@ "@babel/helper-replace-supers@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz" integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== dependencies: "@babel/helper-environment-visitor" "^7.16.7" @@ -296,67 +296,67 @@ "@babel/helper-simple-access@^7.17.7": version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz" integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== dependencies: "@babel/types" "^7.17.0" "@babel/helper-simple-access@^7.20.2": version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz" integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== dependencies: "@babel/types" "^7.20.2" "@babel/helper-skip-transparent-expression-wrappers@^7.16.0": version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz" integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== dependencies: "@babel/types" "^7.16.0" "@babel/helper-split-export-declaration@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz" integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== dependencies: "@babel/types" "^7.16.7" "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== dependencies: "@babel/types" "^7.18.6" "@babel/helper-string-parser@^7.19.4": version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz" integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== "@babel/helper-validator-identifier@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz" integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== "@babel/helper-validator-option@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz" integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== "@babel/helper-validator-option@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== "@babel/helper-wrap-function@^7.16.8": version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz" integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== dependencies: "@babel/helper-function-name" "^7.16.7" @@ -366,7 +366,7 @@ "@babel/helpers@^7.17.9": version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz" integrity sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q== dependencies: "@babel/template" "^7.16.7" @@ -375,7 +375,7 @@ "@babel/helpers@^7.20.5": version "7.20.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.6.tgz#e64778046b70e04779dfbdf924e7ebb45992c763" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz" integrity sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w== dependencies: "@babel/template" "^7.18.10" @@ -384,7 +384,7 @@ "@babel/highlight@^7.16.7": version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz" integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg== dependencies: "@babel/helper-validator-identifier" "^7.16.7" @@ -393,7 +393,7 @@ "@babel/highlight@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== dependencies: "@babel/helper-validator-identifier" "^7.18.6" @@ -402,24 +402,24 @@ "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.10": version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz" integrity sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ== "@babel/parser@^7.18.10", "@babel/parser@^7.2.3", "@babel/parser@^7.20.5", "@babel/parser@^7.9.4": version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.5.tgz#7f3c7335fe417665d929f34ae5dceae4c04015e8" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz" integrity sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz" integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz" integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -428,7 +428,7 @@ "@babel/plugin-proposal-async-generator-functions@^7.16.8": version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz" integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -437,7 +437,7 @@ "@babel/plugin-proposal-class-properties@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz" integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== dependencies: "@babel/helper-create-class-features-plugin" "^7.16.7" @@ -445,7 +445,7 @@ "@babel/plugin-proposal-class-static-block@^7.17.6": version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz" integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA== dependencies: "@babel/helper-create-class-features-plugin" "^7.17.6" @@ -454,7 +454,7 @@ "@babel/plugin-proposal-dynamic-import@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz" integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -462,7 +462,7 @@ "@babel/plugin-proposal-export-namespace-from@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz" integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -470,7 +470,7 @@ "@babel/plugin-proposal-json-strings@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz" integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -478,7 +478,7 @@ "@babel/plugin-proposal-logical-assignment-operators@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz" integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -486,7 +486,7 @@ "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz" integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -494,7 +494,7 @@ "@babel/plugin-proposal-numeric-separator@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz" integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -502,7 +502,7 @@ "@babel/plugin-proposal-object-rest-spread@^7.17.3": version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz" integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== dependencies: "@babel/compat-data" "^7.17.0" @@ -513,7 +513,7 @@ "@babel/plugin-proposal-optional-catch-binding@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz" integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -521,7 +521,7 @@ "@babel/plugin-proposal-optional-chaining@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz" integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -530,7 +530,7 @@ "@babel/plugin-proposal-private-methods@^7.16.11": version "7.16.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz" integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== dependencies: "@babel/helper-create-class-features-plugin" "^7.16.10" @@ -538,7 +538,7 @@ "@babel/plugin-proposal-private-property-in-object@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz" integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" @@ -548,7 +548,7 @@ "@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz" integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.16.7" @@ -556,140 +556,140 @@ "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-bigint@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-class-static-block@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-export-namespace-from@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz" integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-private-property-in-object@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.16.7", "@babel/plugin-syntax-typescript@^7.7.2": version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.10.tgz#80031e6042cad6a95ed753f672ebd23c30933195" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.10.tgz" integrity sha512-xJefea1DWXW09pW4Tm9bjwVlPDyYA2it3fWlmEjpYz6alPvTUjL0EOzNzI/FEOyI3r4/J7uVH5UqKgl1TQ5hqQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-arrow-functions@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz" integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-async-to-generator@^7.16.8": version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz" integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== dependencies: "@babel/helper-module-imports" "^7.16.7" @@ -698,21 +698,21 @@ "@babel/plugin-transform-block-scoped-functions@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz" integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-block-scoping@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz" integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-classes@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz" integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" @@ -726,21 +726,21 @@ "@babel/plugin-transform-computed-properties@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz" integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-destructuring@^7.17.7": version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz#49dc2675a7afa9a5e4c6bdee636061136c3408d1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz" integrity sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz" integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.16.7" @@ -748,14 +748,14 @@ "@babel/plugin-transform-duplicate-keys@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz" integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-exponentiation-operator@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz" integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" @@ -763,14 +763,14 @@ "@babel/plugin-transform-for-of@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz" integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-function-name@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz" integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== dependencies: "@babel/helper-compilation-targets" "^7.16.7" @@ -779,21 +779,21 @@ "@babel/plugin-transform-literals@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz" integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-member-expression-literals@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz" integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-modules-amd@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz" integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== dependencies: "@babel/helper-module-transforms" "^7.16.7" @@ -802,7 +802,7 @@ "@babel/plugin-transform-modules-commonjs@^7.17.9": version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz#274be1a2087beec0254d4abd4d86e52442e1e5b6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz" integrity sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw== dependencies: "@babel/helper-module-transforms" "^7.17.7" @@ -812,7 +812,7 @@ "@babel/plugin-transform-modules-systemjs@^7.17.8": version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz#81fd834024fae14ea78fbe34168b042f38703859" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz" integrity sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw== dependencies: "@babel/helper-hoist-variables" "^7.16.7" @@ -823,7 +823,7 @@ "@babel/plugin-transform-modules-umd@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz" integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== dependencies: "@babel/helper-module-transforms" "^7.16.7" @@ -831,21 +831,21 @@ "@babel/plugin-transform-named-capturing-groups-regex@^7.17.10": version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.10.tgz#715dbcfafdb54ce8bccd3d12e8917296a4ba66a4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.10.tgz" integrity sha512-v54O6yLaJySCs6mGzaVOUw9T967GnH38T6CQSAtnzdNPwu84l2qAjssKzo/WSO8Yi7NF+7ekm5cVbF/5qiIgNA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.17.0" "@babel/plugin-transform-new-target@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz" integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-object-super@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz" integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -853,35 +853,35 @@ "@babel/plugin-transform-parameters@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz" integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-property-literals@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz" integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-react-display-name@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz" integrity sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-react-jsx-development@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz#43a00724a3ed2557ed3f276a01a929e6686ac7b8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz" integrity sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A== dependencies: "@babel/plugin-transform-react-jsx" "^7.16.7" "@babel/plugin-transform-react-jsx@^7.16.7": version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz" integrity sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" @@ -892,7 +892,7 @@ "@babel/plugin-transform-react-pure-annotations@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz#232bfd2f12eb551d6d7d01d13fe3f86b45eb9c67" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz" integrity sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" @@ -900,28 +900,28 @@ "@babel/plugin-transform-regenerator@^7.17.9": version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz#0a33c3a61cf47f45ed3232903683a0afd2d3460c" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz" integrity sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ== dependencies: regenerator-transform "^0.15.0" "@babel/plugin-transform-reserved-words@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz" integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-shorthand-properties@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz" integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-spread@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz" integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -929,28 +929,28 @@ "@babel/plugin-transform-sticky-regex@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz" integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-template-literals@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz" integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-typeof-symbol@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz" integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-typescript@^7.16.7": version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz#591ce9b6b83504903fa9dd3652c357c2ba7a1ee0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz" integrity sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ== dependencies: "@babel/helper-create-class-features-plugin" "^7.16.7" @@ -959,14 +959,14 @@ "@babel/plugin-transform-unicode-escapes@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz" integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-unicode-regex@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz" integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.16.7" @@ -974,7 +974,7 @@ "@babel/preset-env@^7.16.11": version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.17.10.tgz#a81b093669e3eb6541bb81a23173c5963c5de69c" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.17.10.tgz" integrity sha512-YNgyBHZQpeoBSRBg0xixsZzfT58Ze1iZrajvv0lJc70qDDGuGfonEnMGfWeSY0mQ3JTuCWFbMkzFRVafOyJx4g== dependencies: "@babel/compat-data" "^7.17.10" @@ -1054,7 +1054,7 @@ "@babel/preset-modules@^0.1.5": version "0.1.5" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz" integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -1065,7 +1065,7 @@ "@babel/preset-react@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852" + resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz" integrity sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -1077,38 +1077,30 @@ "@babel/preset-typescript@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz#ab114d68bb2020afc069cd51b37ff98a046a70b9" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz" integrity sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-transform-typescript" "^7.16.7" -"@babel/runtime-corejs3@^7.10.2": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz#3d02d0161f0fbf3ada8e88159375af97690f4055" - integrity sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw== +"@babel/runtime@^7.7.6": + version "7.20.6" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.6.tgz" + integrity sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA== dependencies: - core-js-pure "^3.20.2" - regenerator-runtime "^0.13.4" + regenerator-runtime "^0.13.11" -"@babel/runtime@^7.10.2", "@babel/runtime@^7.16.3", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.8.4": version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz" integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.7.6": - version "7.20.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.6.tgz#facf4879bfed9b5326326273a64220f099b0fce3" - integrity sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA== - dependencies: - regenerator-runtime "^0.13.11" - "@babel/template@^7.16.7", "@babel/template@^7.3.3": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz" integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== dependencies: "@babel/code-frame" "^7.16.7" @@ -1117,7 +1109,7 @@ "@babel/template@^7.18.10": version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz" integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== dependencies: "@babel/code-frame" "^7.18.6" @@ -1126,7 +1118,7 @@ "@babel/traverse@^7.1.6", "@babel/traverse@^7.20.1", "@babel/traverse@^7.20.5": version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.5.tgz#78eb244bea8270fdda1ef9af22a5d5e5b7e57133" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz" integrity sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ== dependencies: "@babel/code-frame" "^7.18.6" @@ -1142,7 +1134,7 @@ "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.10", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9", "@babel/traverse@^7.7.2": version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.10.tgz#1ee1a5ac39f4eac844e6cf855b35520e5eb6f8b5" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz" integrity sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw== dependencies: "@babel/code-frame" "^7.16.7" @@ -1158,7 +1150,7 @@ "@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.10", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.10.tgz#d35d7b4467e439fcf06d195f8100e0fea7fc82c4" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz" integrity sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A== dependencies: "@babel/helper-validator-identifier" "^7.16.7" @@ -1166,7 +1158,7 @@ "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.2.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5": version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.5.tgz#e206ae370b5393d94dfd1d04cd687cace53efa84" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz" integrity sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg== dependencies: "@babel/helper-string-parser" "^7.19.4" @@ -1175,12 +1167,12 @@ "@bcoe/v8-coverage@^0.2.3": version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@eslint/eslintrc@^1.2.3": version "1.2.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.3.tgz#fcaa2bcef39e13d6e9e7f6271f4cc7cae1174886" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz" integrity sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA== dependencies: ajv "^6.12.4" @@ -1195,7 +1187,7 @@ "@ethersproject/abi@5.6.1": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.6.1.tgz#f7de888edeb56b0a657b672bdd1b3a1135cd14f7" + resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.6.1.tgz" integrity sha512-0cqssYh6FXjlwKWBmLm3+zH2BNARoS5u/hxbz+LpQmcDB3w0W553h2btWui1/uZp2GBM/SI3KniTuMcYyHpA5w== dependencies: "@ethersproject/address" "^5.6.0" @@ -1208,9 +1200,9 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.0" -"@ethersproject/abi@5.6.2", "@ethersproject/abi@^5.6.0": +"@ethersproject/abi@^5.6.0": version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.6.2.tgz#f2956f2ac724cd720e581759d9e3840cd9744818" + resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.6.2.tgz" integrity sha512-40Ixjhy+YzFtnvzIqFU13FW9hd1gMoLa3cJfSDnfnL4o8EnEG1qLiV8sNJo3sHYi9UYMfFeRuZ7kv5+vhzU7gQ== dependencies: "@ethersproject/address" "^5.6.0" @@ -1225,7 +1217,7 @@ "@ethersproject/abstract-provider@5.6.0", "@ethersproject/abstract-provider@^5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.6.0.tgz#0c4ac7054650dbd9c476cf5907f588bbb6ef3061" + resolved "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.6.0.tgz" integrity sha512-oPMFlKLN+g+y7a79cLK3WiLcjWFnZQtXWgnLAbHZcN3s7L4v90UHpTOrLk+m3yr0gt+/h9STTM6zrr7PM8uoRw== dependencies: "@ethersproject/bignumber" "^5.6.0" @@ -1238,7 +1230,7 @@ "@ethersproject/abstract-signer@5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.0.tgz#9cd7ae9211c2b123a3b29bf47aab17d4d016e3e7" + resolved "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.0.tgz" integrity sha512-WOqnG0NJKtI8n0wWZPReHtaLkDByPL67tn4nBaDAhmVq8sjHTPbCdz4DRhVu/cfTOvfy9w3iq5QZ7BX7zw56BQ== dependencies: "@ethersproject/abstract-provider" "^5.6.0" @@ -1247,9 +1239,9 @@ "@ethersproject/logger" "^5.6.0" "@ethersproject/properties" "^5.6.0" -"@ethersproject/abstract-signer@5.6.1", "@ethersproject/abstract-signer@^5.6.0": +"@ethersproject/abstract-signer@^5.6.0": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.1.tgz#54df786bdf1aabe20d0ed508ec05e0aa2d06674f" + resolved "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.1.tgz" integrity sha512-xhSLo6y0nGJS7NxfvOSzCaWKvWb1TLT7dQ0nnpHZrDnC67xfnWm9NXflTMFPUXXMtjr33CdV0kWDEmnbrQZ74Q== dependencies: "@ethersproject/abstract-provider" "^5.6.0" @@ -1260,7 +1252,7 @@ "@ethersproject/address@5.6.0", "@ethersproject/address@^5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.0.tgz#13c49836d73e7885fc148ad633afad729da25012" + resolved "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.0.tgz" integrity sha512-6nvhYXjbXsHPS+30sHZ+U4VMagFC/9zAk6Gd/h3S21YW4+yfb0WfRtaAIZ4kfM4rrVwqiy284LP0GtL5HXGLxQ== dependencies: "@ethersproject/bignumber" "^5.6.0" @@ -1271,14 +1263,14 @@ "@ethersproject/base64@5.6.0", "@ethersproject/base64@^5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.6.0.tgz#a12c4da2a6fb86d88563216b0282308fc15907c9" + resolved "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.6.0.tgz" integrity sha512-2Neq8wxJ9xHxCF9TUgmKeSh9BXJ6OAxWfeGWvbauPh8FuHEjamgHilllx8KkSd5ErxyHIX7Xv3Fkcud2kY9ezw== dependencies: "@ethersproject/bytes" "^5.6.0" "@ethersproject/basex@5.6.0", "@ethersproject/basex@^5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.6.0.tgz#9ea7209bf0a1c3ddc2a90f180c3a7f0d7d2e8a69" + resolved "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.6.0.tgz" integrity sha512-qN4T+hQd/Md32MoJpc69rOwLYRUXwjTlhHDIeUkUmiN/JyWkkLLMoG0TqvSQKNqZOMgN5stbUYN6ILC+eD7MEQ== dependencies: "@ethersproject/bytes" "^5.6.0" @@ -1286,16 +1278,16 @@ "@ethersproject/bignumber@5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.6.0.tgz#116c81b075c57fa765a8f3822648cf718a8a0e26" + resolved "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.0.tgz" integrity sha512-VziMaXIUHQlHJmkv1dlcd6GY2PmT0khtAqaMctCIDogxkrarMzA9L94KN1NeXqqOfFD6r0sJT3vCTOFSmZ07DA== dependencies: "@ethersproject/bytes" "^5.6.0" "@ethersproject/logger" "^5.6.0" bn.js "^4.11.9" -"@ethersproject/bignumber@5.6.1", "@ethersproject/bignumber@^5.6.0": +"@ethersproject/bignumber@^5.6.0": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.6.1.tgz#d5e0da518eb82ab8d08ca9db501888bbf5f0c8fb" + resolved "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.1.tgz" integrity sha512-UtMeZ3GaUuF9sx2u9nPZiPP3ULcAFmXyvynR7oHl/tPrM+vldZh7ocMsoa1PqKYGnQnqUZJoqxZnGN6J0qdipA== dependencies: "@ethersproject/bytes" "^5.6.0" @@ -1304,21 +1296,21 @@ "@ethersproject/bytes@5.6.1", "@ethersproject/bytes@^5.6.0": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.1.tgz#24f916e411f82a8a60412344bf4a813b917eefe7" + resolved "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.6.1.tgz" integrity sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g== dependencies: "@ethersproject/logger" "^5.6.0" "@ethersproject/constants@5.6.0", "@ethersproject/constants@^5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.6.0.tgz#55e3eb0918584d3acc0688e9958b0cedef297088" + resolved "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.6.0.tgz" integrity sha512-SrdaJx2bK0WQl23nSpV/b1aq293Lh0sUaZT/yYKPDKn4tlAbkH96SPJwIhwSwTsoQQZxuh1jnqsKwyymoiBdWA== dependencies: "@ethersproject/bignumber" "^5.6.0" "@ethersproject/contracts@5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.6.0.tgz#60f2cfc7addd99a865c6c8cfbbcec76297386067" + resolved "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.6.0.tgz" integrity sha512-74Ge7iqTDom0NX+mux8KbRUeJgu1eHZ3iv6utv++sLJG80FVuU9HnHeKVPfjd9s3woFhaFoQGf3B3iH/FrQmgw== dependencies: "@ethersproject/abi" "^5.6.0" @@ -1332,25 +1324,9 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/transactions" "^5.6.0" -"@ethersproject/contracts@5.6.1", "@ethersproject/contracts@^5.6.0": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.6.1.tgz#c0eba3f8a2226456f92251a547344fd0593281d2" - integrity sha512-0fpBBDoPqJMsutE6sNjg6pvCJaIcl7tliMQTMRcoUWDACfjO68CpKOJBlsEhEhmzdnu/41KbrfAeg+sB3y35MQ== - dependencies: - "@ethersproject/abi" "^5.6.0" - "@ethersproject/abstract-provider" "^5.6.0" - "@ethersproject/abstract-signer" "^5.6.0" - "@ethersproject/address" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/constants" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/transactions" "^5.6.0" - "@ethersproject/hash@5.6.0", "@ethersproject/hash@^5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.6.0.tgz#d24446a5263e02492f9808baa99b6e2b4c3429a2" + resolved "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.6.0.tgz" integrity sha512-fFd+k9gtczqlr0/BruWLAu7UAOas1uRRJvOR84uDf4lNZ+bTkGl366qvniUZHKtlqxBRU65MkOobkmvmpHU+jA== dependencies: "@ethersproject/abstract-signer" "^5.6.0" @@ -1364,7 +1340,7 @@ "@ethersproject/hdnode@5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.6.0.tgz#9dcbe8d629bbbcf144f2cae476337fe92d320998" + resolved "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.6.0.tgz" integrity sha512-61g3Jp3nwDqJcL/p4nugSyLrpl/+ChXIOtCEM8UDmWeB3JCAt5FoLdOMXQc3WWkc0oM2C0aAn6GFqqMcS/mHTw== dependencies: "@ethersproject/abstract-signer" "^5.6.0" @@ -1380,9 +1356,9 @@ "@ethersproject/transactions" "^5.6.0" "@ethersproject/wordlists" "^5.6.0" -"@ethersproject/hdnode@5.6.1", "@ethersproject/hdnode@^5.6.0": +"@ethersproject/hdnode@^5.6.0": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.6.1.tgz#37fa1eb91f6e20ca39cc5fcb7acd3da263d85dab" + resolved "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.6.1.tgz" integrity sha512-6IuYDmbH5Bv/WH/A2cUd0FjNr4qTLAvyHAECiFZhNZp69pPvU7qIDwJ7CU7VAkwm4IVBzqdYy9mpMAGhQdwCDA== dependencies: "@ethersproject/abstract-signer" "^5.6.0" @@ -1400,7 +1376,7 @@ "@ethersproject/json-wallets@5.6.0", "@ethersproject/json-wallets@^5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.6.0.tgz#4c2fc27f17e36c583e7a252fb938bc46f98891e5" + resolved "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.6.0.tgz" integrity sha512-fmh86jViB9r0ibWXTQipxpAGMiuxoqUf78oqJDlCAJXgnJF024hOOX7qVgqsjtbeoxmcLwpPsXNU0WEe/16qPQ== dependencies: "@ethersproject/abstract-signer" "^5.6.0" @@ -1419,7 +1395,7 @@ "@ethersproject/keccak256@5.6.0", "@ethersproject/keccak256@^5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.6.0.tgz#fea4bb47dbf8f131c2e1774a1cecbfeb9d606459" + resolved "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.6.0.tgz" integrity sha512-tk56BJ96mdj/ksi7HWZVWGjCq0WVl/QvfhFQNeL8fxhBlGoP+L80uDCiQcpJPd+2XxkivS3lwRm3E0CXTfol0w== dependencies: "@ethersproject/bytes" "^5.6.0" @@ -1427,26 +1403,26 @@ "@ethersproject/logger@5.6.0", "@ethersproject/logger@^5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" + resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.6.0.tgz" integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== "@ethersproject/networks@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.2.tgz#2bacda62102c0b1fcee408315f2bed4f6fbdf336" + resolved "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.6.2.tgz" integrity sha512-9uEzaJY7j5wpYGTojGp8U89mSsgQLc40PCMJLMCnFXTs7nhBveZ0t7dbqWUNrepWTszDbFkYD6WlL8DKx5huHA== dependencies: "@ethersproject/logger" "^5.6.0" -"@ethersproject/networks@5.6.3", "@ethersproject/networks@^5.6.0": +"@ethersproject/networks@^5.6.0": version "5.6.3" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.3.tgz#3ee3ab08f315b433b50c99702eb32e0cf31f899f" + resolved "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.6.3.tgz" integrity sha512-QZxRH7cA5Ut9TbXwZFiCyuPchdWi87ZtVNHWZd0R6YFgYtes2jQ3+bsslJ0WdyDe0i6QumqtoYqvY3rrQFRZOQ== dependencies: "@ethersproject/logger" "^5.6.0" "@ethersproject/pbkdf2@5.6.0", "@ethersproject/pbkdf2@^5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.6.0.tgz#04fcc2d7c6bff88393f5b4237d906a192426685a" + resolved "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.6.0.tgz" integrity sha512-Wu1AxTgJo3T3H6MIu/eejLFok9TYoSdgwRr5oGY1LTLfmGesDoSx05pemsbrPT2gG4cQME+baTSCp5sEo2erZQ== dependencies: "@ethersproject/bytes" "^5.6.0" @@ -1454,14 +1430,14 @@ "@ethersproject/properties@5.6.0", "@ethersproject/properties@^5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.6.0.tgz#38904651713bc6bdd5bdd1b0a4287ecda920fa04" + resolved "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.6.0.tgz" integrity sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg== dependencies: "@ethersproject/logger" "^5.6.0" -"@ethersproject/providers@5.6.5", "@ethersproject/providers@^5.6.2": +"@ethersproject/providers@5.6.5": version "5.6.5" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.6.5.tgz#aefecf78459817a323452e05a16d56afcf807e27" + resolved "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.6.5.tgz" integrity sha512-TRS+c2Ud+cMpWodmGAc9xbnYRPWzRNYt2zkCSnj58nJoamBQ6x4cUbBeo0lTC3y+6RDVIBeJv18OqsDbSktLVg== dependencies: "@ethersproject/abstract-provider" "^5.6.0" @@ -1484,35 +1460,9 @@ bech32 "1.1.4" ws "7.4.6" -"@ethersproject/providers@5.6.7", "@ethersproject/providers@^5.6.4": - version "5.6.7" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.6.7.tgz#1f88ec94febb79a90e33f7e0100354878fb4dabe" - integrity sha512-QG7KLxfYk0FA0ycWATKMM8UzMOfOvchtkN89nNORlPqqhX5zatdamJ506dh5ECk+ybcnCkeVOdStlzrOMkkGOA== - dependencies: - "@ethersproject/abstract-provider" "^5.6.0" - "@ethersproject/abstract-signer" "^5.6.0" - "@ethersproject/address" "^5.6.0" - "@ethersproject/base64" "^5.6.0" - "@ethersproject/basex" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/constants" "^5.6.0" - "@ethersproject/hash" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/networks" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/random" "^5.6.0" - "@ethersproject/rlp" "^5.6.0" - "@ethersproject/sha2" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - "@ethersproject/transactions" "^5.6.0" - "@ethersproject/web" "^5.6.0" - bech32 "1.1.4" - ws "7.4.6" - "@ethersproject/random@5.6.0", "@ethersproject/random@^5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.6.0.tgz#1505d1ab6a250e0ee92f436850fa3314b2cb5ae6" + resolved "https://registry.npmjs.org/@ethersproject/random/-/random-5.6.0.tgz" integrity sha512-si0PLcLjq+NG/XHSZz90asNf+YfKEqJGVdxoEkSukzbnBgC8rydbgbUgBbBGLeHN4kAJwUFEKsu3sCXT93YMsw== dependencies: "@ethersproject/bytes" "^5.6.0" @@ -1520,7 +1470,7 @@ "@ethersproject/rlp@5.6.0", "@ethersproject/rlp@^5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.6.0.tgz#55a7be01c6f5e64d6e6e7edb6061aa120962a717" + resolved "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.6.0.tgz" integrity sha512-dz9WR1xpcTL+9DtOT/aDO+YyxSSdO8YIS0jyZwHHSlAmnxA6cKU3TrTd4Xc/bHayctxTgGLYNuVVoiXE4tTq1g== dependencies: "@ethersproject/bytes" "^5.6.0" @@ -1528,7 +1478,7 @@ "@ethersproject/sha2@5.6.0", "@ethersproject/sha2@^5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.6.0.tgz#364c4c11cc753bda36f31f001628706ebadb64d9" + resolved "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.6.0.tgz" integrity sha512-1tNWCPFLu1n3JM9t4/kytz35DkuF9MxqkGGEHNauEbaARdm2fafnOyw1s0tIQDPKF/7bkP1u3dbrmjpn5CelyA== dependencies: "@ethersproject/bytes" "^5.6.0" @@ -1537,7 +1487,7 @@ "@ethersproject/signing-key@5.6.1", "@ethersproject/signing-key@^5.6.0": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.6.1.tgz#31b0a531520616254eb0465b9443e49515c4d457" + resolved "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.6.1.tgz" integrity sha512-XvqQ20DH0D+bS3qlrrgh+axRMth5kD1xuvqUQUTeezxUTXBOeR6hWz2/C6FBEu39FRytyybIWrYf7YLSAKr1LQ== dependencies: "@ethersproject/bytes" "^5.6.0" @@ -1549,7 +1499,7 @@ "@ethersproject/solidity@5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.6.0.tgz#64657362a596bf7f5630bdc921c07dd78df06dc3" + resolved "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.6.0.tgz" integrity sha512-YwF52vTNd50kjDzqKaoNNbC/r9kMDPq3YzDWmsjFTRBcIF1y4JCQJ8gB30wsTfHbaxgxelI5BfxQSxD/PbJOww== dependencies: "@ethersproject/bignumber" "^5.6.0" @@ -1561,7 +1511,7 @@ "@ethersproject/strings@5.6.0", "@ethersproject/strings@^5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.6.0.tgz#9891b26709153d996bf1303d39a7f4bc047878fd" + resolved "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.6.0.tgz" integrity sha512-uv10vTtLTZqrJuqBZR862ZQjTIa724wGPWQqZrofaPI/kUsf53TBG0I0D+hQ1qyNtllbNzaW+PDPHHUI6/65Mg== dependencies: "@ethersproject/bytes" "^5.6.0" @@ -1570,7 +1520,7 @@ "@ethersproject/transactions@5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.6.0.tgz#4b594d73a868ef6e1529a2f8f94a785e6791ae4e" + resolved "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.0.tgz" integrity sha512-4HX+VOhNjXHZyGzER6E/LVI2i6lf9ejYeWD6l4g50AdmimyuStKc39kvKf1bXWQMg7QNVh+uC7dYwtaZ02IXeg== dependencies: "@ethersproject/address" "^5.6.0" @@ -1583,9 +1533,9 @@ "@ethersproject/rlp" "^5.6.0" "@ethersproject/signing-key" "^5.6.0" -"@ethersproject/transactions@5.6.1", "@ethersproject/transactions@^5.6.0": +"@ethersproject/transactions@^5.6.0": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.6.1.tgz#3091b888fe6b89bd6208ea1e9ee5e4ea91d730a3" + resolved "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.1.tgz" integrity sha512-oIAC7zBCDnjVlEn0KSG1udbqR7hP9FOurxIV/aG+erCdvdvi+QXEZRUtVP9+lu3WYUe8SMYhdAVwNJtD7dZMRw== dependencies: "@ethersproject/address" "^5.6.0" @@ -1598,9 +1548,9 @@ "@ethersproject/rlp" "^5.6.0" "@ethersproject/signing-key" "^5.6.0" -"@ethersproject/units@5.6.0", "@ethersproject/units@^5.6.0": +"@ethersproject/units@5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.6.0.tgz#e5cbb1906988f5740254a21b9ded6bd51e826d9c" + resolved "https://registry.npmjs.org/@ethersproject/units/-/units-5.6.0.tgz" integrity sha512-tig9x0Qmh8qbo1w8/6tmtyrm/QQRviBh389EQ+d8fP4wDsBrJBf08oZfoiz1/uenKK9M78yAP4PoR7SsVoTjsw== dependencies: "@ethersproject/bignumber" "^5.6.0" @@ -1609,7 +1559,7 @@ "@ethersproject/wallet@5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.6.0.tgz#33d11a806d783864208f348709a5a3badac8e22a" + resolved "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.6.0.tgz" integrity sha512-qMlSdOSTyp0MBeE+r7SUhr1jjDlC1zAXB8VD84hCnpijPQiSNbxr6GdiLXxpUs8UKzkDiNYYC5DRI3MZr+n+tg== dependencies: "@ethersproject/abstract-provider" "^5.6.0" @@ -1628,30 +1578,9 @@ "@ethersproject/transactions" "^5.6.0" "@ethersproject/wordlists" "^5.6.0" -"@ethersproject/wallet@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.6.1.tgz#5df4f75f848ed84ca30fd6ca75d2c66b19c5552b" - integrity sha512-oXWoOslEWtwZiViIMlGVjeKDQz/tI7JF9UkyzN9jaGj8z7sXt2SyFMb0Ev6vSAqjIzrCrNrJ/+MkAhtKnGOfZw== - dependencies: - "@ethersproject/abstract-provider" "^5.6.0" - "@ethersproject/abstract-signer" "^5.6.0" - "@ethersproject/address" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/hash" "^5.6.0" - "@ethersproject/hdnode" "^5.6.0" - "@ethersproject/json-wallets" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/random" "^5.6.0" - "@ethersproject/signing-key" "^5.6.0" - "@ethersproject/transactions" "^5.6.0" - "@ethersproject/wordlists" "^5.6.0" - "@ethersproject/web@5.6.0", "@ethersproject/web@^5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.6.0.tgz#4bf8b3cbc17055027e1a5dd3c357e37474eaaeb8" + resolved "https://registry.npmjs.org/@ethersproject/web/-/web-5.6.0.tgz" integrity sha512-G/XHj0hV1FxI2teHRfCGvfBUHFmU+YOSbCxlAMqJklxSa7QMiHFQfAxvwY2PFqgvdkxEKwRNr/eCjfAPEm2Ctg== dependencies: "@ethersproject/base64" "^5.6.0" @@ -1662,7 +1591,7 @@ "@ethersproject/wordlists@5.6.0", "@ethersproject/wordlists@^5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.6.0.tgz#79e62c5276e091d8575f6930ba01a29218ded032" + resolved "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.6.0.tgz" integrity sha512-q0bxNBfIX3fUuAo9OmjlEYxP40IB8ABgb7HjEZCL5IKubzV3j30CWi2rqQbjTS2HfoyQbfINoKcTVWP4ejwR7Q== dependencies: "@ethersproject/bytes" "^5.6.0" @@ -1673,12 +1602,12 @@ "@gar/promisify@^1.1.3": version "1.1.3" - resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== "@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" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz" integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== dependencies: "@humanwhocodes/object-schema" "^1.2.1" @@ -1687,22 +1616,22 @@ "@humanwhocodes/object-schema@^1.2.1": version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@hutson/parse-repository-url@^3.0.0": version "3.0.2" - resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" + resolved "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz" integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== "@isaacs/string-locale-compare@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" + resolved "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz" integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: camelcase "^5.3.1" @@ -1713,12 +1642,12 @@ "@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== "@jest/console@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" + resolved "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz" integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== dependencies: "@jest/types" "^27.5.1" @@ -1730,7 +1659,7 @@ "@jest/core@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" + resolved "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz" integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== dependencies: "@jest/console" "^27.5.1" @@ -1764,7 +1693,7 @@ "@jest/environment@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz" integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== dependencies: "@jest/fake-timers" "^27.5.1" @@ -1774,7 +1703,7 @@ "@jest/fake-timers@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz" integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== dependencies: "@jest/types" "^27.5.1" @@ -1786,7 +1715,7 @@ "@jest/globals@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz" integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== dependencies: "@jest/environment" "^27.5.1" @@ -1795,7 +1724,7 @@ "@jest/reporters@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz" integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== dependencies: "@bcoe/v8-coverage" "^0.2.3" @@ -1826,7 +1755,7 @@ "@jest/source-map@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz" integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== dependencies: callsites "^3.0.0" @@ -1835,7 +1764,7 @@ "@jest/test-result@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz" integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== dependencies: "@jest/console" "^27.5.1" @@ -1845,7 +1774,7 @@ "@jest/test-sequencer@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz" integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== dependencies: "@jest/test-result" "^27.5.1" @@ -1855,7 +1784,7 @@ "@jest/transform@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz" integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== dependencies: "@babel/core" "^7.1.0" @@ -1876,7 +1805,7 @@ "@jest/types@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" + resolved "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz" integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" @@ -1887,7 +1816,7 @@ "@jridgewell/gen-mapping@^0.1.0": version "0.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== dependencies: "@jridgewell/set-array" "^1.0.0" @@ -1895,7 +1824,7 @@ "@jridgewell/gen-mapping@^0.3.2": version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== dependencies: "@jridgewell/set-array" "^1.0.1" @@ -1904,37 +1833,37 @@ "@jridgewell/resolve-uri@3.1.0": version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== "@jridgewell/resolve-uri@^3.0.3": version "3.0.7" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz" integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== "@jridgewell/set-array@^1.0.0": version "1.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz" integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== "@jridgewell/set-array@^1.0.1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== "@jridgewell/sourcemap-codec@1.4.14": version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.13" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz" integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== "@jridgewell/trace-mapping@^0.3.12": version "0.3.17" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz" integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== dependencies: "@jridgewell/resolve-uri" "3.1.0" @@ -1942,7 +1871,7 @@ "@jridgewell/trace-mapping@^0.3.9": version "0.3.10" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.10.tgz#db436f0917d655393851bc258918c00226c9b183" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.10.tgz" integrity sha512-Q0YbBd6OTsXm8Y21+YUSDXupHnodNC2M4O18jtd3iwJ3+vMZNdKGols0a9G6JOK0dcJ3IdUUHoh908ZI6qhk8Q== dependencies: "@jridgewell/resolve-uri" "^3.0.3" @@ -1950,7 +1879,7 @@ "@lerna/add@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/add/-/add-6.1.0.tgz#0f09495c5e1af4c4f316344af34b6d1a91b15b19" + resolved "https://registry.npmjs.org/@lerna/add/-/add-6.1.0.tgz" integrity sha512-f2cAeS1mE/p7QvSRn5TCgdUXw6QVbu8PeRxaTOxTThhTdJIWdXZfY00QjAsU6jw1PdYXK1qGUSwWOPkdR16mBg== dependencies: "@lerna/bootstrap" "6.1.0" @@ -1966,7 +1895,7 @@ "@lerna/bootstrap@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-6.1.0.tgz#81738f32cd431814c9943dfffe28752587d90830" + resolved "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-6.1.0.tgz" integrity sha512-aDxKqgxexVj/Z0B1aPu7P1iPbPqhk1FPkl/iayCmPlkAh90pYEH0uVytGzi1hFB5iXEfG7Pa6azGQywUodx/1g== dependencies: "@lerna/command" "6.1.0" @@ -1994,7 +1923,7 @@ "@lerna/changed@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-6.1.0.tgz#4fa480cbb0e7106ea9dad30d315e953975118d06" + resolved "https://registry.npmjs.org/@lerna/changed/-/changed-6.1.0.tgz" integrity sha512-p7C2tf1scmvoUC1Osck/XIKVKXAQ8m8neL8/rfgKSYsvUVjsOB1LbF5HH1VUZntE6S4OxkRxUQGkAHVf5xrGqw== dependencies: "@lerna/collect-updates" "6.1.0" @@ -2004,7 +1933,7 @@ "@lerna/check-working-tree@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-6.1.0.tgz#b8970fd27a26449b12456d5d0ece60477aa54e15" + resolved "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-6.1.0.tgz" integrity sha512-hSciDmRqsNPevMhAD+SYbnhjatdb7UUu9W8vTyGtUXkrq2xtRZU0vAOgqovV8meirRkbC41pZePYKqyQtF0y3w== dependencies: "@lerna/collect-uncommitted" "6.1.0" @@ -2013,7 +1942,7 @@ "@lerna/child-process@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-6.1.0.tgz#6361f7945cd5b36e983f819de3cd91c315707302" + resolved "https://registry.npmjs.org/@lerna/child-process/-/child-process-6.1.0.tgz" integrity sha512-jhr3sCFeps6Y15SCrWEPvqE64i+QLOTSh+OzxlziCBf7ZEUu7sF0yA4n5bAqw8j43yCKhhjkf/ZLYxZe+pnl3Q== dependencies: chalk "^4.1.0" @@ -2022,7 +1951,7 @@ "@lerna/clean@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-6.1.0.tgz#1114fd90ad82438123726e2493d3550e73abebbc" + resolved "https://registry.npmjs.org/@lerna/clean/-/clean-6.1.0.tgz" integrity sha512-LRK2hiNUiBhPe5tmJiefOVpkaX2Yob0rp15IFNIbuteRWUJg0oERFQo62WvnxwElfzKSOhr8OGuEq/vN4bMrRA== dependencies: "@lerna/command" "6.1.0" @@ -2036,7 +1965,7 @@ "@lerna/cli@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-6.1.0.tgz#41214331fa4c1ea5f41125befdd81b009fe12640" + resolved "https://registry.npmjs.org/@lerna/cli/-/cli-6.1.0.tgz" integrity sha512-p4G/OSPIrHiNkEl8bXrQdFOh4ORAZp2+ljvbXmAxpdf2qmopaUdr+bZYtIAxd+Z42SxRnDNz9IEyR0kOsARRQQ== dependencies: "@lerna/global-options" "6.1.0" @@ -2046,7 +1975,7 @@ "@lerna/collect-uncommitted@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-6.1.0.tgz#b6ffd7adda24d73b70304210967d3518caa3529d" + resolved "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-6.1.0.tgz" integrity sha512-VvWvqDZG+OiF4PwV4Ro695r3+8ty4w+11Bnq8tbsbu5gq8qZiam8Fkc/TQLuNNqP0SPi4qmMPaIzWvSze3SmDg== dependencies: "@lerna/child-process" "6.1.0" @@ -2055,7 +1984,7 @@ "@lerna/collect-updates@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-6.1.0.tgz#75fcc0733b5a9ac318a6484b890aa4061b7859c2" + resolved "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-6.1.0.tgz" integrity sha512-dgH7kgstwCXFctylQ4cxuCmhwSIE6VJZfHdh2bOaLuncs6ATMErKWN/mVuFHuUWEqPDRyy5Ky40Cu9S40nUq5w== dependencies: "@lerna/child-process" "6.1.0" @@ -2066,7 +1995,7 @@ "@lerna/command@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/command/-/command-6.1.0.tgz#bcb12516f2c181822b3b5be46c18eadc9b61e885" + resolved "https://registry.npmjs.org/@lerna/command/-/command-6.1.0.tgz" integrity sha512-OnMqBDaEBY0C8v9CXIWFbGGKgsiUtZrnKVvQRbupMSZDKMpVGWIUd3X98Is9j9MAmk1ynhBMWE9Fwai5ML/mcA== dependencies: "@lerna/child-process" "6.1.0" @@ -2082,7 +2011,7 @@ "@lerna/conventional-commits@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-6.1.0.tgz#1157bb66d84d48880dc5c5026d743cedf0f47094" + resolved "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-6.1.0.tgz" integrity sha512-Tipo3cVr8mNVca4btzrCIzct59ZJWERT8/ZCZ/TQWuI4huUJZs6LRofLtB0xsGJAVZ7Vz2WRXAeH4XYgeUxutQ== dependencies: "@lerna/validation-error" "6.1.0" @@ -2098,7 +2027,7 @@ "@lerna/create-symlink@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-6.1.0.tgz#d4260831f5d10abc0c70f0a8f39bea91db87e640" + resolved "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-6.1.0.tgz" integrity sha512-ulMa5OUJEwEWBHSgCUNGxrcsJllq1YMYWqhufvIigmMPJ0Zv3TV1Hha5i2MsqLJAakxtW0pNuwdutkUTtUdgxQ== dependencies: cmd-shim "^5.0.0" @@ -2107,7 +2036,7 @@ "@lerna/create@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/create/-/create-6.1.0.tgz#cde219da46a7c5062c558366b4ffce2134f13845" + resolved "https://registry.npmjs.org/@lerna/create/-/create-6.1.0.tgz" integrity sha512-ZqlknXu0L29cV5mcfNgBLl+1RbKTWmNk8mj545zgXc7qQDgmrY+EVvrs8Cirey8C7bBpVkzP7Brzze0MSoB4rQ== dependencies: "@lerna/child-process" "6.1.0" @@ -2129,7 +2058,7 @@ "@lerna/describe-ref@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-6.1.0.tgz#60f0b8297b912aa5fe5e6ab8ef6c4127813681a7" + resolved "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-6.1.0.tgz" integrity sha512-0RQAYnxBaMz1SrEb/rhfR+8VeZx5tvCNYKRee5oXIDZdQ2c6/EPyrKCp3WcqiuOWY50SfGOVfxJEcxpK8Y3FNA== dependencies: "@lerna/child-process" "6.1.0" @@ -2137,7 +2066,7 @@ "@lerna/diff@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-6.1.0.tgz#bfa9bc35894d88a33fa0a3a5787082dea45d8cb2" + resolved "https://registry.npmjs.org/@lerna/diff/-/diff-6.1.0.tgz" integrity sha512-GhP+jPDbcp9QcAMSAjFn4lzM8MKpLR1yt5jll+zUD831U1sL0I5t8HUosFroe5MoRNffEL/jHuI3SbC3jjqWjQ== dependencies: "@lerna/child-process" "6.1.0" @@ -2147,7 +2076,7 @@ "@lerna/exec@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-6.1.0.tgz#a2d165576471ff61e33c49952d40a5dbc36fc78f" + resolved "https://registry.npmjs.org/@lerna/exec/-/exec-6.1.0.tgz" integrity sha512-Ej6WlPHXLF6hZHsfD+J/dxeuTrnc0HIfIXR1DU//msHW5RNCdi9+I7StwreCAQH/dLEsdBjPg5chNmuj2JLQRg== dependencies: "@lerna/child-process" "6.1.0" @@ -2160,7 +2089,7 @@ "@lerna/filter-options@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-6.1.0.tgz#f4ee65d0db0273ce490ce6c72c9dbb1d23268ca6" + resolved "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-6.1.0.tgz" integrity sha512-kPf92Z7uLsR6MUiXnyXWebaUWArLa15wLfpfTwIp5H3MNk1lTbuG7QnrxE7OxQj+ozFmBvXeV9fuwfLsYTfmOw== dependencies: "@lerna/collect-updates" "6.1.0" @@ -2170,7 +2099,7 @@ "@lerna/filter-packages@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-6.1.0.tgz#1ddac63a6ffdf5f058d206be5adfb39ad7aaf4f9" + resolved "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-6.1.0.tgz" integrity sha512-zW2avsZHs/ITE/37AEMhegGVHjiD0rgNk9bguNDfz6zaPa90UaW6PWDH6Tf4ThPRlbkl2Go48N3bFYHYSJKbcw== dependencies: "@lerna/validation-error" "6.1.0" @@ -2179,14 +2108,14 @@ "@lerna/get-npm-exec-opts@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-6.1.0.tgz#22351e2ebc4adbef21ca4b86187278e15e4cb38a" + resolved "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-6.1.0.tgz" integrity sha512-10Pdf+W0z7RT34o0SWlf+WVzz2/WbnTIJ1tQqXvXx6soj2L/xGLhOPvhJiKNtl4WlvUiO/zQ91yb83ESP4TZaA== dependencies: npmlog "^6.0.2" "@lerna/get-packed@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-6.1.0.tgz#b6d1c1dd1e068212e784b8dfc2e5fe64741ea8db" + resolved "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-6.1.0.tgz" integrity sha512-lg0wPpV0wPekcD0mebJp619hMxsOgbZDOH5AkL/bCR217391eha0iPhQ0dU/G0Smd2vv6Cg443+J5QdI4LGRTg== dependencies: fs-extra "^9.1.0" @@ -2195,7 +2124,7 @@ "@lerna/github-client@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-6.1.0.tgz#cd33743e4529a0b822ae6716cb4b981e1d8ffe8f" + resolved "https://registry.npmjs.org/@lerna/github-client/-/github-client-6.1.0.tgz" integrity sha512-+/4PtDgsjt0VRRZtOCN2Piyu0asU/16gSZZy/opVb8dlT44lTrH/ZghrJLE4tSL8Nuv688kx0kSgbUG8BY54jQ== dependencies: "@lerna/child-process" "6.1.0" @@ -2206,7 +2135,7 @@ "@lerna/gitlab-client@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-6.1.0.tgz#bbcbf80d937e5980798ac1e0edd1f769101057d8" + resolved "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-6.1.0.tgz" integrity sha512-fUI/ppXzxJafN9ceSl+FDgsYvu3iTsO6UW0WTD63pS32CfM+PiCryLQHzuc4RkyVW8WQH3aCR/GbaKCqbu52bw== dependencies: node-fetch "^2.6.1" @@ -2214,12 +2143,12 @@ "@lerna/global-options@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-6.1.0.tgz#268e1de924369102e47babd9288086764ec6f9e6" + resolved "https://registry.npmjs.org/@lerna/global-options/-/global-options-6.1.0.tgz" integrity sha512-1OyJ/N1XJh3ZAy8S20c6th9C4yBm/k3bRIdC+z0XxpDaHwfNt8mT9kUIDt6AIFCUvVKjSwnIsMHwhzXqBnwYSA== "@lerna/has-npm-version@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-6.1.0.tgz#a5d960213d1a7ca5374eb3c551a17b322b9a9e62" + resolved "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-6.1.0.tgz" integrity sha512-up5PVuP6BmKQ5/UgH/t2c5B1q4HhjwW3/bqbNayX6V0qNz8OijnMYvEUbxFk8fOdeN41qVnhAk0Tb5kbdtYh2A== dependencies: "@lerna/child-process" "6.1.0" @@ -2227,7 +2156,7 @@ "@lerna/import@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/import/-/import-6.1.0.tgz#1c64281e3431c43c9cd140b66a6a51427afe7095" + resolved "https://registry.npmjs.org/@lerna/import/-/import-6.1.0.tgz" integrity sha512-xsBhiKLUavATR32dAFL+WFY0yuab0hsM1eztKtRKk4wy7lSyxRfA5EIUcNCsLXx2xaDOKoMncCTXgNcpeYuqcQ== dependencies: "@lerna/child-process" "6.1.0" @@ -2241,7 +2170,7 @@ "@lerna/info@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/info/-/info-6.1.0.tgz#a5d66a9c1f18398dc020a6f6073c399013081587" + resolved "https://registry.npmjs.org/@lerna/info/-/info-6.1.0.tgz" integrity sha512-CsrWdW/Wyb4kcvHSnrsm7KYWFvjUNItu+ryeyWBZJtWYQOv45jNmWix6j2L4/w1+mMlWMjsfLmBscg82UBrF5w== dependencies: "@lerna/command" "6.1.0" @@ -2250,7 +2179,7 @@ "@lerna/init@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/init/-/init-6.1.0.tgz#b178775693b9c38c0f3fe3300eeb574cf76e0297" + resolved "https://registry.npmjs.org/@lerna/init/-/init-6.1.0.tgz" integrity sha512-z8oUeVjn+FQYAtepAw6G47cGodLyBAyNoEjO3IsJjQLWE1yH3r83L2sjyD/EckgR3o2VTEzrKo4ArhxLp2mNmg== dependencies: "@lerna/child-process" "6.1.0" @@ -2262,7 +2191,7 @@ "@lerna/link@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/link/-/link-6.1.0.tgz#f6f0cfd0b02aecdeb304ce614e4e4e89fe0a3ad5" + resolved "https://registry.npmjs.org/@lerna/link/-/link-6.1.0.tgz" integrity sha512-7OD2lYNQHl6Kl1KYmplt8KoWjVHdiaqpYqwD38AwcB09YN58nGmo4aJgC12Fdx8DSNjkumgM0ROg/JOjMCTIzQ== dependencies: "@lerna/command" "6.1.0" @@ -2274,7 +2203,7 @@ "@lerna/list@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/list/-/list-6.1.0.tgz#a7625bceb5224c4bf1154e715c07ea29f9698bac" + resolved "https://registry.npmjs.org/@lerna/list/-/list-6.1.0.tgz" integrity sha512-7/g2hjizkvVnBGpVm+qC7lUFGhZ/0GIMUbGQwnE6yXDGm8yP9aEcNVkU4JGrDWW+uIklf9oodnMHaLXd/FJe6Q== dependencies: "@lerna/command" "6.1.0" @@ -2284,7 +2213,7 @@ "@lerna/listable@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-6.1.0.tgz#2510045fde7bc568b18172a5d24372a719bb5c4c" + resolved "https://registry.npmjs.org/@lerna/listable/-/listable-6.1.0.tgz" integrity sha512-3KZ9lQ9AtNfGNH/mYJYaMKCiF2EQvLLBGYkWHeIzIs6foegcZNXe0Cyv3LNXuo5WslMNr5RT4wIgy3BOoAxdtg== dependencies: "@lerna/query-graph" "6.1.0" @@ -2293,7 +2222,7 @@ "@lerna/log-packed@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-6.1.0.tgz#18ae946e8b7881f2fc5b973cc6682cc599b1759b" + resolved "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-6.1.0.tgz" integrity sha512-Sq2HZJAcPuoNeEHeIutcPYQCyWBxLyVGvEhgsP3xTe6XkBGQCG8piCp9wX+sc2zT+idPdpI6qLqdh85yYIMMhA== dependencies: byte-size "^7.0.0" @@ -2303,7 +2232,7 @@ "@lerna/npm-conf@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-6.1.0.tgz#79697260c9d14ffb9d892927f37fcde75b89ec58" + resolved "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-6.1.0.tgz" integrity sha512-+RD3mmJe9XSQj7Diibs0+UafAHPcrFCd29ODpDI+tzYl4MmYZblfrlL6mbSCiVYCZQneQ8Uku3P0r+DlbYBaFw== dependencies: config-chain "^1.1.12" @@ -2311,7 +2240,7 @@ "@lerna/npm-dist-tag@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-6.1.0.tgz#29f843aa628687a29dc3a9b905dd3002db7a3820" + resolved "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-6.1.0.tgz" integrity sha512-1zo+Yww/lvWJWZnEXpke9dZSb5poDzhUM/pQNqAQYSlbZ96o18SuCR6TEi5isMPiw63Aq1MMzbUqttQfJ11EOA== dependencies: "@lerna/otplease" "6.1.0" @@ -2321,7 +2250,7 @@ "@lerna/npm-install@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-6.1.0.tgz#b75d1f152540a144bd6c81586a9f6010ed7f3046" + resolved "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-6.1.0.tgz" integrity sha512-1SHmOHZA1YJuUctLQBRjA2+yMp+UNYdOBsFb3xUVT7MjWnd1Zl0toT3jxGu96RNErD9JKkk/cGo/Aq+DU3s9pg== dependencies: "@lerna/child-process" "6.1.0" @@ -2334,7 +2263,7 @@ "@lerna/npm-publish@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-6.1.0.tgz#8fe561e639e6a06380354271aeca7cbc39acf7dd" + resolved "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-6.1.0.tgz" integrity sha512-N0LdR1ImZQw1r4cYaKtVbBhBPtj4Zu9NbvygzizEP5HuTfxZmE1Ans3w93Kks9VTXZXob8twNbXnzBwzTyEpEA== dependencies: "@lerna/otplease" "6.1.0" @@ -2348,7 +2277,7 @@ "@lerna/npm-run-script@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-6.1.0.tgz#bc5bd414ee9696168d88d8ce78f8e8b715967100" + resolved "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-6.1.0.tgz" integrity sha512-7p13mvdxdY5+VqWvvtMsMDeyCRs0PrrTmSHRO+FKuLQuGhBvUo05vevcMEOQNDvEvl/tXPrOVbeGCiGubYTCLg== dependencies: "@lerna/child-process" "6.1.0" @@ -2357,21 +2286,21 @@ "@lerna/otplease@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-6.1.0.tgz#d25dbe2d867215b69f06de12ab4ff559d83d1d01" + resolved "https://registry.npmjs.org/@lerna/otplease/-/otplease-6.1.0.tgz" integrity sha512-gqSE6IbaD4IeNJePkaDLaFLoGp0Ceu35sn7z0AHAOoHiQGGorOmvM+h1Md3xZZRSXQmY9LyJVhG5eRa38SoG4g== dependencies: "@lerna/prompt" "6.1.0" "@lerna/output@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/output/-/output-6.1.0.tgz#d470146c6ee8ee063fd416081c1ca64fb132c4d8" + resolved "https://registry.npmjs.org/@lerna/output/-/output-6.1.0.tgz" integrity sha512-mgCIzLKIuroytXuxjTB689ERtpfgyNXW0rMv9WHOa6ufQc+QJPjh3L4jVsOA0l+/OxZyi97PUXotduNj+0cbnA== dependencies: npmlog "^6.0.2" "@lerna/pack-directory@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-6.1.0.tgz#3252ba7250d826b9922238c775abf5004e7580c4" + resolved "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-6.1.0.tgz" integrity sha512-Xsixqm2nkGXs9hvq08ClbGpRlCYnlBV4TwSrLttIDL712RlyXoPe2maJzTUqo9OXBbOumFSahUEInCMT2OS05g== dependencies: "@lerna/get-packed" "6.1.0" @@ -2384,7 +2313,7 @@ "@lerna/package-graph@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-6.1.0.tgz#2373617605f48f53b5fa9d13188838b6c09022b0" + resolved "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-6.1.0.tgz" integrity sha512-yGyxd/eHTDjkpnBbDhTV0hwKF+i01qZc+6/ko65wOsh8xtgqpQeE6mtdgbvsLKcuMcIQ7PDy1ntyIv9phg14gQ== dependencies: "@lerna/prerelease-id-from-version" "6.1.0" @@ -2395,7 +2324,7 @@ "@lerna/package@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/package/-/package-6.1.0.tgz#e9e33876c0509a86c1b676045b19fd3f7f1c77e2" + resolved "https://registry.npmjs.org/@lerna/package/-/package-6.1.0.tgz" integrity sha512-PyNFtdH2IcLasp/nyMDshmeXotriOSlhbeFIxhdl1XuGj5v1so3utMSOrJMO5kzZJQg5zyx8qQoxL+WH/hkrVQ== dependencies: load-json-file "^6.2.0" @@ -2404,14 +2333,14 @@ "@lerna/prerelease-id-from-version@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-6.1.0.tgz#4ee5beeef4e81d77001e94ec5613c140b6615616" + resolved "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-6.1.0.tgz" integrity sha512-ngC4I6evvZztB6aOaSDEnhUgRTlqX3TyBXwWwLGTOXCPaCQBTPaLNokhmRdJ+ZVdZ4iHFbzEDSL07ubZrYUcmQ== dependencies: semver "^7.3.4" "@lerna/profiler@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-6.1.0.tgz#aae2249f1a39c79db72a548ce50bf32f86a0f3a5" + resolved "https://registry.npmjs.org/@lerna/profiler/-/profiler-6.1.0.tgz" integrity sha512-WFDQNpuqPqMJLg8llvrBHF8Ib5Asgp23lMeNUe89T62NUX6gkjVBTYdjsduxM0tZH6Pa0GAGaQcha97P6fxfdQ== dependencies: fs-extra "^9.1.0" @@ -2420,7 +2349,7 @@ "@lerna/project@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/project/-/project-6.1.0.tgz#605afe28fb15d8b8b890fafe0ec1da2700964056" + resolved "https://registry.npmjs.org/@lerna/project/-/project-6.1.0.tgz" integrity sha512-EOkfjjrTM16c3GUxGqcfYD2stV35p9mBEmkF41NPmyjfbzjol/irDF1r6Q7BsQSRsdClMJRCeZ168xdSxC2X0A== dependencies: "@lerna/package" "6.1.0" @@ -2439,7 +2368,7 @@ "@lerna/prompt@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-6.1.0.tgz#98e228220428d33620822f77e39f592ce29c776c" + resolved "https://registry.npmjs.org/@lerna/prompt/-/prompt-6.1.0.tgz" integrity sha512-981J/C53TZ2l2mFVlWJN7zynSzf5GEHKvKQa12Td9iknhASZOuwTAWb6eq46246Ant6W5tWwb0NSPu3I5qtcrA== dependencies: inquirer "^8.2.4" @@ -2447,7 +2376,7 @@ "@lerna/publish@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-6.1.0.tgz#9d62c327bc3541a0430951d726b39a2fb17b7925" + resolved "https://registry.npmjs.org/@lerna/publish/-/publish-6.1.0.tgz" integrity sha512-XtvuydtU0IptbAapLRgoN1AZj/WJR+e3UKnx9BQ1Dwc+Fpg2oqPxR/vi+6hxAsr95pdQ5CnWBdgS+dg2wEUJ7Q== dependencies: "@lerna/check-working-tree" "6.1.0" @@ -2481,21 +2410,21 @@ "@lerna/pulse-till-done@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-6.1.0.tgz#df0112a9a5b8547b53d18742ce21104eb360d731" + resolved "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-6.1.0.tgz" integrity sha512-a2RVT82E4R9nVXtehzp2TQL6iXp0QfEM3bu8tBAR/SfI1A9ggZWQhuuUqtRyhhVCajdQDOo7rS0UG7R5JzK58w== dependencies: npmlog "^6.0.2" "@lerna/query-graph@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-6.1.0.tgz#e78c47c78d4691231fc379570e036bc2753cf6fa" + resolved "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-6.1.0.tgz" integrity sha512-YkyCc+6aR7GlCOcZXEKPcl5o5L2v+0YUNs59JrfAS0mctFosZ/2tP7pkdu2SI4qXIi5D0PMNsh/0fRni56znsQ== dependencies: "@lerna/package-graph" "6.1.0" "@lerna/resolve-symlink@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-6.1.0.tgz#5a8686b99c838bc6e869930e5b5fd582607ebbe7" + resolved "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-6.1.0.tgz" integrity sha512-8ILO+h5fsE0q8MSLfdL+MT1GEsNhAB1fDyMkSsYgLRCsssN/cViZbffpclZyT/EfAhpyKfBCHZ0CmT1ZGofU1A== dependencies: fs-extra "^9.1.0" @@ -2504,7 +2433,7 @@ "@lerna/rimraf-dir@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-6.1.0.tgz#75559585d5921563eff0e206bb9ec8ab0cc967c6" + resolved "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-6.1.0.tgz" integrity sha512-J9YeGHkCCeAIzsnKURYeGECBexiIii6HA+Bbd+rAgoKPsNCOj6ql4+qJE8Jbd7fQEFNDPQeBCYvM7JcdMc0WSA== dependencies: "@lerna/child-process" "6.1.0" @@ -2514,7 +2443,7 @@ "@lerna/run-lifecycle@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-6.1.0.tgz#e1fa6cd300842ef1d688af77648fed05ec2d5345" + resolved "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-6.1.0.tgz" integrity sha512-GbTdKxL+hWHEPgyBEKtqY9Nf+jFlt6YLtP5VjEVc5SdLkm+FeRquar9/YcZVUbzr3c+NJwWNgVjHuePfowdpUA== dependencies: "@lerna/npm-conf" "6.1.0" @@ -2524,7 +2453,7 @@ "@lerna/run-topologically@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-6.1.0.tgz#8f1a428b5d4b800bced178edabfa2262b328572f" + resolved "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-6.1.0.tgz" integrity sha512-kpTaSBKdKjtf61be8Z1e7TIaMt/aksfxswQtpFxEuKDsPsdHfR8htSkADO4d/3SZFtmcAHIHNCQj9CaNj4O4Xw== dependencies: "@lerna/query-graph" "6.1.0" @@ -2532,7 +2461,7 @@ "@lerna/run@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/run/-/run-6.1.0.tgz#efaea1acc78cb7fc73b4906be70002e118628d64" + resolved "https://registry.npmjs.org/@lerna/run/-/run-6.1.0.tgz" integrity sha512-vlEEKPcTloiob6EK7gxrjEdB6fQQ/LNfWhSJCGxJlvNVbrMpoWIu0Kpp20b0nE+lzX7rRJ4seWr7Wdo/Fjub4Q== dependencies: "@lerna/command" "6.1.0" @@ -2548,7 +2477,7 @@ "@lerna/symlink-binary@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-6.1.0.tgz#7d476499b86ae5fcb853c510603cff9a27acf105" + resolved "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-6.1.0.tgz" integrity sha512-DaiRNZk/dvomNxgEaTW145PyL7vIGP7rvnfXV2FO+rjX8UUSNUOjmVmHlYfs64gV9Eqx/dLfQClIbKcwYMD83A== dependencies: "@lerna/create-symlink" "6.1.0" @@ -2558,7 +2487,7 @@ "@lerna/symlink-dependencies@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-6.1.0.tgz#f44d33e043fed21a366c4ced2cbde8fa8be0c5fc" + resolved "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-6.1.0.tgz" integrity sha512-hrTvtY1Ek+fLA4JjXsKsvwPjuJD0rwB/+K4WY57t00owj//BpCsJ37w3kkkS7f/PcW/5uRjCuHcY67LOEwsRxw== dependencies: "@lerna/create-symlink" "6.1.0" @@ -2570,7 +2499,7 @@ "@lerna/temp-write@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/temp-write/-/temp-write-6.1.0.tgz#a5d532090dd7b2d4f8965fbb475376aae06b9242" + resolved "https://registry.npmjs.org/@lerna/temp-write/-/temp-write-6.1.0.tgz" integrity sha512-ZcQl88H9HbQ/TeWUOVt+vDYwptm7kwprGvj9KkZXr9S5Bn6SiKRQOeydCCfCrQT+9Q3dm7QZXV6rWzLsACcAlQ== dependencies: graceful-fs "^4.1.15" @@ -2581,19 +2510,19 @@ "@lerna/timer@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-6.1.0.tgz#245b02c05b2dec6d2aed2da8a0962cf0343d83d5" + resolved "https://registry.npmjs.org/@lerna/timer/-/timer-6.1.0.tgz" integrity sha512-du+NQ9q7uO4d2nVU4AD2DSPuAZqUapA/bZKuVpFVxvY9Qhzb8dQKLsFISe4A9TjyoNAk8ZeWK0aBc/6N+Qer9A== "@lerna/validation-error@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-6.1.0.tgz#03bd46f6219b6db7c4420528d5aaf047f92693e3" + resolved "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-6.1.0.tgz" integrity sha512-q0c3XCi5OpyTr8AcfbisS6e3svZaJF/riCvBDqRMaQUT4A8QOPzB4fVF3/+J2u54nidBuTlIk0JZu9aOdWTUkQ== dependencies: npmlog "^6.0.2" "@lerna/version@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/version/-/version-6.1.0.tgz#44d8649e978df9d6a14d97c9d7631a7dcd4a9cbf" + resolved "https://registry.npmjs.org/@lerna/version/-/version-6.1.0.tgz" integrity sha512-RUxVFdzHt0739lRNMrAbo6HWcFrcyG7atM1pn+Eo61fUoA5R/9N4bCk4m9xUGkJ/mOcROjuwAGe+wT1uOs58Bg== dependencies: "@lerna/check-working-tree" "6.1.0" @@ -2626,22 +2555,25 @@ "@lerna/write-log-file@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-6.1.0.tgz#b811cffd2ea2b3be6239a756c64dac9a3795707a" + resolved "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-6.1.0.tgz" integrity sha512-09omu2w4NCt8mJH/X9ZMuToQQ3xu/KpC7EU4yDl2Qy8nxKf8HiG8Oe+YYNprngmkdsq60F5eUZvoiFDZ5JeGIg== dependencies: npmlog "^6.0.2" write-file-atomic "^4.0.1" -"@next/eslint-plugin-next@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.1.6.tgz#dde3f98831f15923b25244588d924c716956292e" - integrity sha512-yNUtJ90NEiYFT6TJnNyofKMPYqirKDwpahcbxBgSIuABwYOdkGwzos1ZkYD51Qf0diYwpQZBeVqElTk7Q2WNqw== - dependencies: - glob "7.1.7" +"@noble/hashes@^1.1.2": + version "1.2.0" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz" + integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== + +"@noble/secp256k1@^1.7.1": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== "@nodelib/fs.scandir@2.1.5": version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" @@ -2649,12 +2581,12 @@ "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3": version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: "@nodelib/fs.scandir" "2.1.5" @@ -2662,7 +2594,7 @@ "@npmcli/arborist@5.3.0": version "5.3.0" - resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-5.3.0.tgz#321d9424677bfc08569e98a5ac445ee781f32053" + resolved "https://registry.npmjs.org/@npmcli/arborist/-/arborist-5.3.0.tgz" integrity sha512-+rZ9zgL1lnbl8Xbb1NQdMjveOMwj4lIYfcDtyJHHi5x4X8jtR6m8SXooJMZy5vmFVZ8w7A2Bnd/oX9eTuU8w5A== dependencies: "@isaacs/string-locale-compare" "^1.1.0" @@ -2702,7 +2634,7 @@ "@npmcli/fs@^2.1.0": version "2.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz" integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== dependencies: "@gar/promisify" "^1.1.3" @@ -2710,7 +2642,7 @@ "@npmcli/git@^3.0.0": version "3.0.2" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-3.0.2.tgz#5c5de6b4d70474cf2d09af149ce42e4e1dacb931" + resolved "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz" integrity sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w== dependencies: "@npmcli/promise-spawn" "^3.0.0" @@ -2725,7 +2657,7 @@ "@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" + resolved "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz" integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== dependencies: npm-bundled "^1.1.1" @@ -2733,7 +2665,7 @@ "@npmcli/map-workspaces@^2.0.3": version "2.0.4" - resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-2.0.4.tgz#9e5e8ab655215a262aefabf139782b894e0504fc" + resolved "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.4.tgz" integrity sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg== dependencies: "@npmcli/name-from-folder" "^1.0.1" @@ -2743,7 +2675,7 @@ "@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" + resolved "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-3.1.1.tgz" integrity sha512-n69ygIaqAedecLeVH3KnO39M6ZHiJ2dEv5A7DGvcqCB8q17BGUgW8QaanIkbWUo2aYGZqJaOORTLAlIvKjNDKA== dependencies: cacache "^16.0.0" @@ -2753,7 +2685,7 @@ "@npmcli/move-file@^2.0.0": version "2.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" + resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz" integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== dependencies: mkdirp "^1.0.4" @@ -2761,31 +2693,31 @@ "@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" + resolved "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz" integrity sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA== "@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" + resolved "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz" 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" + resolved "https://registry.npmjs.org/@npmcli/package-json/-/package-json-2.0.0.tgz" integrity sha512-42jnZ6yl16GzjWSH7vtrmWyJDGVa/LXPdpN2rcUWolFjc9ON2N3uz0qdBbQACfmhuJZ2lbKYtmK5qx68ZPLHMA== dependencies: json-parse-even-better-errors "^2.3.1" "@npmcli/promise-spawn@^3.0.0": version "3.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz#53283b5f18f855c6925f23c24e67c911501ef573" + resolved "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz" integrity sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g== dependencies: infer-owner "^1.0.4" "@npmcli/run-script@^4.1.0", "@npmcli/run-script@^4.1.3", "@npmcli/run-script@^4.1.7": version "4.2.1" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-4.2.1.tgz#c07c5c71bc1c70a5f2a06b0d4da976641609b946" + resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz" integrity sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg== dependencies: "@npmcli/node-gyp" "^2.0.0" @@ -2796,14 +2728,14 @@ "@nrwl/cli@15.3.3": version "15.3.3" - resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.3.3.tgz#9d7f09e336c39ecc54155f21f394b0fc740054eb" + resolved "https://registry.npmjs.org/@nrwl/cli/-/cli-15.3.3.tgz" integrity sha512-ZWTmVP9H3ukppWWGaS/s3Nym2nOYgnt6eHtuUFNsroz8LesG5oFAJviOz9jDEM/b+pLIrvYfU5aAGZqrtM3Z2A== dependencies: nx "15.3.3" "@nrwl/devkit@>=14.8.6 < 16": version "15.3.3" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-15.3.3.tgz#8a038334cf5b563befdad4b201e0b146dfd2969a" + resolved "https://registry.npmjs.org/@nrwl/devkit/-/devkit-15.3.3.tgz" integrity sha512-48R9HAp6r6umWNXTlVTMsH94YYjU/XUPLDTtXBgKESMVbdq8Fk+HDHuN0thXG5dL6DFkXgD0MICLm3jSQU6xMw== dependencies: "@phenomnomnominal/tsquery" "4.1.1" @@ -2814,21 +2746,21 @@ "@nrwl/tao@15.3.3": version "15.3.3" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.3.3.tgz#b54a4f28833d11f96f69796b6d2c1624123734e5" + resolved "https://registry.npmjs.org/@nrwl/tao/-/tao-15.3.3.tgz" integrity sha512-f9+VwhlJ/7TWpjHSgoUOAA067uP9DmzABMY9HC5OREEDaCx+rzYEvbLAPv6cXzWw+6IYM6cyKw0zWSQrdEVrWg== dependencies: nx "15.3.3" "@octokit/auth-token@^3.0.0": version "3.0.2" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.2.tgz#a0fc8de149fd15876e1ac78f6525c1c5ab48435f" + resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.2.tgz" integrity sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q== dependencies: "@octokit/types" "^8.0.0" "@octokit/core@^4.1.0": version "4.1.0" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.1.0.tgz#b6b03a478f1716de92b3f4ec4fd64d05ba5a9251" + resolved "https://registry.npmjs.org/@octokit/core/-/core-4.1.0.tgz" integrity sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ== dependencies: "@octokit/auth-token" "^3.0.0" @@ -2841,7 +2773,7 @@ "@octokit/endpoint@^7.0.0": version "7.0.3" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.3.tgz#0b96035673a9e3bedf8bab8f7335de424a2147ed" + resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.3.tgz" integrity sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw== dependencies: "@octokit/types" "^8.0.0" @@ -2850,7 +2782,7 @@ "@octokit/graphql@^5.0.0": version "5.0.4" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.4.tgz#519dd5c05123868276f3ae4e50ad565ed7dff8c8" + resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.4.tgz" integrity sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A== dependencies: "@octokit/request" "^6.0.0" @@ -2859,29 +2791,29 @@ "@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" + resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz" integrity sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw== "@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" + resolved "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz" integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== "@octokit/plugin-paginate-rest@^5.0.0": version "5.0.1" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-5.0.1.tgz#93d7e74f1f69d68ba554fa6b888c2a9cf1f99a83" + resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-5.0.1.tgz" integrity sha512-7A+rEkS70pH36Z6JivSlR7Zqepz3KVucEFVDnSrgHXzG7WLAzYwcHZbKdfTXHwuTHbkT1vKvz7dHl1+HNf6Qyw== dependencies: "@octokit/types" "^8.0.0" "@octokit/plugin-request-log@^1.0.4": version "1.0.4" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" + resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz" integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== "@octokit/plugin-rest-endpoint-methods@^6.7.0": version "6.7.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.7.0.tgz#2f6f17f25b6babbc8b41d2bb0a95a8839672ce7c" + resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.7.0.tgz" integrity sha512-orxQ0fAHA7IpYhG2flD2AygztPlGYNAdlzYz8yrD8NDgelPfOYoRPROfEyIe035PlxvbYrgkfUZIhSBKju/Cvw== dependencies: "@octokit/types" "^8.0.0" @@ -2889,7 +2821,7 @@ "@octokit/request-error@^3.0.0": version "3.0.2" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.2.tgz#f74c0f163d19463b87528efe877216c41d6deb0a" + resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.2.tgz" integrity sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg== dependencies: "@octokit/types" "^8.0.0" @@ -2898,7 +2830,7 @@ "@octokit/request@^6.0.0": version "6.2.2" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.2.tgz#a2ba5ac22bddd5dcb3f539b618faa05115c5a255" + resolved "https://registry.npmjs.org/@octokit/request/-/request-6.2.2.tgz" integrity sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw== dependencies: "@octokit/endpoint" "^7.0.0" @@ -2910,7 +2842,7 @@ "@octokit/rest@^19.0.3": version "19.0.5" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-19.0.5.tgz#4dbde8ae69b27dca04b5f1d8119d282575818f6c" + resolved "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.5.tgz" integrity sha512-+4qdrUFq2lk7Va+Qff3ofREQWGBeoTKNqlJO+FGjFP35ZahP+nBenhZiGdu8USSgmq4Ky3IJ/i4u0xbLqHaeow== dependencies: "@octokit/core" "^4.1.0" @@ -2920,14 +2852,14 @@ "@octokit/types@^8.0.0": version "8.0.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-8.0.0.tgz#93f0b865786c4153f0f6924da067fe0bb7426a9f" + resolved "https://registry.npmjs.org/@octokit/types/-/types-8.0.0.tgz" integrity sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg== dependencies: "@octokit/openapi-types" "^14.0.0" "@parcel/watcher@2.0.4": version "2.0.4" - resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.0.4.tgz#f300fef4cc38008ff4b8c29d92588eced3ce014b" + resolved "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz" integrity sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg== dependencies: node-addon-api "^3.2.1" @@ -2935,48 +2867,43 @@ "@phenomnomnominal/tsquery@4.1.1": version "4.1.1" - resolved "https://registry.yarnpkg.com/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz#42971b83590e9d853d024ddb04a18085a36518df" + resolved "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz" integrity sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ== dependencies: esquery "^1.0.1" -"@rushstack/eslint-patch@^1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.1.3.tgz#6801033be7ff87a6b7cadaf5b337c9f366a3c4b0" - integrity sha512-WiBSI6JBIhC6LRIsB2Kwh8DsGTlbBU+mLRxJmAe3LjHTdkDpwIbEOZgoXBbZilk/vlfjK8i6nKRAvIRn1XaIMw== - "@sinonjs/commons@^1.7.0": version "1.8.3" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz" integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== dependencies: type-detect "4.0.8" "@sinonjs/fake-timers@^8.0.1": version "8.1.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz" integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== dependencies: "@sinonjs/commons" "^1.7.0" "@tootallnate/once@1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== "@tootallnate/once@2": version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== "@types/babel-types@*", "@types/babel-types@^7.0.0": version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.11.tgz#263b113fa396fac4373188d73225297fb86f19a9" + resolved "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.11.tgz" integrity sha512-pkPtJUUY+Vwv6B1inAz55rQvivClHJxc9aVEPPmaq2cbyeMLCiDpbKpcKyX4LAwpNGi+SHBv0tHv6+0gXv0P2A== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": version "7.1.19" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz" integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== dependencies: "@babel/parser" "^7.1.0" @@ -2987,14 +2914,14 @@ "@types/babel__generator@*": version "7.6.4" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz" integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz" integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== dependencies: "@babel/parser" "^7.1.0" @@ -3002,61 +2929,54 @@ "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": version "7.17.1" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.1.tgz#1a0e73e8c28c7e832656db372b779bfd2ef37314" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz" integrity sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA== dependencies: "@babel/types" "^7.3.0" "@types/babylon@^6.16.2": version "6.16.6" - resolved "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.6.tgz#a1e7e01567b26a5ebad321a74d10299189d8d932" + resolved "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.6.tgz" integrity sha512-G4yqdVlhr6YhzLXFKy5F7HtRBU8Y23+iWy7UKthMq/OSQnL1hbsoeXESQ2LY8zEDlknipDG3nRGhUC9tkwvy/w== dependencies: "@types/babel-types" "*" -"@types/bn.js@^4.11.6": - version "4.11.6" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" - integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== - dependencies: - "@types/node" "*" - "@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" + resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz" integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== dependencies: "@types/node" "*" "@types/graceful-fs@^4.1.2": version "4.1.5" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz" integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== "@types/istanbul-lib-report@*": version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== dependencies: "@types/istanbul-lib-report" "*" "@types/jest@^27.4.1": version "27.5.0" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.5.0.tgz#e04ed1824ca6b1dd0438997ba60f99a7405d4c7b" + resolved "https://registry.npmjs.org/@types/jest/-/jest-27.5.0.tgz" integrity sha512-9RBFx7r4k+msyj/arpfaa0WOOEcaAZNmN+j80KFbFCoSqCJGHTz7YMAMGQW9Xmqm5w6l5c25vbSjMwlikJi5+g== dependencies: jest-matcher-utils "^27.0.0" @@ -3064,22 +2984,22 @@ "@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" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" 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" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= "@types/linkify-it@*": version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.2.tgz#fd2cd2edbaa7eaac7e7f3c1748b52a19143846c9" + resolved "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz" integrity sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA== "@types/markdown-it@^12.2.3": version "12.2.3" - resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-12.2.3.tgz#0d6f6e5e413f8daaa26522904597be3d6cd93b51" + resolved "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz" integrity sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ== dependencies: "@types/linkify-it" "*" @@ -3087,54 +3007,59 @@ "@types/mdurl@*": version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9" + resolved "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz" integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA== "@types/minimatch@^3.0.3": version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== "@types/minimist@^1.2.0": version "1.2.2" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" + resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== "@types/node@*": version "17.0.31" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.31.tgz#a5bb84ecfa27eec5e1c802c6bbf8139bdb163a5d" + resolved "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz" integrity sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q== +"@types/node@^18.15.1": + version "18.15.1" + resolved "https://registry.npmjs.org/@types/node/-/node-18.15.1.tgz" + integrity sha512-U2TWca8AeHSmbpi314QBESRk7oPjSZjDsR+c+H4ECC1l+kFgpZf8Ydhv3SJpPy51VyZHHqxlb6mTTqYNNRVAIw== + "@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" + resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz" integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== "@types/parse-json@^4.0.0": version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/pbkdf2@^3.0.0": version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" + resolved "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz" integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== dependencies: "@types/node" "*" "@types/prettier@^2.1.5": version "2.6.0" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.0.tgz#efcbd41937f9ae7434c714ab698604822d890759" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz" integrity sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw== "@types/prop-types@*": version "15.7.5" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== "@types/react@^18.0.7": version "18.0.9" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.9.tgz#d6712a38bd6cd83469603e7359511126f122e878" + resolved "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz" integrity sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw== dependencies: "@types/prop-types" "*" @@ -3143,43 +3068,50 @@ "@types/resolve@0.0.8": version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + resolved "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz" integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== dependencies: "@types/node" "*" "@types/scheduler@*": version "0.16.2" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== "@types/secp256k1@^4.0.1": version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" + resolved "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz" integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== dependencies: "@types/node" "*" "@types/stack-utils@^2.0.0": version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== +"@types/ws@^8.5.4": + version "8.5.4" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.4.tgz#bb10e36116d6e570dd943735f86c933c1587b8a5" + integrity sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg== + dependencies: + "@types/node" "*" + "@types/yargs-parser@*": version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== "@types/yargs@^16.0.0": version "16.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz" integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== dependencies: "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^5.17.0": version "5.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.22.0.tgz#7b52a0de2e664044f28b36419210aea4ab619e2a" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.22.0.tgz" integrity sha512-YCiy5PUzpAeOPGQ7VSGDEY2NeYUV1B0swde2e0HzokRsHBYjSdF6DZ51OuRZxVPHx0032lXGLvOMls91D8FXlg== dependencies: "@typescript-eslint/scope-manager" "5.22.0" @@ -3192,9 +3124,9 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.17.0", "@typescript-eslint/parser@^5.21.0": +"@typescript-eslint/parser@^5.17.0": version "5.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.22.0.tgz#7bedf8784ef0d5d60567c5ba4ce162460e70c178" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.22.0.tgz" integrity sha512-piwC4krUpRDqPaPbFaycN70KCP87+PC5WZmrWs+DlVOxxmF+zI6b6hETv7Quy4s9wbkV16ikMeZgXsvzwI3icQ== dependencies: "@typescript-eslint/scope-manager" "5.22.0" @@ -3204,7 +3136,7 @@ "@typescript-eslint/scope-manager@5.22.0": version "5.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.22.0.tgz#590865f244ebe6e46dc3e9cab7976fc2afa8af24" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.22.0.tgz" integrity sha512-yA9G5NJgV5esANJCO0oF15MkBO20mIskbZ8ijfmlKIvQKg0ynVKfHZ15/nhAJN5m8Jn3X5qkwriQCiUntC9AbA== dependencies: "@typescript-eslint/types" "5.22.0" @@ -3212,7 +3144,7 @@ "@typescript-eslint/type-utils@5.22.0": version "5.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.22.0.tgz#0c0e93b34210e334fbe1bcb7250c470f4a537c19" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.22.0.tgz" integrity sha512-iqfLZIsZhK2OEJ4cQ01xOq3NaCuG5FQRKyHicA3xhZxMgaxQazLUHbH/B2k9y5i7l3+o+B5ND9Mf1AWETeMISA== dependencies: "@typescript-eslint/utils" "5.22.0" @@ -3221,12 +3153,12 @@ "@typescript-eslint/types@5.22.0": version "5.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.22.0.tgz#50a4266e457a5d4c4b87ac31903b28b06b2c3ed0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.22.0.tgz" integrity sha512-T7owcXW4l0v7NTijmjGWwWf/1JqdlWiBzPqzAWhobxft0SiEvMJB56QXmeCQjrPuM8zEfGUKyPQr/L8+cFUBLw== "@typescript-eslint/typescript-estree@5.22.0": version "5.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.22.0.tgz#e2116fd644c3e2fda7f4395158cddd38c0c6df97" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.22.0.tgz" integrity sha512-EyBEQxvNjg80yinGE2xdhpDYm41so/1kOItl0qrjIiJ1kX/L/L8WWGmJg8ni6eG3DwqmOzDqOhe6763bF92nOw== dependencies: "@typescript-eslint/types" "5.22.0" @@ -3239,7 +3171,7 @@ "@typescript-eslint/utils@5.22.0": version "5.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.22.0.tgz#1f2c4897e2cf7e44443c848a13c60407861babd8" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.22.0.tgz" integrity sha512-HodsGb037iobrWSUMS7QH6Hl1kppikjA1ELiJlNSTYf/UdMEwzgj0WIp+lBNb6WZ3zTwb0tEz51j0Wee3iJ3wQ== dependencies: "@types/json-schema" "^7.0.9" @@ -3251,20 +3183,25 @@ "@typescript-eslint/visitor-keys@5.22.0": version "5.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.22.0.tgz#f49c0ce406944ffa331a1cfabeed451ea4d0909c" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.22.0.tgz" integrity sha512-DbgTqn2Dv5RFWluG88tn0pP6Ex0ROF+dpDO1TNNZdRtLjUr6bdznjA6f/qNqJLjd2PgguAES2Zgxh/JzwzETDg== dependencies: "@typescript-eslint/types" "5.22.0" eslint-visitor-keys "^3.0.0" +"@wagmi/chains@~0.2.11": + version "0.2.11" + resolved "https://registry.npmjs.org/@wagmi/chains/-/chains-0.2.11.tgz" + integrity sha512-aMrI1zKKXdeAaiTxBiv+3Zfgd3IajCDpxBtPPvpjXuWVRe4ikwzbyZ1HARKj3V1+wNMPng8EJiWpN966PcvROg== + "@yarnpkg/lockfile@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + resolved "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== "@yarnpkg/parsers@^3.0.0-rc.18": version "3.0.0-rc.33" - resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.0-rc.33.tgz#4d8f46acd0db74a01732d2f6406ca8277e6f8027" + resolved "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.33.tgz" integrity sha512-az35wEPH00kW6eZDqHC0BumzAB4XD+YJb1b5tHEfsy73viCN7uGy8kvutwig5bgVwt1Hx7GuU09G50Sc5osBlA== dependencies: js-yaml "^3.10.0" @@ -3272,14 +3209,14 @@ "@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" + resolved "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz" integrity sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg== dependencies: argparse "^2.0.1" JSONStream@^1.0.4: version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== dependencies: jsonparse "^1.2.0" @@ -3287,29 +3224,34 @@ JSONStream@^1.0.4: abab@^2.0.3, abab@^2.0.5: version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== abbrev@1, abbrev@^1.0.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +abitype@^0.7.1, abitype@~0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/abitype/-/abitype-0.7.1.tgz" + integrity sha512-VBkRHTDZf9Myaek/dO3yMmOzB/y2s3Zo6nVU7yaw1G+TvCHAjwaJzNGN9yo4K5D8bU/VZXKP1EJpRhFr862PlQ== + ace-builds@^1.4.13: version "1.14.0" - resolved "https://registry.yarnpkg.com/ace-builds/-/ace-builds-1.14.0.tgz#85a6733b4fa17b0abc3dbfe38cd8d823cad79716" + resolved "https://registry.npmjs.org/ace-builds/-/ace-builds-1.14.0.tgz" integrity sha512-3q8LvawomApRCt4cC0OzxVjDsZ609lDbm8l0Xl9uqG06dKEq4RT0YXLUyk7J2SxmqIp5YXzZNw767Dr8GKUruw== acorn-globals@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf" + resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz" integrity sha512-uWttZCk96+7itPxK8xCzY86PnxKTMrReKDqrHzv42VQY0K30PUO8WY13WMOuI+cOdX4EIdzdvQ8k6jkuGRFMYw== dependencies: acorn "^4.0.4" acorn-globals@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz" integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== dependencies: acorn "^7.1.1" @@ -3317,54 +3259,54 @@ acorn-globals@^6.0.0: acorn-jsx@^5.3.2: version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^7.1.1: version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== acorn@^3.1.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + resolved "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz" integrity sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw== acorn@^4.0.4, acorn@~4.0.2: version "4.0.13" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" + resolved "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz" integrity sha512-fu2ygVGuMmlzG8ZeRJ0bvR41nsAkxxhbyk8bZ1SS521Z7vmgJFTQQlfz/Mp/nJexGBz+v8sC9bM6+lNgskt4Ug== acorn@^7.1.1: version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== acorn@^8.2.4, acorn@^8.7.1: version "8.7.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz" integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== add-stream@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" + resolved "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz" integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== aes-js@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + resolved "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== agent-base@6, agent-base@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" agentkeepalive@^4.2.1: version "4.2.1" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" + resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz" integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== dependencies: debug "^4.1.0" @@ -3373,7 +3315,7 @@ agentkeepalive@^4.2.1: aggregate-error@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: clean-stack "^2.0.0" @@ -3381,7 +3323,7 @@ aggregate-error@^3.0.0: ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -3391,7 +3333,7 @@ ajv@^6.10.0, ajv@^6.12.4: align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + resolved "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz" integrity sha512-GrTZLRpmp6wIC2ztrWW9MjjTgSKccffgFagbNDOX95/dcjEcYZibYTeaOntySQLcdw1ztBoFkviiUvTMbb9MYg== dependencies: kind-of "^3.0.2" @@ -3400,43 +3342,43 @@ align-text@^0.1.1, align-text@^0.1.3: ansi-colors@^4.1.1: version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== ansi-escapes@^4.2.1: version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: type-fest "^0.21.3" ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 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" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== anymatch@^3.0.3: version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== dependencies: normalize-path "^3.0.0" @@ -3444,7 +3386,7 @@ anymatch@^3.0.3: anymatch@~3.1.2: version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" @@ -3452,12 +3394,12 @@ anymatch@~3.1.2: "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" + resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== are-we-there-yet@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz" integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== dependencies: delegates "^1.0.0" @@ -3465,139 +3407,85 @@ are-we-there-yet@^3.0.0: argparse@^1.0.7: version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" argparse@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" - integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== - dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" - array-differ@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" + resolved "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz" integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== array-ify@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz" integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= -array-includes@^3.1.4: - version "3.1.5" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" - integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - get-intrinsic "^1.1.1" - is-string "^1.0.7" - array-union@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array.prototype.flat@^1.2.5: - version "1.3.0" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" - integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.2.5: - version "1.3.0" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" - integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" - es-shim-unscopables "^1.0.0" - arrify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= arrify@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== asap@^2.0.0, asap@~2.0.3: version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= -ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= - ast-types@0.12.4, ast-types@^0.12.2: version "0.12.4" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.12.4.tgz#71ce6383800f24efc9a1a3308f3a6e420a0974d1" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.12.4.tgz" integrity sha512-ky/YVYCbtVAS8TdMIaTiPFHwEpRB5z1hctepJplTr3UW5q8TDrpIMCILyk8pmLxGtn2KCtC/lSn7zOsaI7nzDw== ast-types@^0.14.2: version "0.14.2" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz" integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== dependencies: tslib "^2.0.1" async@^3.2.3: version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz" 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" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= at-least-node@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -axe-core@^4.3.5: - version "4.4.1" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413" - integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw== - axios@^1.0.0: version "1.2.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.2.1.tgz#44cf04a3c9f0c2252ebd85975361c026cb9f864a" + resolved "https://registry.npmjs.org/axios/-/axios-1.2.1.tgz" integrity sha512-I88cFiGu9ryt/tfVEi4kX2SITsvDddTajXTOFmt2uK1ZVA8LytjtdeyefdQWEf5PU8w+4SSJDoYnggflB5tW4A== dependencies: follow-redirects "^1.15.0" form-data "^4.0.0" proxy-from-env "^1.1.0" -axobject-query@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" - integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== - babel-jest@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz" integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== dependencies: "@jest/transform" "^27.5.1" @@ -3611,14 +3499,14 @@ babel-jest@^27.5.1: babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + resolved "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz" integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== dependencies: object.assign "^4.1.0" babel-plugin-istanbul@^6.1.1: version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -3629,7 +3517,7 @@ babel-plugin-istanbul@^6.1.1: babel-plugin-jest-hoist@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz" integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== dependencies: "@babel/template" "^7.3.3" @@ -3639,7 +3527,7 @@ babel-plugin-jest-hoist@^27.5.1: babel-plugin-polyfill-corejs2@^0.3.0: version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz" integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== dependencies: "@babel/compat-data" "^7.13.11" @@ -3648,7 +3536,7 @@ babel-plugin-polyfill-corejs2@^0.3.0: babel-plugin-polyfill-corejs3@^0.5.0: version "0.5.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz" integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.1" @@ -3656,14 +3544,14 @@ babel-plugin-polyfill-corejs3@^0.5.0: babel-plugin-polyfill-regenerator@^0.3.0: version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz" integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.1" babel-preset-current-node-syntax@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" @@ -3681,7 +3569,7 @@ babel-preset-current-node-syntax@^1.0.0: babel-preset-jest@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz" integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== dependencies: babel-plugin-jest-hoist "^27.5.1" @@ -3689,7 +3577,7 @@ babel-preset-jest@^27.5.1: babel-runtime@^6.26.0: version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + resolved "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz" integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== dependencies: core-js "^2.4.0" @@ -3697,7 +3585,7 @@ babel-runtime@^6.26.0: babel-types@^6.26.0: version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + resolved "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz" integrity sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== dependencies: babel-runtime "^6.26.0" @@ -3707,39 +3595,39 @@ babel-types@^6.26.0: babylon@^6.18.0: version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + resolved "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz" integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== base-x@^3.0.2: version "3.0.9" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz" integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== dependencies: safe-buffer "^5.0.1" base64-js@^1.3.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== bech32@1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + resolved "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== before-after-hook@^2.2.0: version "2.2.3" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" + resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz" integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== better-docs@^2.7.2: version "2.7.2" - resolved "https://registry.yarnpkg.com/better-docs/-/better-docs-2.7.2.tgz#fe0b54fca8a904fe050586aa819263195e5eb948" + resolved "https://registry.npmjs.org/better-docs/-/better-docs-2.7.2.tgz" integrity sha512-aIOsGhhcTIDAJfBTABIPDs3q98dfNF85yUwmKShXb3ZG6e7s+ojBePiDqvFwy/MpnjYwuSbuzkbEv4iPWcSuTQ== dependencies: brace "^0.11.1" @@ -3751,14 +3639,14 @@ better-docs@^2.7.2: vue-docgen-api "^3.26.0" vue2-ace-editor "^0.0.15" -bignumber.js@^9.0.0, bignumber.js@^9.0.1: +bignumber.js@^9.0.1: version "9.0.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" + resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz" integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== bin-links@^3.0.0: version "3.0.3" - resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-3.0.3.tgz#3842711ef3db2cd9f16a5f404a996a12db355a6e" + resolved "https://registry.npmjs.org/bin-links/-/bin-links-3.0.3.tgz" integrity sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA== dependencies: cmd-shim "^5.0.0" @@ -3770,12 +3658,12 @@ bin-links@^3.0.0: binary-extensions@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== bl@^4.0.3, bl@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: buffer "^5.5.0" @@ -3784,32 +3672,32 @@ bl@^4.0.3, bl@^4.1.0: blakejs@^1.1.0: version "1.2.1" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + resolved "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz" integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== bluebird@^3.7.2: version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bn.js@4.11.6: version "4.11.6" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz" integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== bn.js@^4.11.9: version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -3817,36 +3705,36 @@ brace-expansion@^1.1.7: brace-expansion@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: balanced-match "^1.0.0" brace@^0.11.0, brace@^0.11.1: version "0.11.1" - resolved "https://registry.yarnpkg.com/brace/-/brace-0.11.1.tgz#4896fcc9d544eef45f4bb7660db320d3b379fe58" + resolved "https://registry.npmjs.org/brace/-/brace-0.11.1.tgz" integrity sha512-Fc8Ne62jJlKHiG/ajlonC4Sd66Pq68fFwK4ihJGNZpGqboc324SQk+lRvMzpPRuJOmfrJefdG8/7JdWX4bzJ2Q== braces@^3.0.2, braces@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" brorand@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== browser-process-hrtime@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== browserify-aes@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== dependencies: buffer-xor "^1.0.3" @@ -3858,7 +3746,7 @@ browserify-aes@^1.2.0: browserslist@^4.20.2, browserslist@^4.20.3: version "4.20.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz" integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== dependencies: caniuse-lite "^1.0.30001332" @@ -3869,7 +3757,7 @@ browserslist@^4.20.2, browserslist@^4.20.3: browserslist@^4.21.3: version "4.21.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== dependencies: caniuse-lite "^1.0.30001400" @@ -3879,14 +3767,14 @@ browserslist@^4.21.3: bs58@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz" integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== dependencies: base-x "^3.0.2" bs58check@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + resolved "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz" integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== dependencies: bs58 "^4.0.0" @@ -3895,29 +3783,29 @@ bs58check@^2.1.2: bser@2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: node-int64 "^0.4.0" buffer-from@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer-reverse@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-reverse/-/buffer-reverse-1.0.1.tgz#49283c8efa6f901bc01fa3304d06027971ae2f60" + resolved "https://registry.npmjs.org/buffer-reverse/-/buffer-reverse-1.0.1.tgz" integrity sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg== buffer-xor@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== buffer@^5.5.0: version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: base64-js "^1.3.1" @@ -3925,7 +3813,7 @@ buffer@^5.5.0: buffer@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== dependencies: base64-js "^1.3.1" @@ -3933,29 +3821,29 @@ buffer@^6.0.3: builtin-modules@^3.1.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz" integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== builtins@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + resolved "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz" integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== builtins@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" + resolved "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz" integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== dependencies: semver "^7.0.0" byte-size@^7.0.0: version "7.0.1" - resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-7.0.1.tgz#b1daf3386de7ab9d706b941a748dbfc71130dee3" + resolved "https://registry.npmjs.org/byte-size/-/byte-size-7.0.1.tgz" integrity sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A== c8@^7.6.0: version "7.12.0" - resolved "https://registry.yarnpkg.com/c8/-/c8-7.12.0.tgz#402db1c1af4af5249153535d1c84ad70c5c96b14" + resolved "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz" integrity sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A== dependencies: "@bcoe/v8-coverage" "^0.2.3" @@ -3973,7 +3861,7 @@ c8@^7.6.0: cacache@^16.0.0, cacache@^16.0.6, cacache@^16.1.0: version "16.1.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" + resolved "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz" integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== dependencies: "@npmcli/fs" "^2.1.0" @@ -3997,7 +3885,7 @@ cacache@^16.0.0, cacache@^16.0.6, cacache@^16.1.0: call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: function-bind "^1.1.1" @@ -4005,12 +3893,12 @@ call-bind@^1.0.0, call-bind@^1.0.2: callsites@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camelcase-keys@^6.2.2: version "6.2.2" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz" integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== dependencies: camelcase "^5.3.1" @@ -4019,39 +3907,39 @@ camelcase-keys@^6.2.2: camelcase@^1.0.2: version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" integrity sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g== -camelcase@^5.0.0, camelcase@^5.3.1: +camelcase@^5.3.1: version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^6.2.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001332: version "1.0.30001338" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001338.tgz#b5dd7a7941a51a16480bdf6ff82bded1628eec0d" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001338.tgz" integrity sha512-1gLHWyfVoRDsHieO+CaeYe7jSo/MT7D7lhaXUiwwbuR5BwQxORs0f1tAwUSQr3YbxRXJvxHM/PA5FfPQRnsPeQ== caniuse-lite@^1.0.30001400: version "1.0.30001439" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001439.tgz#ab7371faeb4adff4b74dad1718a6fd122e45d9cb" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001439.tgz" integrity sha512-1MgUzEkoMO6gKfXflStpYgZDlFM7M/ck/bgfVCACO5vnAf0fXoNVHdWtqGU+MYca+4bL9Z5bpOVmR33cWW9G2A== catharsis@^0.9.0: version "0.9.0" - resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.9.0.tgz#40382a168be0e6da308c277d3a2b3eb40c7d2121" + resolved "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz" integrity sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A== dependencies: lodash "^4.17.15" center-align@^0.1.1: version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + resolved "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz" integrity sha512-Baz3aNe2gd2LP2qk5U+sDk/m4oSuwSDcBfayTCTBoWpfIGO5XFxPmjILQII4NGiZjD6DoDI6kf7gKaxkf7s3VQ== dependencies: align-text "^0.1.3" @@ -4059,7 +3947,7 @@ center-align@^0.1.1: chalk@4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz" integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== dependencies: ansi-styles "^4.1.0" @@ -4067,7 +3955,7 @@ chalk@4.1.0: chalk@^2.0.0: version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" @@ -4076,7 +3964,7 @@ chalk@^2.0.0: chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" @@ -4084,24 +3972,24 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: char-regex@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== character-parser@^2.1.1: version "2.2.0" - resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz#c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0" + resolved "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz" integrity sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw== dependencies: is-regex "^1.0.3" chardet@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== chokidar@^3.5.1: version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" @@ -4116,22 +4004,22 @@ chokidar@^3.5.1: chownr@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== ci-info@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== ci-info@^3.2.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz" integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== dependencies: inherits "^2.0.1" @@ -4139,64 +4027,55 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: cjs-module-lexer@^1.0.0: version "1.2.2" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz" integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== clean-css@^4.1.11: version "4.2.4" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.4.tgz#733bf46eba4e607c6891ea57c24a989356831178" + resolved "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz" integrity sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A== dependencies: source-map "~0.6.0" clean-stack@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== cli-cursor@3.1.0, cli-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: restore-cursor "^3.1.0" cli-spinners@2.6.1: version "2.6.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz" 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" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz" integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== cli-width@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== cliui@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + resolved "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz" integrity sha512-GIOYRizG+TGoc7Wgc1LiOTLare95R3mzKgoln+Q/lE4ceiYH19gUpl0l0Ffq4lJDEf3FxujMe6IBfOCs7pfqNA== dependencies: center-align "^0.1.1" right-align "^0.1.1" wordwrap "0.0.2" -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - cliui@^7.0.2: version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: string-width "^4.2.0" @@ -4205,7 +4084,7 @@ cliui@^7.0.2: cliui@^8.0.1: version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== dependencies: string-width "^4.2.0" @@ -4214,7 +4093,7 @@ cliui@^8.0.1: clone-deep@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== dependencies: is-plain-object "^2.0.4" @@ -4223,63 +4102,58 @@ clone-deep@^4.0.1: clone@^1.0.2: version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= cmd-shim@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-5.0.0.tgz#8d0aaa1a6b0708630694c4dbde070ed94c707724" + resolved "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz" integrity sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw== dependencies: mkdirp-infer-owner "^2.0.0" co@^4.6.0: version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= collect-v8-coverage@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz" integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== color-convert@^1.9.0: version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= color-name@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== color-support@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -colors@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - columnify@^1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" + resolved "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz" integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== dependencies: strip-ansi "^6.0.1" @@ -4287,24 +4161,24 @@ columnify@^1.6.0: combined-stream@^1.0.8: version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" commander@^2.19.0: version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== common-ancestor-path@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" + resolved "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz" integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== compare-func@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" + resolved "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz" integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== dependencies: array-ify "^1.0.0" @@ -4312,12 +4186,12 @@ compare-func@^2.0.0: concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= concat-stream@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz" integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== dependencies: buffer-from "^1.0.0" @@ -4327,7 +4201,7 @@ concat-stream@^2.0.0: config-chain@^1.1.12: version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz" integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== dependencies: ini "^1.3.4" @@ -4335,12 +4209,12 @@ config-chain@^1.1.12: console-control-strings@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= constantinople@^3.0.1, constantinople@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-3.1.2.tgz#d45ed724f57d3d10500017a7d3a889c1381ae647" + resolved "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz" integrity sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw== dependencies: "@types/babel-types" "^7.0.0" @@ -4350,7 +4224,7 @@ constantinople@^3.0.1, constantinople@^3.1.2: 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" + resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz" integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== dependencies: compare-func "^2.0.0" @@ -4358,7 +4232,7 @@ conventional-changelog-angular@^5.0.12: 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" + resolved "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz" integrity sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg== dependencies: add-stream "^1.0.0" @@ -4378,12 +4252,12 @@ conventional-changelog-core@^4.2.4: conventional-changelog-preset-loader@^2.3.4: version "2.3.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" + resolved "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz" integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== conventional-changelog-writer@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz#e0757072f045fe03d91da6343c843029e702f359" + resolved "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz" integrity sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ== dependencies: conventional-commits-filter "^2.0.7" @@ -4398,7 +4272,7 @@ conventional-changelog-writer@^5.0.0: conventional-commits-filter@^2.0.7: version "2.0.7" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" + resolved "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz" integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== dependencies: lodash.ismatch "^4.4.0" @@ -4406,7 +4280,7 @@ conventional-commits-filter@^2.0.7: conventional-commits-parser@^3.2.0: version "3.2.4" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" + resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz" integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== dependencies: JSONStream "^1.0.4" @@ -4418,7 +4292,7 @@ conventional-commits-parser@^3.2.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" + resolved "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz" integrity sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw== dependencies: concat-stream "^2.0.0" @@ -4432,37 +4306,32 @@ conventional-recommended-bump@^6.1.0: convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz" integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== dependencies: safe-buffer "~5.1.1" core-js-compat@^3.21.0, core-js-compat@^3.22.1: version "3.22.4" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.4.tgz#d700f451e50f1d7672dcad0ac85d910e6691e579" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.4.tgz" integrity sha512-dIWcsszDezkFZrfm1cnB4f/J85gyhiCpxbgBdohWCDtSVuAaChTSpPV7ldOQf/Xds2U5xCIJZOK82G4ZPAIswA== dependencies: browserslist "^4.20.3" semver "7.0.0" -core-js-pure@^3.20.2: - version "3.22.4" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.22.4.tgz#a992210f4cad8b32786b8654563776c56b0e0d0a" - integrity sha512-4iF+QZkpzIz0prAFuepmxwJ2h5t4agvE8WPYqs2mjLJMNNwJOnpch76w2Q7bUfCPEv/V7wpvOfog0w273M+ZSw== - core-js@^2.4.0: version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-util-is@~1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== cosmiconfig@^7.0.0: version "7.1.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== dependencies: "@types/parse-json" "^4.0.0" @@ -4473,7 +4342,7 @@ cosmiconfig@^7.0.0: create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== dependencies: cipher-base "^1.0.1" @@ -4484,7 +4353,7 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== dependencies: cipher-base "^1.0.3" @@ -4496,7 +4365,7 @@ create-hmac@^1.1.4, create-hmac@^1.1.7: cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" @@ -4505,44 +4374,39 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: crypto-js@^3.1.9-1: version "3.3.0" - resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.3.0.tgz#846dd1cce2f68aacfa156c8578f926a609b7976b" + resolved "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz" integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q== cssom@^0.4.4: version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz" integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== cssom@~0.3.6: version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== cssstyle@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: cssom "~0.3.6" csstype@^3.0.2: version "3.0.11" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz" integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw== -damerau-levenshtein@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" - integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== - dargs@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" + resolved "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== data-urls@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + resolved "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz" integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== dependencies: abab "^2.0.3" @@ -4551,88 +4415,74 @@ data-urls@^2.0.0: dateformat@^3.0.0: version "3.0.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== de-indent@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + resolved "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz" integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3: version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -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== - dependencies: - ms "2.0.0" - -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - 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" + resolved "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz" integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw== decamelize-keys@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" + resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz" integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== dependencies: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.2.0: +decamelize@^1.0.0, decamelize@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= decimal.js@^10.2.1: version "10.3.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" + resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz" integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== dedent@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== deepmerge@^4.2.2: version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== defaults@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz" integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= dependencies: clone "^1.0.2" define-lazy-prop@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.1.3, define-properties@^1.1.4: +define-properties@^1.1.3: version "1.1.4" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== dependencies: has-property-descriptors "^1.0.0" @@ -4640,42 +4490,42 @@ define-properties@^1.1.3, define-properties@^1.1.4: delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= delegates@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= depd@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" 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" + resolved "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== detect-indent@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz" integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= detect-indent@^6.0.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz" integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== detect-newline@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== dezalgo@^1.0.0: version "1.0.4" - resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" + resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz" integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== dependencies: asap "^2.0.0" @@ -4683,96 +4533,84 @@ dezalgo@^1.0.0: diff-match-patch@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" + resolved "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz" integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== diff-sequences@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz" integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== dir-glob@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - doctrine@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: esutils "^2.0.2" doctypes@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9" + resolved "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz" integrity sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ== domexception@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz" integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== dependencies: webidl-conversions "^5.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" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== 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" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz" integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== dependencies: is-obj "^2.0.0" -dotenv@^8.2.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" - integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== - dotenv@~10.0.0: version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz" integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== duplexer@^0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== ejs@^3.1.7: version "3.1.8" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" + resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz" integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== dependencies: jake "^10.8.5" electron-to-chromium@^1.4.118: version "1.4.137" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz#186180a45617283f1c012284458510cd99d6787f" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz" integrity sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA== electron-to-chromium@^1.4.251: version "1.4.284" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz" integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== elliptic@6.5.4, elliptic@^6.5.4: version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== dependencies: bn.js "^4.11.9" @@ -4785,135 +4623,85 @@ elliptic@6.5.4, elliptic@^6.5.4: emittery@^0.8.1: version "0.8.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz" integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - encoding@^0.1.13: version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== dependencies: iconv-lite "^0.6.2" end-of-stream@^1.4.1: version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" enquirer@~2.3.6: version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== dependencies: ansi-colors "^4.1.1" entities@~2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + resolved "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz" integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== env-paths@^2.2.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== envinfo@^7.7.4: version "7.8.1" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== err-code@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== error-ex@^1.3.1: version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: - version "1.20.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.0.tgz#b2d526489cceca004588296334726329e0a6bfb6" - integrity sha512-URbD8tgRthKD3YcC39vbvSDrX23upXnPcnGAjQfgxXF5ID75YcENawc9ZX/9iTP9ptUyfCLIxTTuMYoRfiOVKA== - 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.1" - string.prototype.trimend "^1.0.5" - string.prototype.trimstart "^1.0.5" - unbox-primitive "^1.0.2" - -es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== - dependencies: - has "^1.0.3" - -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" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - escalade@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= escape-string-regexp@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== escodegen@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz" integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== dependencies: esprima "^4.0.1" @@ -4923,118 +4711,14 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-config-next@^12.1.4: - version "12.1.6" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.1.6.tgz#55097028982dce49159d8753000be3916ac55254" - integrity sha512-qoiS3g/EPzfCTkGkaPBSX9W0NGE/B1wNO3oWrd76QszVGrdpLggNqcO8+LR6MB0CNqtp9Q8NoeVrxNVbzM9hqA== - dependencies: - "@next/eslint-plugin-next" "12.1.6" - "@rushstack/eslint-patch" "^1.1.3" - "@typescript-eslint/parser" "^5.21.0" - eslint-import-resolver-node "^0.3.6" - eslint-import-resolver-typescript "^2.7.1" - eslint-plugin-import "^2.26.0" - eslint-plugin-jsx-a11y "^6.5.1" - eslint-plugin-react "^7.29.4" - eslint-plugin-react-hooks "^4.5.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" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz" integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== -eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== - dependencies: - debug "^3.2.7" - resolve "^1.20.0" - -eslint-import-resolver-typescript@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz#a90a4a1c80da8d632df25994c4c5fdcdd02b8751" - integrity sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ== - dependencies: - debug "^4.3.4" - glob "^7.2.0" - is-glob "^4.0.3" - resolve "^1.22.0" - tsconfig-paths "^3.14.1" - -eslint-module-utils@^2.7.3: - version "2.7.3" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" - integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== - dependencies: - debug "^3.2.7" - find-up "^2.1.0" - -eslint-plugin-import@^2.26.0: - version "2.26.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" - integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== - dependencies: - array-includes "^3.1.4" - array.prototype.flat "^1.2.5" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.3" - has "^1.0.3" - is-core-module "^2.8.1" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.values "^1.1.5" - resolve "^1.22.0" - tsconfig-paths "^3.14.1" - -eslint-plugin-jsx-a11y@^6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8" - integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g== - dependencies: - "@babel/runtime" "^7.16.3" - aria-query "^4.2.2" - array-includes "^3.1.4" - ast-types-flow "^0.0.7" - axe-core "^4.3.5" - axobject-query "^2.2.0" - damerau-levenshtein "^1.0.7" - emoji-regex "^9.2.2" - has "^1.0.3" - jsx-ast-utils "^3.2.1" - language-tags "^1.0.5" - minimatch "^3.0.4" - -eslint-plugin-react-hooks@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.5.0.tgz#5f762dfedf8b2cf431c689f533c9d3fa5dcf25ad" - integrity sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw== - -eslint-plugin-react@^7.29.4: - version "7.29.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz#4717de5227f55f3801a5fd51a16a4fa22b5914d2" - integrity sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ== - dependencies: - array-includes "^3.1.4" - array.prototype.flatmap "^1.2.5" - doctrine "^2.1.0" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.5" - object.fromentries "^2.0.5" - object.hasown "^1.1.0" - object.values "^1.1.5" - prop-types "^15.8.1" - resolve "^2.0.0-next.3" - semver "^6.3.0" - string.prototype.matchall "^4.0.6" - eslint-scope@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: esrecurse "^4.3.0" @@ -5042,7 +4726,7 @@ eslint-scope@^5.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" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== dependencies: esrecurse "^4.3.0" @@ -5050,24 +4734,24 @@ eslint-scope@^7.1.1: eslint-utils@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" 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" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== eslint-visitor-keys@^3.0.0, 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" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== eslint@^8.12.0: version "8.15.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.15.0.tgz#fea1d55a7062da48d82600d2e0974c55612a11e9" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz" integrity sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA== dependencies: "@eslint/eslintrc" "^1.2.3" @@ -5108,7 +4792,7 @@ eslint@^8.12.0: espree@^9.3.2: version "9.3.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" + resolved "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz" integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== dependencies: acorn "^8.7.1" @@ -5117,36 +4801,36 @@ espree@^9.3.2: esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.0.1, esquery@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== dependencies: estraverse "^5.1.0" esrecurse@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" estraverse@^4.1.1: version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: +estraverse@^5.1.0, estraverse@^5.2.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== estree-to-babel@^3.1.0: version "3.2.1" - resolved "https://registry.yarnpkg.com/estree-to-babel/-/estree-to-babel-3.2.1.tgz#82e78315275c3ca74475fdc8ac1a5103c8a75bf5" + resolved "https://registry.npmjs.org/estree-to-babel/-/estree-to-babel-3.2.1.tgz" integrity sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg== dependencies: "@babel/traverse" "^7.1.6" @@ -5155,40 +4839,24 @@ estree-to-babel@^3.1.0: estree-walker@^0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz" integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== esutils@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -ethereum-abi-types-generator@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/ethereum-abi-types-generator/-/ethereum-abi-types-generator-1.3.2.tgz#b804c97093a69505498dcdf6fc768131c64bb212" - integrity sha512-hoAwuxXYLZpnmBByN8fLLqlY4o5KEI8WSY9g2bC0x83sQVsrihickY1siVVcmjdOa4NPin2Bwtj4vYHcfI2jLQ== - dependencies: - "@types/bn.js" "^4.11.6" - bignumber.js "^9.0.0" - colors "^1.4.0" - dotenv "^8.2.0" - ethers "^4.0.47" - ethersv5 "npm:ethers@^5.0.32" - fs-extra "^9.0.0" - prettier "^2.0.5" - reflect-metadata "^0.1.13" - yargs "^15.3.1" - ethereum-bloom-filters@^1.0.6: version "1.0.10" - resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" + resolved "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz" integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== dependencies: js-sha3 "^0.8.0" ethereum-cryptography@^0.1.3: version "0.1.3" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz" integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== dependencies: "@types/pbkdf2" "^3.0.0" @@ -5209,7 +4877,7 @@ ethereum-cryptography@^0.1.3: ethereumjs-util@^7.1.0: version "7.1.5" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" + resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz" integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== dependencies: "@types/bn.js" "^5.1.0" @@ -5218,24 +4886,9 @@ ethereumjs-util@^7.1.0: ethereum-cryptography "^0.1.3" rlp "^2.2.4" -ethers@^4.0.47: - version "4.0.49" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.49.tgz#0eb0e9161a0c8b4761be547396bbe2fb121a8894" - integrity sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg== - dependencies: - aes-js "3.0.0" - bn.js "^4.11.9" - elliptic "6.5.4" - hash.js "1.1.3" - js-sha3 "0.5.7" - scrypt-js "2.0.4" - setimmediate "1.0.4" - uuid "2.0.1" - xmlhttprequest "1.8.0" - -ethers@^5.6.2, "ethersv5@npm:ethers@^5.0.32": +ethers@^5.6.2: version "5.6.5" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.5.tgz#3185ac7815dc640993408adf6f133ffabfbcbb63" + resolved "https://registry.npmjs.org/ethers/-/ethers-5.6.5.tgz" integrity sha512-9CTmplO9bv0s/aPw3HB3txGzKz3tUSI2EfO4dJo0W2WvaEq1ArgsEX6obV+bj5X3yY+Zgb1kAux8TDtJKe1FaA== dependencies: "@ethersproject/abi" "5.6.1" @@ -5269,45 +4922,9 @@ ethers@^5.6.2, "ethersv5@npm:ethers@^5.0.32": "@ethersproject/web" "5.6.0" "@ethersproject/wordlists" "5.6.0" -ethers@^5.6.4: - version "5.6.7" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.7.tgz#3e6257b2a0fdd5fc93e68e141cf2b9761900f374" - integrity sha512-Q8pmMraUENK0cY6cy6IvIe3e9xL/+4kBvxmUvLXg1O7Abob0c7XzWI76E29j5em/HxWMl5hYiSClmOMW3jJmdg== - dependencies: - "@ethersproject/abi" "5.6.2" - "@ethersproject/abstract-provider" "5.6.0" - "@ethersproject/abstract-signer" "5.6.1" - "@ethersproject/address" "5.6.0" - "@ethersproject/base64" "5.6.0" - "@ethersproject/basex" "5.6.0" - "@ethersproject/bignumber" "5.6.1" - "@ethersproject/bytes" "5.6.1" - "@ethersproject/constants" "5.6.0" - "@ethersproject/contracts" "5.6.1" - "@ethersproject/hash" "5.6.0" - "@ethersproject/hdnode" "5.6.1" - "@ethersproject/json-wallets" "5.6.0" - "@ethersproject/keccak256" "5.6.0" - "@ethersproject/logger" "5.6.0" - "@ethersproject/networks" "5.6.3" - "@ethersproject/pbkdf2" "5.6.0" - "@ethersproject/properties" "5.6.0" - "@ethersproject/providers" "5.6.7" - "@ethersproject/random" "5.6.0" - "@ethersproject/rlp" "5.6.0" - "@ethersproject/sha2" "5.6.0" - "@ethersproject/signing-key" "5.6.1" - "@ethersproject/solidity" "5.6.0" - "@ethersproject/strings" "5.6.0" - "@ethersproject/transactions" "5.6.1" - "@ethersproject/units" "5.6.0" - "@ethersproject/wallet" "5.6.1" - "@ethersproject/web" "5.6.0" - "@ethersproject/wordlists" "5.6.0" - ethjs-unit@0.1.6: version "0.1.6" - resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + resolved "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz" integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== dependencies: bn.js "4.11.6" @@ -5315,12 +4932,12 @@ ethjs-unit@0.1.6: eventemitter3@^4.0.4: version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== evp_bytestokey@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== dependencies: md5.js "^1.3.4" @@ -5328,7 +4945,7 @@ evp_bytestokey@^1.0.3: execa@^5.0.0: version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: cross-spawn "^7.0.3" @@ -5343,12 +4960,12 @@ execa@^5.0.0: exit@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= expect@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" + resolved "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz" integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== dependencies: "@jest/types" "^27.5.1" @@ -5358,7 +4975,7 @@ expect@^27.5.1: external-editor@^3.0.3: version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: chardet "^0.7.0" @@ -5367,12 +4984,12 @@ external-editor@^3.0.3: fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-glob@3.2.7: version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz" integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== dependencies: "@nodelib/fs.stat" "^2.0.2" @@ -5383,7 +5000,7 @@ fast-glob@3.2.7: fast-glob@^3.2.9: version "3.2.11" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz" integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== dependencies: "@nodelib/fs.stat" "^2.0.2" @@ -5394,66 +5011,66 @@ fast-glob@^3.2.9: fast-json-stable-stringify@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= fastq@^1.6.0: version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== dependencies: reusify "^1.0.4" fb-watchman@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz" integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== dependencies: bser "2.1.1" figures@3.2.0, figures@^3.0.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== dependencies: escape-string-regexp "^1.0.5" file-entry-cache@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: flat-cache "^3.0.4" filelist@^1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== dependencies: minimatch "^5.0.1" fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" -find-up@^2.0.0, find-up@^2.1.0: +find-up@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= dependencies: locate-path "^2.0.0" find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: locate-path "^5.0.0" @@ -5461,7 +5078,7 @@ find-up@^4.0.0, find-up@^4.1.0: find-up@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" @@ -5469,7 +5086,7 @@ find-up@^5.0.0: flat-cache@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: flatted "^3.1.0" @@ -5477,22 +5094,22 @@ flat-cache@^3.0.4: flat@^5.0.2: version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== flatted@^3.1.0: version "3.2.5" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz" integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== follow-redirects@^1.15.0: version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== foreground-child@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz" integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== dependencies: cross-spawn "^7.0.0" @@ -5500,7 +5117,7 @@ foreground-child@^2.0.0: form-data@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: asynckit "^0.4.0" @@ -5509,7 +5126,7 @@ form-data@^3.0.0: form-data@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" @@ -5518,21 +5135,21 @@ form-data@^4.0.0: fs-constants@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== fs-extra@^10.1.0: version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^9.0.0, fs-extra@^9.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" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" @@ -5542,49 +5159,34 @@ fs-extra@^9.0.0, fs-extra@^9.1.0: fs-minipass@^2.0.0, fs-minipass@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: minipass "^3.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" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== function-bind@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" - functional-red-black-tree@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -functions-have-names@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - gauge@^4.0.3: version "4.0.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz" integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== dependencies: aproba "^1.0.3 || ^2.0.0" @@ -5598,17 +5200,17 @@ gauge@^4.0.3: gensync@^1.0.0-beta.2: version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.1, get-caller-file@^2.0.5: +get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz" integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== dependencies: function-bind "^1.1.1" @@ -5617,12 +5219,12 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: get-package-type@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== get-pkg-repo@^4.0.0: version "4.2.1" - resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" + resolved "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz" integrity sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== dependencies: "@hutson/parse-repository-url" "^3.0.0" @@ -5632,25 +5234,17 @@ get-pkg-repo@^4.0.0: get-port@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" + resolved "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== get-stream@^6.0.0: version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - git-raw-commits@^2.0.8: version "2.0.11" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" + resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz" integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== dependencies: dargs "^7.0.0" @@ -5661,7 +5255,7 @@ git-raw-commits@^2.0.8: git-remote-origin-url@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" + resolved "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz" integrity sha1-UoJlna4hBxRaERJhEq0yFuxfpl8= dependencies: gitconfiglocal "^1.0.0" @@ -5669,7 +5263,7 @@ git-remote-origin-url@^2.0.0: git-semver-tags@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-4.1.1.tgz#63191bcd809b0ec3e151ba4751c16c444e5b5780" + resolved "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz" integrity sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA== dependencies: meow "^8.0.0" @@ -5677,7 +5271,7 @@ git-semver-tags@^4.1.1: git-up@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/git-up/-/git-up-7.0.0.tgz#bace30786e36f56ea341b6f69adfd83286337467" + resolved "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz" integrity sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ== dependencies: is-ssh "^1.4.0" @@ -5685,35 +5279,35 @@ git-up@^7.0.0: 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" + resolved "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz" integrity sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA== dependencies: git-up "^7.0.0" gitconfiglocal@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" + resolved "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz" integrity sha1-QdBF84UaXqiPA/JMocYXgRRGS5s= dependencies: ini "^1.3.2" glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" glob-parent@^6.0.1: version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: is-glob "^4.0.3" glob@7.1.4: version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz" integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== dependencies: fs.realpath "^1.0.0" @@ -5723,21 +5317,9 @@ glob@7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.1.7: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0: +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" @@ -5749,7 +5331,7 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0: glob@^8.0.1: version "8.0.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" + resolved "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz" integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== dependencies: fs.realpath "^1.0.0" @@ -5760,19 +5342,19 @@ glob@^8.0.1: globals@^11.1.0: version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.6.0, globals@^13.9.0: version "13.14.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.14.0.tgz#daf3ff9b4336527cf56e98330b6f64bea9aff9df" + resolved "https://registry.npmjs.org/globals/-/globals-13.14.0.tgz" integrity sha512-ERO68sOYwm5UuLvSJTY7w7NP2c8S4UcXs3X1GBX8cwOr+ShOcDBbCY5mH4zxz0jsYCdJ8ve8Mv9n2YGJMB1aeg== dependencies: type-fest "^0.20.2" globby@^11.0.2, globby@^11.0.4: version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" @@ -5784,12 +5366,12 @@ globby@^11.0.2, globby@^11.0.4: 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.9: version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== handlebars@^4.7.7: version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz" integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== dependencies: minimist "^1.2.5" @@ -5801,58 +5383,53 @@ handlebars@^4.7.7: hard-rejection@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + resolved "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== dependencies: get-intrinsic "^1.1.1" -has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: +has-symbols@^1.0.1, has-symbols@^1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== has-tostringtag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== dependencies: has-symbols "^1.0.2" has-unicode@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= has@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" hash-base@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: inherits "^2.0.4" @@ -5861,20 +5438,12 @@ hash-base@^3.0.0: hash-sum@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" + resolved "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz" integrity sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA== -hash.js@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" - integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.0" - hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== dependencies: inherits "^2.0.3" @@ -5882,12 +5451,12 @@ hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: he@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== hmac-drbg@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= dependencies: hash.js "^1.0.3" @@ -5896,50 +5465,50 @@ hmac-drbg@^1.0.1: hosted-git-info@^2.1.4: version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" 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" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz" 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" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz" integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== dependencies: lru-cache "^6.0.0" hosted-git-info@^5.0.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-5.2.1.tgz#0ba1c97178ef91f3ab30842ae63d6a272341156f" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz" integrity sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw== dependencies: lru-cache "^7.5.1" html-encoding-sniffer@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz" integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== dependencies: whatwg-encoding "^1.0.5" html-escaper@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== http-cache-semantics@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz" integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== 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" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== dependencies: "@tootallnate/once" "1" @@ -5948,7 +5517,7 @@ http-proxy-agent@^4.0.1: 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" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== dependencies: "@tootallnate/once" "2" @@ -5957,7 +5526,7 @@ http-proxy-agent@^5.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" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" @@ -5965,55 +5534,62 @@ https-proxy-agent@^5.0.0: human-signals@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== humanize-ms@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz" integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== dependencies: ms "^2.0.0" iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" iconv-lite@^0.6.2: version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" +idna-uts46-hx@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-4.1.2.tgz" + integrity sha512-EAB3egrcalcTQHcjA7yzXXkE4E09TIFerR//4yUYGYCeCfXmkU0LgsGJgYSIQA1lQunfsn4ZCWJhbelgl3cdiQ== + dependencies: + punycode "^2.1.1" + ieee754@^1.1.13, ieee754@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore-walk@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-5.0.1.tgz#5f199e23e1288f518d90358d461387788a154776" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz" integrity sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw== dependencies: minimatch "^5.0.1" ignore@^5.0.4: version "5.2.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.1.tgz#c2b1f76cb999ede1502f3a226a9310fdfe88d46c" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz" integrity sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA== ignore@^5.1.8, ignore@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" @@ -6021,7 +5597,7 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: import-local@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: pkg-dir "^4.2.0" @@ -6029,22 +5605,22 @@ import-local@^3.0.2: imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= indent-string@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== infer-owner@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" @@ -6052,17 +5628,17 @@ inflight@^1.0.4: inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== ini@^1.3.2, ini@^1.3.4: version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 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" + resolved "https://registry.npmjs.org/init-package-json/-/init-package-json-3.0.2.tgz" integrity sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A== dependencies: npm-package-arg "^9.0.1" @@ -6075,7 +5651,7 @@ init-package-json@^3.0.2: inquirer@^8.2.4: version "8.2.5" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.5.tgz#d8654a7542c35a9b9e069d27e2df4858784d54f8" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz" integrity sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ== dependencies: ansi-escapes "^4.2.1" @@ -6094,93 +5670,57 @@ 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== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - ip@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" + resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== is-arrayish@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - is-buffer@^1.1.5: version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -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-ci@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + resolved "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== dependencies: ci-info "^2.0.0" -is-core-module@^2.2.0, is-core-module@^2.8.1: - 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== - dependencies: - has "^1.0.3" - is-core-module@^2.5.0, is-core-module@^2.9.0: version "2.11.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz" integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== dependencies: has "^1.0.3" -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== +is-core-module@^2.8.1: + version "2.9.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== dependencies: - has-tostringtag "^1.0.0" + has "^1.0.3" is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== is-expression@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-3.0.0.tgz#39acaa6be7fd1f3471dc42c7416e61c24317ac9f" + resolved "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz" integrity sha512-vyMeQMq+AiH5uUnoBfMTwf18tO3bM6k1QXBE9D6ueAAquEfCZe3AJPtud9g6qS0+4X8xA7ndpZiDyeb2l2qOBw== dependencies: acorn "~4.0.2" @@ -6188,195 +5728,168 @@ is-expression@^3.0.0: is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-generator-fn@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" is-hex-prefixed@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + resolved "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz" integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== is-interactive@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== is-lambda@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + resolved "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz" integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== is-module@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-obj@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= is-plain-obj@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== is-plain-object@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" is-plain-object@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== is-potential-custom-element-name@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== is-promise@^2.0.0: version "2.2.2" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + resolved "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== -is-regex@^1.0.3, is-regex@^1.1.4: +is-regex@^1.0.3: version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== dependencies: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - is-ssh@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.4.0.tgz#4f8220601d2839d8fa624b3106f8e8884f01b8b2" + resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz" integrity sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== dependencies: protocols "^2.0.1" is-stream@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - is-text-path@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + resolved "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz" integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4= dependencies: text-extensions "^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" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= is-unicode-supported@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - is-wsl@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: is-docker "^2.0.0" isarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= isobject@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== +isomorphic-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz#0267b005049046d2421207215d45d6a262b8b8b4" + integrity sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA== + dependencies: + node-fetch "^2.6.1" + whatwg-fetch "^3.4.1" + +isomorphic-ws@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz" + integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== + istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz" integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== dependencies: "@babel/core" "^7.12.3" @@ -6387,7 +5900,7 @@ istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: istanbul-lib-report@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== dependencies: istanbul-lib-coverage "^3.0.0" @@ -6396,7 +5909,7 @@ istanbul-lib-report@^3.0.0: istanbul-lib-source-maps@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== dependencies: debug "^4.1.1" @@ -6405,7 +5918,7 @@ istanbul-lib-source-maps@^4.0.0: istanbul-reports@^3.1.3: version "3.1.4" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz" integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== dependencies: html-escaper "^2.0.0" @@ -6413,7 +5926,7 @@ istanbul-reports@^3.1.3: istanbul-reports@^3.1.4: version "3.1.5" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz" integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== dependencies: html-escaper "^2.0.0" @@ -6421,7 +5934,7 @@ istanbul-reports@^3.1.4: jake@^10.8.5: version "10.8.5" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" + resolved "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz" integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== dependencies: async "^3.2.3" @@ -6431,7 +5944,7 @@ jake@^10.8.5: jest-changed-files@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz" integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== dependencies: "@jest/types" "^27.5.1" @@ -6440,7 +5953,7 @@ jest-changed-files@^27.5.1: jest-circus@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz" integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== dependencies: "@jest/environment" "^27.5.1" @@ -6465,7 +5978,7 @@ jest-circus@^27.5.1: jest-cli@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz" integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== dependencies: "@jest/core" "^27.5.1" @@ -6483,7 +5996,7 @@ jest-cli@^27.5.1: jest-config@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz" integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== dependencies: "@babel/core" "^7.8.0" @@ -6513,7 +6026,7 @@ jest-config@^27.5.1: jest-diff@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz" integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== dependencies: chalk "^4.0.0" @@ -6523,14 +6036,14 @@ jest-diff@^27.5.1: jest-docblock@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz" integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== dependencies: detect-newline "^3.0.0" jest-each@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz" integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== dependencies: "@jest/types" "^27.5.1" @@ -6541,7 +6054,7 @@ jest-each@^27.5.1: jest-environment-jsdom@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" + resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz" integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== dependencies: "@jest/environment" "^27.5.1" @@ -6554,7 +6067,7 @@ jest-environment-jsdom@^27.5.1: jest-environment-node@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz" integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== dependencies: "@jest/environment" "^27.5.1" @@ -6566,12 +6079,12 @@ jest-environment-node@^27.5.1: jest-get-type@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz" integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== jest-haste-map@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz" integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== dependencies: "@jest/types" "^27.5.1" @@ -6591,7 +6104,7 @@ jest-haste-map@^27.5.1: jest-jasmine2@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" + resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz" integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== dependencies: "@jest/environment" "^27.5.1" @@ -6614,7 +6127,7 @@ jest-jasmine2@^27.5.1: jest-leak-detector@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz" integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== dependencies: jest-get-type "^27.5.1" @@ -6622,7 +6135,7 @@ jest-leak-detector@^27.5.1: jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz" integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== dependencies: chalk "^4.0.0" @@ -6632,7 +6145,7 @@ jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1: jest-message-util@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz" integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== dependencies: "@babel/code-frame" "^7.12.13" @@ -6647,7 +6160,7 @@ jest-message-util@^27.5.1: jest-mock@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz" integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== dependencies: "@jest/types" "^27.5.1" @@ -6655,17 +6168,17 @@ jest-mock@^27.5.1: jest-pnp-resolver@^1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== jest-regex-util@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz" integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== jest-resolve-dependencies@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz" integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== dependencies: "@jest/types" "^27.5.1" @@ -6674,7 +6187,7 @@ jest-resolve-dependencies@^27.5.1: jest-resolve@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== dependencies: "@jest/types" "^27.5.1" @@ -6690,7 +6203,7 @@ jest-resolve@^27.5.1: jest-runner@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz" integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== dependencies: "@jest/console" "^27.5.1" @@ -6717,7 +6230,7 @@ jest-runner@^27.5.1: jest-runtime@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz" integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== dependencies: "@jest/environment" "^27.5.1" @@ -6745,7 +6258,7 @@ jest-runtime@^27.5.1: jest-serializer@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz" integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== dependencies: "@types/node" "*" @@ -6753,7 +6266,7 @@ jest-serializer@^27.5.1: jest-snapshot@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz" integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== dependencies: "@babel/core" "^7.7.2" @@ -6781,7 +6294,7 @@ jest-snapshot@^27.5.1: jest-util@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz" integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== dependencies: "@jest/types" "^27.5.1" @@ -6793,7 +6306,7 @@ jest-util@^27.5.1: jest-validate@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz" integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== dependencies: "@jest/types" "^27.5.1" @@ -6805,7 +6318,7 @@ jest-validate@^27.5.1: jest-watcher@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz" integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== dependencies: "@jest/test-result" "^27.5.1" @@ -6818,7 +6331,7 @@ jest-watcher@^27.5.1: jest-worker@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: "@types/node" "*" @@ -6827,43 +6340,38 @@ jest-worker@^27.5.1: jest@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" + resolved "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz" integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== dependencies: "@jest/core" "^27.5.1" import-local "^3.0.2" jest-cli "^27.5.1" -js-sha3@0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" - integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc= - js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== js-stringify@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" + resolved "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz" integrity sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" js-yaml@^3.10.0, js-yaml@^3.13.1: version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" @@ -6871,14 +6379,14 @@ js-yaml@^3.10.0, js-yaml@^3.13.1: js2xmlparser@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-4.0.2.tgz#2a1fdf01e90585ef2ae872a01bc169c6a8d5e60a" + resolved "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz" integrity sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA== dependencies: xmlcreate "^2.0.4" jsdoc@^3.6.11: version "3.6.11" - resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.6.11.tgz#8bbb5747e6f579f141a5238cbad4e95e004458ce" + resolved "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.11.tgz" integrity sha512-8UCU0TYeIYD9KeLzEcAu2q8N/mx9O3phAGl32nmHlE0LpaJL71mMkP4d+QE5zWfNt50qheHtOZ0qoxVrsX5TUg== dependencies: "@babel/parser" "^7.9.4" @@ -6899,7 +6407,7 @@ jsdoc@^3.6.11: jsdom@^16.6.0: version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz" integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== dependencies: abab "^2.0.5" @@ -6932,64 +6440,64 @@ jsdom@^16.6.0: jsesc@^2.5.1: version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== jsesc@~0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= 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" + resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= json-stringify-nice@^1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" + resolved "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz" integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== json-stringify-safe@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= json5@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== dependencies: minimist "^1.2.0" json5@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== jsonc-parser@3.2.0, jsonc-parser@^3.0.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz" integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== jsonfile@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: universalify "^2.0.0" @@ -6998,38 +6506,30 @@ jsonfile@^6.0.1: jsonparse@^1.2.0, jsonparse@^1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= jstransformer@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz#ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3" + resolved "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz" integrity sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A== dependencies: is-promise "^2.0.0" promise "^7.0.1" -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz#e624f259143b9062c92b6413ff92a164c80d3ccb" - integrity sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q== - dependencies: - array-includes "^3.1.4" - object.assign "^4.1.2" - just-diff-apply@^5.2.0: version "5.4.1" - resolved "https://registry.yarnpkg.com/just-diff-apply/-/just-diff-apply-5.4.1.tgz#1debed059ad009863b4db0e8d8f333d743cdd83b" + resolved "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.4.1.tgz" integrity sha512-AAV5Jw7tsniWwih8Ly3fXxEZ06y+6p5TwQMsw0dzZ/wPKilzyDgdAnL0Ug4NNIquPUOh1vfFWEHbmXUqM5+o8g== just-diff@^5.0.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-5.1.1.tgz#8da6414342a5ed6d02ccd64f5586cbbed3146202" + resolved "https://registry.npmjs.org/just-diff/-/just-diff-5.1.1.tgz" integrity sha512-u8HXJ3HlNrTzY7zrYYKjNEfBlyjqhdBkoyTVdjtn7p02RJD5NvR8rIClzeGA7t+UYP1/7eAkWNLU0+P3QrEqKQ== keccak256@^1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/keccak256/-/keccak256-1.0.6.tgz#dd32fb771558fed51ce4e45a035ae7515573da58" + resolved "https://registry.npmjs.org/keccak256/-/keccak256-1.0.6.tgz" integrity sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw== dependencies: bn.js "^5.2.0" @@ -7038,7 +6538,7 @@ keccak256@^1.0.6: keccak@^3.0.0, keccak@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" + resolved "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz" integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== dependencies: node-addon-api "^2.0.0" @@ -7047,48 +6547,36 @@ keccak@^3.0.0, keccak@^3.0.2: kind-of@^3.0.2: version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== dependencies: is-buffer "^1.1.5" kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== klaw@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146" + resolved "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz" integrity sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g== dependencies: graceful-fs "^4.1.9" kleur@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -language-subtag-registry@~0.3.2: - version "0.3.21" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" - integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== - -language-tags@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" - integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= - dependencies: - language-subtag-registry "~0.3.2" - lazy-cache@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + resolved "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz" integrity sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ== lerna@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-6.1.0.tgz#693145393ec22fd3ca98d817deab2246c1e2b107" + resolved "https://registry.npmjs.org/lerna/-/lerna-6.1.0.tgz" integrity sha512-3qAjIj8dgBwHtCAiLbq4VU/C1V9D1tvTLm2owZubdGAN72aB5TxuCu2mcw+yeEorOcXuR9YWx7EXIkAf+G0N2w== dependencies: "@lerna/add" "6.1.0" @@ -7117,12 +6605,12 @@ lerna@^6.1.0: leven@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== levn@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: prelude-ls "^1.2.1" @@ -7130,7 +6618,7 @@ levn@^0.4.1: levn@~0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= dependencies: prelude-ls "~1.1.2" @@ -7138,7 +6626,7 @@ levn@~0.3.0: libnpmaccess@^6.0.3: version "6.0.4" - resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-6.0.4.tgz#2dd158bd8a071817e2207d3b201d37cf1ad6ae6b" + resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-6.0.4.tgz" integrity sha512-qZ3wcfIyUoW0+qSFkMBovcTrSGJ3ZeyvpR7d5N9pEYv/kXs8sHP2wiqEIXBKLFrZlmM0kR0RJD7mtfLngtlLag== dependencies: aproba "^2.0.0" @@ -7148,7 +6636,7 @@ libnpmaccess@^6.0.3: libnpmpublish@^6.0.4: version "6.0.5" - resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-6.0.5.tgz#5a894f3de2e267d62f86be2a508e362599b5a4b1" + resolved "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-6.0.5.tgz" integrity sha512-LUR08JKSviZiqrYTDfywvtnsnxr+tOvBU0BF8H+9frt7HMvc6Qn6F8Ubm72g5hDTHbq8qupKfDvDAln2TVPvFg== dependencies: normalize-package-data "^4.0.0" @@ -7159,19 +6647,19 @@ libnpmpublish@^6.0.4: 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" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== linkify-it@^3.0.1: version "3.0.3" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" + resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz" integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== dependencies: uc.micro "^1.0.1" load-json-file@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= dependencies: graceful-fs "^4.1.2" @@ -7181,7 +6669,7 @@ load-json-file@^4.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" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz" integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== dependencies: graceful-fs "^4.1.15" @@ -7191,7 +6679,7 @@ load-json-file@^6.2.0: locate-path@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= dependencies: p-locate "^2.0.0" @@ -7199,51 +6687,51 @@ locate-path@^2.0.0: locate-path@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: p-locate "^4.1.0" locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" lodash.debounce@^4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= lodash.get@^4.4.2: version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== lodash.isequal@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + resolved "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== lodash.ismatch@^4.4.0: version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" + resolved "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz" integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== lodash.merge@^4.6.2: version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== lodash@^4.17.15, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== log-symbols@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: chalk "^4.1.0" @@ -7251,19 +6739,19 @@ log-symbols@^4.1.0: longest@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + resolved "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz" integrity sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg== loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" lru-cache@^4.1.5: version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== dependencies: pseudomap "^1.0.2" @@ -7271,24 +6759,24 @@ lru-cache@^4.1.5: lru-cache@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: version "7.14.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.14.1.tgz#8da8d2f5f59827edb388e63e459ac23d6d408fea" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz" integrity sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA== lunr@^2.3.9: version "2.3.9" - resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" + resolved "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz" integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== make-dir@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== dependencies: pify "^4.0.1" @@ -7296,14 +6784,14 @@ make-dir@^2.1.0: make-dir@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6: version "10.2.1" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz" integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== dependencies: agentkeepalive "^4.2.1" @@ -7325,29 +6813,29 @@ make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6: makeerror@1.0.12: version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== dependencies: tmpl "1.0.5" map-obj@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= map-obj@^4.0.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== markdown-it-anchor@^8.4.1: version "8.6.6" - resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-8.6.6.tgz#4a12e358c9c2167ee28cb7a5f10e29d6f1ffd7ca" + resolved "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.6.tgz" integrity sha512-jRW30YGywD2ESXDc+l17AiritL0uVaSnWsb26f+68qaW9zgbIIr1f4v2Nsvc0+s0Z2N3uX6t/yAw7BwCQ1wMsA== markdown-it@^12.3.2: version "12.3.2" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" + resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz" integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== dependencies: argparse "^2.0.1" @@ -7358,12 +6846,12 @@ markdown-it@^12.3.2: marked@^4.0.10, marked@^4.2.4: version "4.2.4" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.4.tgz#5a4ce6c7a1ae0c952601fce46376ee4cf1797e1c" + resolved "https://registry.npmjs.org/marked/-/marked-4.2.4.tgz" integrity sha512-Wcc9ikX7Q5E4BYDPvh1C6QNSxrjC9tBgz+A/vAhp59KXUgachw++uMvMKiSW8oA85nopmPZcEvBoex/YLMsiyA== md5.js@^1.3.4: version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== dependencies: hash-base "^3.0.0" @@ -7372,12 +6860,12 @@ md5.js@^1.3.4: mdurl@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz" integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== meow@^8.0.0: version "8.1.2" - resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" + resolved "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz" integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== dependencies: "@types/minimist" "^1.2.0" @@ -7394,17 +6882,17 @@ meow@^8.0.0: merge-stream@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== merkletreejs@^0.2.32: version "0.2.32" - resolved "https://registry.yarnpkg.com/merkletreejs/-/merkletreejs-0.2.32.tgz#cf1c0760e2904e4a1cc269108d6009459fd06223" + resolved "https://registry.npmjs.org/merkletreejs/-/merkletreejs-0.2.32.tgz" integrity sha512-TostQBiwYRIwSE5++jGmacu3ODcKAgqb0Y/pnIohXS7sWxh1gCkSptbmF1a43faehRDpcHf7J/kv0Ml2D/zblQ== dependencies: bignumber.js "^9.0.1" @@ -7415,7 +6903,7 @@ merkletreejs@^0.2.32: micromatch@^4.0.4: version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: braces "^3.0.2" @@ -7423,60 +6911,60 @@ micromatch@^4.0.4: mime-db@1.52.0: version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@^2.1.12: version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== min-indent@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== minimalistic-crypto-utils@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= minimatch@3.0.5: version "3.0.5" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz" integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== dependencies: brace-expansion "^1.1.7" minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" minimatch@^5.0.1, minimatch@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.1.tgz#6c9dffcf9927ff2a31e74b5af11adf8b9604b022" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz" integrity sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g== dependencies: brace-expansion "^2.0.1" minimist-options@4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz" integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== dependencies: arrify "^1.0.1" @@ -7485,19 +6973,19 @@ minimist-options@4.1.0: minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== minipass-collect@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== dependencies: minipass "^3.0.0" minipass-fetch@^2.0.3: version "2.1.2" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" + resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz" integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== dependencies: minipass "^3.1.6" @@ -7508,14 +6996,14 @@ minipass-fetch@^2.0.3: minipass-flush@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== dependencies: minipass "^3.0.0" minipass-json-stream@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" + resolved "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz" integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== dependencies: jsonparse "^1.3.1" @@ -7523,35 +7011,35 @@ minipass-json-stream@^1.0.1: minipass-pipeline@^1.2.4: version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== dependencies: minipass "^3.0.0" minipass-sized@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + resolved "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz" integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== dependencies: minipass "^3.0.0" 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" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== dependencies: yallist "^4.0.0" minipass@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.0.0.tgz#7cebb0f9fa7d56f0c5b17853cbe28838a8dbbd3b" + resolved "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz" integrity sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw== dependencies: yallist "^4.0.0" minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: minipass "^3.0.0" @@ -7559,7 +7047,7 @@ minizlib@^2.1.1, minizlib@^2.1.2: mkdirp-infer-owner@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" + resolved "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz" integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== dependencies: chownr "^2.0.0" @@ -7568,32 +7056,27 @@ mkdirp-infer-owner@^2.0.0: mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== modify-values@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" + resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.0.0, ms@^2.1.1: +ms@^2.0.0: version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== multimatch@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" + resolved "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz" integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== dependencies: "@types/minimatch" "^3.0.3" @@ -7604,56 +7087,56 @@ multimatch@^5.0.0: mute-stream@0.0.8, mute-stream@~0.0.4: version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== natural-compare@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= negotiator@^0.6.3: version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== neo-async@^2.6.0, neo-async@^2.6.1: version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== node-addon-api@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz" integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== node-addon-api@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz" integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== node-dir@^0.1.10: version "0.1.17" - resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" + resolved "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz" integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== dependencies: minimatch "^3.0.2" node-fetch@^2.6.1, node-fetch@^2.6.7: version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: whatwg-url "^5.0.0" 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" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz" integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg== node-gyp@^9.0.0: version "9.3.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.3.0.tgz#f8eefe77f0ad8edb3b3b898409b53e697642b319" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.0.tgz" integrity sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q== dependencies: env-paths "^2.2.0" @@ -7669,36 +7152,36 @@ node-gyp@^9.0.0: node-int64@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= node-releases@^2.0.3: version "2.0.4" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz" integrity sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ== node-releases@^2.0.6: version "2.0.8" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.8.tgz#0f349cdc8fcfa39a92ac0be9bc48b7706292b9ae" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz" integrity sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A== nopt@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + resolved "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz" integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== dependencies: abbrev "1" nopt@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" + resolved "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz" integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== dependencies: abbrev "^1.0.0" normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: hosted-git-info "^2.1.4" @@ -7708,7 +7191,7 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: 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" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz" integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== dependencies: hosted-git-info "^4.0.1" @@ -7718,7 +7201,7 @@ normalize-package-data@^3.0.0: normalize-package-data@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-4.0.1.tgz#b46b24e0616d06cadf9d5718b29b6d445a82a62c" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz" integrity sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg== dependencies: hosted-git-info "^5.0.0" @@ -7728,43 +7211,43 @@ normalize-package-data@^4.0.0: normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== npm-bundled@^1.1.1: version "1.1.2" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz" integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== 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" + resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz" integrity sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw== dependencies: npm-normalize-package-bin "^2.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" + resolved "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz" integrity sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA== 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" + resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== 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" + resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz" integrity sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ== 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" + resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.1.tgz" integrity sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg== dependencies: hosted-git-info "^3.0.6" @@ -7773,7 +7256,7 @@ npm-package-arg@8.1.1: npm-package-arg@^9.0.0, npm-package-arg@^9.0.1: version "9.1.2" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-9.1.2.tgz#fc8acecb00235f42270dda446f36926ddd9ac2bc" + resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz" integrity sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg== dependencies: hosted-git-info "^5.0.0" @@ -7783,7 +7266,7 @@ npm-package-arg@^9.0.0, npm-package-arg@^9.0.1: npm-packlist@^5.1.0, npm-packlist@^5.1.1: version "5.1.3" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-5.1.3.tgz#69d253e6fd664b9058b85005905012e00e69274b" + resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz" integrity sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg== dependencies: glob "^8.0.1" @@ -7793,7 +7276,7 @@ npm-packlist@^5.1.0, npm-packlist@^5.1.1: npm-pick-manifest@^7.0.0: version "7.0.2" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz#1d372b4e7ea7c6712316c0e99388a73ed3496e84" + resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz" integrity sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw== dependencies: npm-install-checks "^5.0.0" @@ -7803,7 +7286,7 @@ npm-pick-manifest@^7.0.0: npm-registry-fetch@^13.0.0, npm-registry-fetch@^13.0.1, npm-registry-fetch@^13.3.0: version "13.3.1" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz#bb078b5fa6c52774116ae501ba1af2a33166af7e" + resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz" integrity sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw== dependencies: make-fetch-happen "^10.0.6" @@ -7816,14 +7299,14 @@ npm-registry-fetch@^13.0.0, npm-registry-fetch@^13.0.1, npm-registry-fetch@^13.3 npm-run-path@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" npmlog@^6.0.0, npmlog@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz" integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== dependencies: are-we-there-yet "^3.0.0" @@ -7833,7 +7316,7 @@ npmlog@^6.0.0, npmlog@^6.0.2: number-to-bn@1.7.0: version "1.7.0" - resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + resolved "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz" integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== dependencies: bn.js "4.11.6" @@ -7841,12 +7324,12 @@ number-to-bn@1.7.0: nwsapi@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== nx@15.3.3, "nx@>=14.8.6 < 16": version "15.3.3" - resolved "https://registry.yarnpkg.com/nx/-/nx-15.3.3.tgz#4ad357310112bad1c4fbfded965bbbe00a2a906f" + resolved "https://registry.npmjs.org/nx/-/nx-15.3.3.tgz" integrity sha512-yR102AlVW5Sb7X1e9cyR+0h44RD6c3eLJbAZ0yVFKPCKw+zQTdGvAqITtB6ZeFnPkg6Qq6f1oWu6G0n6f2cTpw== dependencies: "@nrwl/cli" "15.3.3" @@ -7887,22 +7370,17 @@ nx@15.3.3, "nx@>=14.8.6 < 16": object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -object-inspect@^1.12.0, object-inspect@^1.9.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" - integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== - object-keys@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.0, object.assign@^4.1.2: +object.assign@^4.1.0: version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz" integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== dependencies: call-bind "^1.0.0" @@ -7910,58 +7388,23 @@ object.assign@^4.1.0, object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" -object.entries@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" - integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.fromentries@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" - integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.hasown@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" - integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== - dependencies: - define-properties "^1.1.4" - es-abstract "^1.19.5" - -object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - once@^1.3.0, once@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" open@^8.4.0: version "8.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + resolved "https://registry.npmjs.org/open/-/open-8.4.0.tgz" integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== dependencies: define-lazy-prop "^2.0.0" @@ -7970,7 +7413,7 @@ open@^8.4.0: optionator@^0.8.1: version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== dependencies: deep-is "~0.1.3" @@ -7982,7 +7425,7 @@ optionator@^0.8.1: optionator@^0.9.1: version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: deep-is "^0.1.3" @@ -7994,7 +7437,7 @@ optionator@^0.9.1: ora@^5.4.1: version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== dependencies: bl "^4.1.0" @@ -8009,76 +7452,76 @@ ora@^5.4.1: os-tmpdir@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= p-finally@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= p-limit@^1.1.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== dependencies: p-try "^1.0.0" p-limit@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" p-limit@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-locate@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= dependencies: p-limit "^1.1.0" p-locate@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: p-limit "^2.2.0" p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" 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" + resolved "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz" integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== p-map@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" p-pipe@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" + resolved "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz" integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== p-queue@^6.6.2: version "6.6.2" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + resolved "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz" integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== dependencies: eventemitter3 "^4.0.4" @@ -8086,36 +7529,36 @@ p-queue@^6.6.2: 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" + resolved "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz" integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== p-timeout@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz" integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== dependencies: p-finally "^1.0.0" p-try@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= p-try@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== p-waterfall@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee" + resolved "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz" integrity sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== dependencies: p-reduce "^2.0.0" pacote@^13.0.3, pacote@^13.6.1: version "13.6.2" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-13.6.2.tgz#0d444ba3618ab3e5cd330b451c22967bbd0ca48a" + resolved "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz" integrity sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg== dependencies: "@npmcli/git" "^3.0.0" @@ -8142,14 +7585,14 @@ pacote@^13.0.3, pacote@^13.6.1: parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" 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" + resolved "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-2.0.2.tgz" integrity sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA== dependencies: json-parse-even-better-errors "^2.3.1" @@ -8158,7 +7601,7 @@ parse-conflict-json@^2.0.1: parse-json@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= dependencies: error-ex "^1.3.1" @@ -8166,7 +7609,7 @@ parse-json@^4.0.0: parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" @@ -8176,63 +7619,63 @@ parse-json@^5.0.0, parse-json@^5.2.0: parse-path@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-7.0.0.tgz#605a2d58d0a749c8594405d8cc3a2bf76d16099b" + resolved "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz" integrity sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog== dependencies: protocols "^2.0.0" parse-url@^8.1.0: version "8.1.0" - resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-8.1.0.tgz#972e0827ed4b57fc85f0ea6b0d839f0d8a57a57d" + resolved "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz" integrity sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w== dependencies: parse-path "^7.0.0" parse5@6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== path-exists@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6, path-parse@^1.0.7: +path-parse@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-type@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== dependencies: pify "^3.0.0" path-type@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pbkdf2@^3.0.17: version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== dependencies: create-hash "^1.1.2" @@ -8243,64 +7686,59 @@ pbkdf2@^3.0.17: picocolors@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pify@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= pify@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= pify@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" 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" + resolved "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz" integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== pirates@^4.0.4: version "4.0.5" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== pkg-dir@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" prelude-ls@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prelude-ls@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prettier@^2.0.5: - version "2.6.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" - integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== - pretty-format@^27.0.0, pretty-format@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== dependencies: ansi-regex "^5.0.1" @@ -8309,37 +7747,37 @@ pretty-format@^27.0.0, pretty-format@^27.5.1: private@^0.1.8: version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== proc-log@^2.0.0, proc-log@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-2.0.1.tgz#8f3f69a1f608de27878f91f5c688b225391cb685" + resolved "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz" integrity sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw== 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" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== promise-all-reject-late@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" + resolved "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz" 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" + resolved "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.1.tgz" integrity sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q== promise-inflight@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== promise-retry@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + resolved "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz" integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== dependencies: err-code "^2.0.2" @@ -8347,14 +7785,14 @@ promise-retry@^2.0.1: promise@^7.0.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + resolved "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz" integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== dependencies: asap "~2.0.3" prompts@^2.0.1: version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: kleur "^3.0.3" @@ -8362,14 +7800,14 @@ prompts@^2.0.1: promzard@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + resolved "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz" integrity sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw== dependencies: read "1" -prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@^15.7.2: version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: loose-envify "^1.4.0" @@ -8378,32 +7816,32 @@ prop-types@^15.7.2, prop-types@^15.8.1: proto-list@~1.2.1: version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz" integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= protocols@^2.0.0, protocols@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" + resolved "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz" integrity sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== 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" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== pseudomap@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== psl@^1.1.33: version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + resolved "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== pug-attrs@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-2.0.4.tgz#b2f44c439e4eb4ad5d4ef25cac20d18ad28cc336" + resolved "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz" integrity sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ== dependencies: constantinople "^3.0.1" @@ -8412,7 +7850,7 @@ pug-attrs@^2.0.4: pug-code-gen@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-2.0.3.tgz#122eb9ada9b5bf601705fe15aaa0a7d26bc134ab" + resolved "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.3.tgz" integrity sha512-r9sezXdDuZJfW9J91TN/2LFbiqDhmltTFmGpHTsGdrNGp3p4SxAjjXEfnuK2e4ywYsRIVP0NeLbSAMHUcaX1EA== dependencies: constantinople "^3.1.2" @@ -8426,12 +7864,12 @@ pug-code-gen@^2.0.2: pug-error@^1.3.3: version "1.3.3" - resolved "https://registry.yarnpkg.com/pug-error/-/pug-error-1.3.3.tgz#f342fb008752d58034c185de03602dd9ffe15fa6" + resolved "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz" integrity sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ== pug-filters@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/pug-filters/-/pug-filters-3.1.1.tgz#ab2cc82db9eeccf578bda89130e252a0db026aa7" + resolved "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.1.tgz" integrity sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg== dependencies: clean-css "^4.1.11" @@ -8444,7 +7882,7 @@ pug-filters@^3.1.1: pug-lexer@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-4.1.0.tgz#531cde48c7c0b1fcbbc2b85485c8665e31489cfd" + resolved "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.1.0.tgz" integrity sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA== dependencies: character-parser "^2.1.1" @@ -8453,7 +7891,7 @@ pug-lexer@^4.1.0: pug-linker@^3.0.6: version "3.0.6" - resolved "https://registry.yarnpkg.com/pug-linker/-/pug-linker-3.0.6.tgz#f5bf218b0efd65ce6670f7afc51658d0f82989fb" + resolved "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.6.tgz" integrity sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg== dependencies: pug-error "^1.3.3" @@ -8461,7 +7899,7 @@ pug-linker@^3.0.6: pug-load@^2.0.12: version "2.0.12" - resolved "https://registry.yarnpkg.com/pug-load/-/pug-load-2.0.12.tgz#d38c85eb85f6e2f704dea14dcca94144d35d3e7b" + resolved "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz" integrity sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg== dependencies: object-assign "^4.1.0" @@ -8469,7 +7907,7 @@ pug-load@^2.0.12: pug-parser@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/pug-parser/-/pug-parser-5.0.1.tgz#03e7ada48b6840bd3822f867d7d90f842d0ffdc9" + resolved "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.1.tgz" integrity sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA== dependencies: pug-error "^1.3.3" @@ -8477,24 +7915,24 @@ pug-parser@^5.0.1: pug-runtime@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-2.0.5.tgz#6da7976c36bf22f68e733c359240d8ae7a32953a" + resolved "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz" integrity sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw== pug-strip-comments@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz#cc1b6de1f6e8f5931cf02ec66cdffd3f50eaf8a8" + resolved "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz" integrity sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw== dependencies: pug-error "^1.3.3" pug-walk@^1.1.8: version "1.1.8" - resolved "https://registry.yarnpkg.com/pug-walk/-/pug-walk-1.1.8.tgz#b408f67f27912f8c21da2f45b7230c4bd2a5ea7a" + resolved "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz" integrity sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA== pug@^2.0.3: version "2.0.4" - resolved "https://registry.yarnpkg.com/pug/-/pug-2.0.4.tgz#ee7682ec0a60494b38d48a88f05f3b0ac931377d" + resolved "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz" integrity sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw== dependencies: pug-code-gen "^2.0.2" @@ -8508,34 +7946,34 @@ pug@^2.0.3: punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== q@^1.5.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= queue-microtask@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== quick-lru@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== randombytes@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" react-ace@^9.5.0: version "9.5.0" - resolved "https://registry.yarnpkg.com/react-ace/-/react-ace-9.5.0.tgz#b6c32b70d404dd821a7e01accc2d76da667ff1f7" + resolved "https://registry.npmjs.org/react-ace/-/react-ace-9.5.0.tgz" integrity sha512-4l5FgwGh6K7A0yWVMQlPIXDItM4Q9zzXRqOae8KkCl6MkOob7sC1CzHxZdOGvV+QioKWbX2p5HcdOVUv6cAdSg== dependencies: ace-builds "^1.4.13" @@ -8546,7 +7984,7 @@ react-ace@^9.5.0: react-docgen@^5.4.0: version "5.4.3" - resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-5.4.3.tgz#7d297f73b977d0c7611402e5fc2a168acf332b26" + resolved "https://registry.npmjs.org/react-docgen/-/react-docgen-5.4.3.tgz" integrity sha512-xlLJyOlnfr8lLEEeaDZ+X2J/KJoe6Nr9AzxnkdQWush5hz2ZSu66w6iLMOScMmxoSHWpWMn+k3v5ZiyCfcWsOA== dependencies: "@babel/core" "^7.7.5" @@ -8562,34 +8000,34 @@ react-docgen@^5.4.0: react-frame-component@^5.2.1: version "5.2.4" - resolved "https://registry.yarnpkg.com/react-frame-component/-/react-frame-component-5.2.4.tgz#8282849fe0eb315fb30b00c67e5e979f8f63c01a" + resolved "https://registry.npmjs.org/react-frame-component/-/react-frame-component-5.2.4.tgz" integrity sha512-4xpZFcLNS6LCEYSlWgsUy81v7LjdgbvB0VHIq7sNSD25PK+e5YYCrdy5557ebGwNLKNLEpYVfAkT3pVzFLPb1g== react-is@^16.13.1: version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== react-is@^17.0.1: version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== react@^18.0.0: - version "18.1.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.1.0.tgz#6f8620382decb17fdc5cc223a115e2adbf104890" - integrity sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ== + version "18.2.0" + resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== dependencies: loose-envify "^1.1.0" read-cmd-shim@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-3.0.1.tgz#868c235ec59d1de2db69e11aec885bc095aea087" + resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-3.0.1.tgz" integrity sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g== read-package-json-fast@^2.0.2, 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" + resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz" integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== dependencies: json-parse-even-better-errors "^2.3.0" @@ -8597,7 +8035,7 @@ read-package-json-fast@^2.0.2, read-package-json-fast@^2.0.3: read-package-json@^5.0.0, read-package-json@^5.0.1: version "5.0.2" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-5.0.2.tgz#b8779ccfd169f523b67208a89cc912e3f663f3fa" + resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz" integrity sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q== dependencies: glob "^8.0.1" @@ -8607,7 +8045,7 @@ read-package-json@^5.0.0, read-package-json@^5.0.1: read-pkg-up@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz" integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= dependencies: find-up "^2.0.0" @@ -8615,7 +8053,7 @@ read-pkg-up@^3.0.0: read-pkg-up@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz" integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== dependencies: find-up "^4.1.0" @@ -8624,7 +8062,7 @@ read-pkg-up@^7.0.1: read-pkg@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz" integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= dependencies: load-json-file "^4.0.0" @@ -8633,7 +8071,7 @@ read-pkg@^3.0.0: read-pkg@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== dependencies: "@types/normalize-package-data" "^2.4.0" @@ -8643,14 +8081,14 @@ read-pkg@^5.2.0: read@1, read@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + resolved "https://registry.npmjs.org/read/-/read-1.0.7.tgz" integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== dependencies: mute-stream "~0.0.4" readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, 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" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== dependencies: inherits "^2.0.3" @@ -8659,7 +8097,7 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stre readable-stream@~2.3.6: version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== dependencies: core-util-is "~1.0.0" @@ -8672,7 +8110,7 @@ readable-stream@~2.3.6: 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" + resolved "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz" integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== dependencies: debuglog "^1.0.1" @@ -8682,14 +8120,14 @@ readdir-scoped-modules@^1.1.0: readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" recast@^0.17.3: version "0.17.6" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.17.6.tgz#64ae98d0d2dfb10ff92ff5fb9ffb7371823b69fa" + resolved "https://registry.npmjs.org/recast/-/recast-0.17.6.tgz" integrity sha512-yoQRMRrK1lszNtbkGyM4kN45AwylV5hMiuEveUBlxytUViWevjvX6w+tzJt1LH4cfUhWt4NZvy3ThIhu6+m5wQ== dependencies: ast-types "0.12.4" @@ -8699,68 +8137,54 @@ recast@^0.17.3: redent@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== dependencies: indent-string "^4.0.0" strip-indent "^3.0.0" -reflect-metadata@^0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" - integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== - regenerate-unicode-properties@^10.0.1: version "10.0.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz" integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== dependencies: regenerate "^1.4.2" regenerate@^1.4.2: version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== regenerator-runtime@^0.11.0: version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== regenerator-runtime@^0.13.11: version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== regenerator-runtime@^0.13.4: version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== regenerator-transform@^0.15.0: version "0.15.0" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz" integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== dependencies: "@babel/runtime" "^7.8.4" -regexp.prototype.flags@^1.4.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" - integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== - dependencies: - call-bind "^1.0.2" - 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" + resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== regexpu-core@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz" integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== dependencies: regenerate "^1.4.2" @@ -8772,89 +8196,76 @@ regexpu-core@^5.0.1: regjsgen@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz" integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== regjsparser@^0.8.2: version "0.8.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz" integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== dependencies: jsesc "~0.5.0" repeat-string@^1.5.2: version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-main-filename@^2.0.0: - version "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== - requizzle@^0.2.3: version "0.2.4" - resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.4.tgz#319eb658b28c370f0c20f968fa8ceab98c13d27c" + resolved "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz" integrity sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw== dependencies: lodash "^4.17.21" resolve-cwd@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: resolve-from "^5.0.0" resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" 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" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== resolve.exports@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== resolve@^1.1.6: version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== dependencies: is-core-module "^2.9.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^1.10.0, resolve@^1.11.1, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.0: +resolve@^1.10.0, resolve@^1.11.1, resolve@^1.14.2, resolve@^1.20.0: version "1.22.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz" integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== dependencies: is-core-module "^2.8.1" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^2.0.0-next.3: - version "2.0.0-next.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" - integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - restore-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: onetime "^5.1.0" @@ -8862,31 +8273,31 @@ restore-cursor@^3.1.0: retry@^0.12.0: version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== reusify@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== right-align@^0.1.1: version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + resolved "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz" integrity sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg== dependencies: align-text "^0.1.1" rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== dependencies: hash-base "^3.0.0" @@ -8894,14 +8305,14 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: rlp@^2.2.4: version "2.2.7" - resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" + resolved "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz" integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== dependencies: bn.js "^5.2.0" rollup-plugin-babel@^4.4.0: version "4.4.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" + resolved "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz" integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== dependencies: "@babel/helper-module-imports" "^7.0.0" @@ -8909,7 +8320,7 @@ rollup-plugin-babel@^4.4.0: rollup-plugin-node-resolve@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523" + resolved "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz" integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== dependencies: "@types/resolve" "0.0.8" @@ -8920,72 +8331,67 @@ rollup-plugin-node-resolve@^5.2.0: rollup-pluginutils@^2.8.1: version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + resolved "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz" integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== dependencies: estree-walker "^0.6.1" rollup@^2.70.1: version "2.72.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.72.1.tgz#861c94790537b10008f0ca0fbc60e631aabdd045" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.72.1.tgz" integrity sha512-NTc5UGy/NWFGpSqF1lFY8z9Adri6uhyMLI6LvPAXdBKoPRFhIIiBUpt+Qg2awixqO3xvzSijjhnb4+QEZwJmxA== optionalDependencies: fsevents "~2.3.2" run-async@^2.4.0: version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== run-parallel@^1.1.9: version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: queue-microtask "^1.2.2" rxjs@^7.5.5: version "7.8.0" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz" integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== dependencies: tslib "^2.1.0" safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== saxes@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz" integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== dependencies: xmlchars "^2.2.0" -scrypt-js@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" - integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== - scrypt-js@3.0.1, scrypt-js@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + resolved "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz" integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== secp256k1@^4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + resolved "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz" integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== dependencies: elliptic "^6.5.4" @@ -8994,58 +8400,53 @@ secp256k1@^4.0.1: "semver@2 || 3 || 4 || 5", semver@^5.6.0: version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== semver@7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + resolved "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== semver@7.3.4: version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz" integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== dependencies: lru-cache "^6.0.0" semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.7: version "7.3.8" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== dependencies: lru-cache "^6.0.0" semver@^7.3.2, semver@^7.3.5: version "7.3.7" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz" integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== dependencies: lru-cache "^6.0.0" set-blocking@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -setimmediate@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" - integrity sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48= - setimmediate@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== dependencies: inherits "^2.0.1" @@ -9053,64 +8454,55 @@ sha.js@^2.4.0, sha.js@^2.4.8: shallow-clone@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== dependencies: kind-of "^6.0.2" shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shiki@^0.11.1: version "0.11.1" - resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.11.1.tgz#df0f719e7ab592c484d8b73ec10e215a503ab8cc" + resolved "https://registry.npmjs.org/shiki/-/shiki-0.11.1.tgz" integrity sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA== dependencies: jsonc-parser "^3.0.0" vscode-oniguruma "^1.6.1" vscode-textmate "^6.0.0" -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - 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: version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== sisteransi@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== slash@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== smart-buffer@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== 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" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz" integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== dependencies: agent-base "^6.0.2" @@ -9119,7 +8511,7 @@ socks-proxy-agent@^7.0.0: socks@^2.6.2: version "2.7.1" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" + resolved "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz" integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== dependencies: ip "^2.0.0" @@ -9127,21 +8519,21 @@ socks@^2.6.2: sort-keys@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz" integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= 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" + resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-4.2.0.tgz" integrity sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg== dependencies: is-plain-obj "^2.0.0" source-map-support@^0.5.6: version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" @@ -9149,22 +8541,22 @@ source-map-support@^0.5.6: source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@^0.7.3: version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== source-map@~0.5.1: version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== spdx-correct@^3.0.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== dependencies: spdx-expression-parse "^3.0.0" @@ -9172,12 +8564,12 @@ spdx-correct@^3.0.0: spdx-exceptions@^2.1.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" @@ -9185,45 +8577,45 @@ spdx-expression-parse@^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" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz" integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== split2@^3.0.0: version "3.2.2" - resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + resolved "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz" integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== dependencies: readable-stream "^3.0.0" split@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + resolved "https://registry.npmjs.org/split/-/split-1.0.1.tgz" integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== dependencies: through "2" sprintf-js@~1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= ssri@^9.0.0, ssri@^9.0.1: version "9.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" + resolved "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz" integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== dependencies: minipass "^3.1.1" stack-utils@^2.0.3: version "2.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz" integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== dependencies: escape-string-regexp "^2.0.0" string-length@^4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: char-regex "^1.0.2" @@ -9231,103 +8623,71 @@ string-length@^4.0.1: "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string.prototype.matchall@^4.0.6: - version "4.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" - integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.1" - side-channel "^1.0.4" - -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== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - -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_decoder@^1.1.1: version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" string_decoder@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-bom@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= strip-bom@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== strip-final-newline@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== strip-hex-prefix@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + resolved "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz" integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== dependencies: is-hex-prefixed "1.0.0" strip-indent@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== dependencies: min-indent "^1.0.0" strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 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" + resolved "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz" integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== dependencies: duplexer "^0.1.1" @@ -9336,28 +8696,28 @@ strong-log-transformer@^2.1.0: supports-color@^5.3.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" supports-color@^8.0.0: version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" supports-hyperlinks@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" + resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz" integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== dependencies: has-flag "^4.0.0" @@ -9365,22 +8725,22 @@ supports-hyperlinks@^2.0.0: supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== symbol-tree@^3.2.4: version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== taffydb@2.6.2: version "2.6.2" - resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" + resolved "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz" integrity sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA== tar-stream@~2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz" integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== dependencies: bl "^4.0.3" @@ -9391,7 +8751,7 @@ tar-stream@~2.2.0: tar@^6.1.0, tar@^6.1.11, tar@^6.1.2: version "6.1.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b" + resolved "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz" integrity sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw== dependencies: chownr "^2.0.0" @@ -9403,12 +8763,12 @@ tar@^6.1.0, tar@^6.1.11, tar@^6.1.2: temp-dir@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz" integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= terminal-link@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz" integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== dependencies: ansi-escapes "^4.2.1" @@ -9416,7 +8776,7 @@ terminal-link@^2.0.0: test-exclude@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: "@istanbuljs/schema" "^0.1.2" @@ -9425,22 +8785,22 @@ test-exclude@^6.0.0: text-extensions@^1.0.0: version "1.9.0" - resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" + resolved "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== text-table@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= throat@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" + resolved "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz" integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== through2@^2.0.0: version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== dependencies: readable-stream "~2.3.6" @@ -9448,60 +8808,60 @@ through2@^2.0.0: through2@^4.0.0: version "4.0.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" + resolved "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz" integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== dependencies: readable-stream "3" through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= tmp@^0.0.33: version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" tmp@~0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz" integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== dependencies: rimraf "^3.0.0" tmpl@1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== to-fast-properties@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" integrity sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== to-fast-properties@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" token-stream@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz#ceeefc717a76c4316f126d0b9dbaa55d7e7df01a" + resolved "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz" integrity sha512-nfjOAu/zAWmX9tgwi5NRp7O7zTDUD1miHiB40klUnAh9qnL1iXdgzcz/i5dMaL5jahcBAaSfmNOBBJBLJW8TEg== tough-cookie@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz" integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== dependencies: psl "^1.1.33" @@ -9510,39 +8870,39 @@ tough-cookie@^4.0.0: tr46@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + resolved "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz" 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" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== treeify@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" + resolved "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz" integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== treeverse@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-2.0.0.tgz#036dcef04bc3fd79a9b79a68d4da03e882d8a9ca" + resolved "https://registry.npmjs.org/treeverse/-/treeverse-2.0.0.tgz" integrity sha512-N5gJCkLu1aXccpOTtqV6ddSEi6ZmGkh3hjmbu1IjcavJK4qyOVQmi0myQKM7z5jVGmD68SJoliaVrMmVObhj6A== trim-newlines@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== ts-map@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/ts-map/-/ts-map-1.0.3.tgz#1c4d218dec813d2103b7e04e4bcf348e1471c1ff" + resolved "https://registry.npmjs.org/ts-map/-/ts-map-1.0.3.tgz" integrity sha512-vDWbsl26LIcPGmDpoVzjEP6+hvHZkBkLW7JpvwbCv/5IYPJlsbzCVXY3wsCeAxAUeTclNOUZxnLdGh3VBD/J6w== -tsconfig-paths@^3.14.1, tsconfig-paths@^3.9.0: +tsconfig-paths@^3.9.0: version "3.14.1" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz" integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== dependencies: "@types/json5" "^0.0.29" @@ -9552,85 +8912,85 @@ tsconfig-paths@^3.14.1, tsconfig-paths@^3.9.0: tslib@^1.8.1: version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.0.1, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0: version "2.4.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== tsutils@^3.21.0: version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: tslib "^1.8.1" type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: prelude-ls "^1.2.1" type-check@~0.3.2: version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= dependencies: prelude-ls "~1.1.2" type-detect@4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== type-fest@^0.18.0: version "0.18.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz" integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== type-fest@^0.20.2: version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== type-fest@^0.21.3: version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== type-fest@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz" integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== type-fest@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== type-fest@^0.8.1: version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 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" + resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== dependencies: is-typedarray "^1.0.0" typedarray@^0.0.6: version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= typedoc@^0.23.23: version "0.23.23" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.23.23.tgz#9cf95b03d2d40031d8978b55e88b0b968d69f512" + resolved "https://registry.npmjs.org/typedoc/-/typedoc-0.23.23.tgz" integrity sha512-cg1YQWj+/BU6wq74iott513U16fbrPCbyYs04PHZgvoKJIc6EY4xNobyDZh4KMfRGW8Yjv6wwIzQyoqopKOUGw== dependencies: lunr "^2.3.9" @@ -9638,29 +8998,24 @@ typedoc@^0.23.23: minimatch "^5.1.1" shiki "^0.11.1" -"typescript@^3 || ^4", typescript@^4.5.4: - version "4.9.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78" - integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg== +"typescript@^3 || ^4", typescript@^4.5.4, typescript@^4.6.3: + version "4.9.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== typescript@^3.2.2: version "3.9.10" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" + resolved "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz" integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== -typescript@^4.6.3: - version "4.6.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" - integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg== - uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz" integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== uglify-js@^2.6.1: version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz" integrity sha512-qLq/4y2pjcU3vhlhseXGGJ7VbFO4pBANu0kwl8VCa9KEI0V8VfZIx2Fy3w01iSTA/pGwKZSmu/+I4etLNDdt5w== dependencies: source-map "~0.5.1" @@ -9670,37 +9025,27 @@ uglify-js@^2.6.1: uglify-js@^3.1.4: version "3.15.4" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.15.4.tgz#fa95c257e88f85614915b906204b9623d4fa340d" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.4.tgz" integrity sha512-vMOPGDuvXecPs34V74qDKk4iJ/SN4vL3Ow/23ixafENYvtrNvtbcgUeugTcUGRGsOF/5fU8/NYSL5Hyb3l1OJA== uglify-to-browserify@~1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + resolved "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" integrity sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q== -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - underscore@^1.13.2, underscore@~1.13.2: version "1.13.6" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" + resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz" integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== unicode-match-property-ecmascript@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== dependencies: unicode-canonical-property-names-ecmascript "^2.0.0" @@ -9708,51 +9053,51 @@ unicode-match-property-ecmascript@^2.0.0: unicode-match-property-value-ecmascript@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz" integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== unicode-property-aliases-ecmascript@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz" integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== unique-filename@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz" integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== dependencies: unique-slug "^3.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" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz" integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== dependencies: imurmurhash "^0.1.4" 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" + resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz" integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== universalify@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== universalify@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== upath@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" + resolved "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz" integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== update-browserslist-db@^1.0.9: version "1.0.10" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz" integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== dependencies: escalade "^3.1.1" @@ -9760,39 +9105,34 @@ update-browserslist-db@^1.0.9: uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" utf8@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + resolved "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz" integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -uuid@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" - integrity sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w= - uuid@^8.3.2: version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== v8-compile-cache@2.3.0, v8-compile-cache@^2.0.3: version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== v8-to-istanbul@^8.1.0: version "8.1.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz" integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" @@ -9801,7 +9141,7 @@ v8-to-istanbul@^8.1.0: v8-to-istanbul@^9.0.0: version "9.0.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz" integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== dependencies: "@jridgewell/trace-mapping" "^0.3.12" @@ -9810,7 +9150,7 @@ v8-to-istanbul@^9.0.0: 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" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: spdx-correct "^3.0.0" @@ -9818,36 +9158,49 @@ validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: 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" + resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz" integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== 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" + resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz" integrity sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q== dependencies: builtins "^5.0.0" +viem@0.1.19: + version "0.1.19" + resolved "https://registry.yarnpkg.com/viem/-/viem-0.1.19.tgz#e7e66251c4a72e19e525524fb5fb6cd6f587a682" + integrity sha512-85o3nZVKgQyd2cFJlJ9/5ERvQrU27pn/16ctCZobKQL0BoFlYovWoOzJc/LCYW21wtIp4Idh0KKGWy6Y8qhsvA== + dependencies: + "@noble/hashes" "^1.1.2" + "@noble/secp256k1" "^1.7.1" + "@wagmi/chains" "~0.2.11" + abitype "~0.7.1" + idna-uts46-hx "^4.1.2" + isomorphic-ws "^5.0.0" + ws "^8.12.0" + void-elements@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + resolved "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz" integrity sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung== vscode-oniguruma@^1.6.1: version "1.7.0" - resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz#439bfad8fe71abd7798338d1cd3dc53a8beea94b" + resolved "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz" integrity sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA== vscode-textmate@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-6.0.0.tgz#a3777197235036814ac9a92451492f2748589210" + resolved "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-6.0.0.tgz" integrity sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ== vue-docgen-api@^3.26.0: version "3.26.0" - resolved "https://registry.yarnpkg.com/vue-docgen-api/-/vue-docgen-api-3.26.0.tgz#2afc6a39e72862fbbc60ceb8510c681749f05460" + resolved "https://registry.npmjs.org/vue-docgen-api/-/vue-docgen-api-3.26.0.tgz" integrity sha512-ujdg4i5ZI/wE46RZQMFzKnDGyhEuPCu+fMA86CAd9EIek/6+OqraSVBm5ZkLrbEd5f8xxdnqMU4yiSGHHeao/Q== dependencies: "@babel/parser" "^7.2.3" @@ -9863,7 +9216,7 @@ vue-docgen-api@^3.26.0: vue-template-compiler@^2.0.0: version "2.7.14" - resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz#4545b7dfb88090744c1577ae5ac3f964e61634b1" + resolved "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz" integrity sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ== dependencies: de-indent "^1.0.2" @@ -9871,47 +9224,47 @@ vue-template-compiler@^2.0.0: vue2-ace-editor@^0.0.15: version "0.0.15" - resolved "https://registry.yarnpkg.com/vue2-ace-editor/-/vue2-ace-editor-0.0.15.tgz#569b208e54ae771ae1edd3b8902ac42f0edc74e3" + resolved "https://registry.npmjs.org/vue2-ace-editor/-/vue2-ace-editor-0.0.15.tgz" integrity sha512-e3TR9OGXc71cGpvYcW068lNpRcFt3+OONCC81oxHL/0vwl/V3OgqnNMw2/RRolgQkO/CA5AjqVHWmANWKOtNnQ== dependencies: brace "^0.11.0" w3c-hr-time@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz" integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: browser-process-hrtime "^1.0.0" w3c-xmlserializer@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz" integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== dependencies: xml-name-validator "^3.0.0" walk-up-path@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/walk-up-path/-/walk-up-path-1.0.0.tgz#d4745e893dd5fd0dbb58dd0a4c6a33d9c9fec53e" + resolved "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz" integrity sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg== walker@^1.0.7: version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: makeerror "1.0.12" wcwidth@^1.0.0, wcwidth@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= dependencies: defaults "^1.0.3" web3-utils@^1.3.4: version "1.7.5" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.7.5.tgz#081a952ac6e0322e25ac97b37358a43c7372ef6a" + resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.5.tgz" integrity sha512-9AqNOziQky4wNQadEwEfHiBdOZqopIHzQQVzmvvv6fJwDSMhP+khqmAZC7YTiGjs0MboyZ8tWNivqSO1699XQw== dependencies: bn.js "^5.2.1" @@ -9924,34 +9277,39 @@ web3-utils@^1.3.4: webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== webidl-conversions@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz" integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== webidl-conversions@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== whatwg-encoding@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" +whatwg-fetch@^3.4.1: + version "3.6.2" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== + whatwg-mimetype@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== whatwg-url@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" @@ -9959,51 +9317,35 @@ whatwg-url@^5.0.0: whatwg-url@^8.0.0, whatwg-url@^8.5.0: version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" 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" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - which@^2.0.1, which@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" wide-align@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: string-width "^1.0.2 || 2 || 3 || 4" window-size@0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + resolved "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" integrity sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg== with@^5.0.0: version "5.1.1" - resolved "https://registry.yarnpkg.com/with/-/with-5.1.1.tgz#fa4daa92daf32c4ea94ed453c81f04686b575dfe" + resolved "https://registry.npmjs.org/with/-/with-5.1.1.tgz" integrity sha512-uAnSsFGfSpF6DNhBXStvlZILfHJfJu4eUkfbRGk94kGO1Ta7bg6FwfvoOhhyHAJuFbCw+0xk4uJ3u57jLvlCJg== dependencies: acorn "^3.1.0" @@ -10011,31 +9353,22 @@ with@^5.0.0: word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== wordwrap@0.0.2: version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" integrity sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q== wordwrap@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" @@ -10044,12 +9377,12 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 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" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz" integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== dependencies: graceful-fs "^4.1.11" @@ -10058,7 +9391,7 @@ write-file-atomic@^2.4.2: write-file-atomic@^3.0.0: version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: imurmurhash "^0.1.4" @@ -10068,7 +9401,7 @@ write-file-atomic@^3.0.0: write-file-atomic@^4.0.0, write-file-atomic@^4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== dependencies: imurmurhash "^0.1.4" @@ -10076,7 +9409,7 @@ write-file-atomic@^4.0.0, write-file-atomic@^4.0.1: write-json-file@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" + resolved "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz" integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== dependencies: detect-indent "^5.0.0" @@ -10088,7 +9421,7 @@ write-json-file@^3.2.0: 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" + resolved "https://registry.npmjs.org/write-json-file/-/write-json-file-4.3.0.tgz" integrity sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ== dependencies: detect-indent "^6.0.0" @@ -10100,7 +9433,7 @@ write-json-file@^4.3.0: write-pkg@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-4.0.0.tgz#675cc04ef6c11faacbbc7771b24c0abbf2a20039" + resolved "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz" integrity sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA== dependencies: sort-keys "^2.0.0" @@ -10109,107 +9442,77 @@ write-pkg@^4.0.0: ws@7.4.6: version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + resolved "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== ws@^7.4.6: version "7.5.7" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz" integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== +ws@^8.12.0: + version "8.13.0" + resolved "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + xml-name-validator@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== xmlchars@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== xmlcreate@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.4.tgz#0c5ab0f99cdd02a81065fa9cd8f8ae87624889be" + resolved "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz" integrity sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg== -xmlhttprequest@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" - integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw= - xtend@~4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - y18n@^5.0.5: version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== yallist@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yaml@^1.10.0: version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yargs-parser@20.2.4: version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 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" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^20.2.2, yargs-parser@^20.2.3, yargs-parser@^20.2.9: version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs@^15.3.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - yargs@^16.2.0: version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: cliui "^7.0.2" @@ -10222,7 +9525,7 @@ yargs@^16.2.0: yargs@^17.6.2: version "17.6.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz" integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== dependencies: cliui "^8.0.1" @@ -10235,7 +9538,7 @@ yargs@^17.6.2: yargs@~3.10.0: version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + resolved "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz" integrity sha512-QFzUah88GAGy9lyDKGBqZdkYApt63rCXYBGYnEP4xDJPXNqXXnBDACnbrXnViV6jRSqAePwrATi2i8mfYm4L1A== dependencies: camelcase "^1.0.2" @@ -10245,5 +9548,5 @@ yargs@~3.10.0: yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==