diff --git a/.eslintignore b/.eslintignore index f06235c46..4c13bf4e0 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,2 +1,4 @@ node_modules dist +agent/* +l2/* diff --git a/.eslintrc.json b/.eslintrc.json index 828f1603f..29e8db691 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -30,6 +30,12 @@ "functional/no-return-void": "off" }, "overrides": [ + { + "files": ["**/index.ts"], + "rules": { + "functional/functional-parameters": "off" + } + }, { "files": ["**/*.spec.ts"], "rules": { diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 2055b0ebd..b7287a9b7 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -8,19 +8,19 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [18.x] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v5 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - name: yarn install, lint, build, and test run: | yarn install yarn lint - yarn run build - yarn test + yarn build + yarn test --maxWorkers=50% --silent env: CI: true diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 000000000..309ee58bc --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,31 @@ +name: Publish + +on: + workflow_run: + workflows: ['Node'] + branches: [main] + types: + - completed + +jobs: + publish: + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'success' }} + + strategy: + matrix: + node-version: [18.x] + + steps: + - uses: actions/checkout@v5 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + - name: yarn install, and build + run: | + yarn install + yarn run build + - uses: JS-DevTools/npm-publish@v3 + with: + token: ${{ secrets.NPM_TOKEN }} diff --git a/.gitignore b/.gitignore index fe1903389..c9ac2728a 100644 --- a/.gitignore +++ b/.gitignore @@ -68,3 +68,4 @@ dist *.d.ts *.ts.map !rollup.config.* +.eslintcache diff --git a/.prettierignore b/.prettierignore index f06235c46..4c13bf4e0 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1,4 @@ node_modules dist +agent/* +l2/* diff --git a/.vscode/settings.json b/.vscode/settings.json index c0ac00a16..7f69281cf 100755 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,5 @@ { "editor.codeActionsOnSave": { - "source.fixAll.eslint": true + "source.fixAll.eslint": "explicit" } } diff --git a/README.md b/README.md index 16f175534..ce90c7c27 100644 --- a/README.md +++ b/README.md @@ -51,3 +51,12 @@ The URL of the provider is easy to use with each node provisioning service. ## build > yarn build ``` + +## how to publish + +```bash +> npm version [major|minor|patch] +> git push && git push --tags +``` + +GitHub Actions "Publish" automatically publishes the new version. diff --git a/examples/get-property-info.js b/examples/get-property-info.js index ea4af13b1..00426c1e8 100644 --- a/examples/get-property-info.js +++ b/examples/get-property-info.js @@ -4,7 +4,7 @@ import { contractFactory, addresses } from '@devprotocol/dev-kit' // use main net const registryContractAddress = addresses.eth.main.registry const provider = new ethers.providers.JsonRpcProvider( - process.env.WEB3_PROVIDER_URL + process.env.WEB3_PROVIDER_URL, ) const contract = contractFactory(provider) const propertyAddress = '0xac1AC9d00314aE7B4a7d6DbEE4860bECedF92309' @@ -16,16 +16,16 @@ const propertyStakingAmount = await contract .lockup(lockupContractAddress) .getPropertyValue(propertyAddress) const stakingAmount = ethers.BigNumber.from(propertyStakingAmount).div( - new ethers.BigNumber.from(10).pow(18) + new ethers.BigNumber.from(10).pow(18), ) console.log( - `${propertyAddress}'s staking amount is ${stakingAmount.toBigInt()} DEV` + `${propertyAddress}'s staking amount is ${stakingAmount.toBigInt()} DEV`, ) const propertyRewards = await contract .lockup(lockupContractAddress) .calculateRewardAmount(propertyAddress) const reward = ethers.BigNumber.from(propertyRewards[0]).div( - new ethers.BigNumber.from(10).pow(36) + new ethers.BigNumber.from(10).pow(36), ) console.log(`${propertyAddress}'s rewards is ${reward.toBigInt()} DEV`) diff --git a/examples/get-stoken-info.js b/examples/get-stoken-info.js index 06f127fe4..4672c43be 100644 --- a/examples/get-stoken-info.js +++ b/examples/get-stoken-info.js @@ -4,7 +4,7 @@ import { contractFactory, addresses } from '@devprotocol/dev-kit' // use main net const contractAddress = addresses.eth.main.sTokens const provider = new ethers.providers.JsonRpcProvider( - process.env.WEB3_PROVIDER_URL + process.env.WEB3_PROVIDER_URL, ) const contract = contractFactory(provider) const propertyAddress = '0xac1AC9d00314aE7B4a7d6DbEE4860bECedF92309' @@ -34,6 +34,6 @@ const res = await Promise.all( const positions = await getSTokenPositions(contract, sTokenId) const rewards = await getSTokenRewards(contract, sTokenId) return { sTokenId, positions, rewards } - }) + }), ) console.log(res) diff --git a/lib/agent/common/agentAddresses.ts b/lib/agent/common/agentAddresses.ts new file mode 100644 index 000000000..1fa98dc2b --- /dev/null +++ b/lib/agent/common/agentAddresses.ts @@ -0,0 +1,45 @@ +export const agentAddresses = { + eth: { + main: { + swap: { + v2: '0x6400264F991de614048838a7d4B536733BCE3069', + v3: undefined, + }, + }, + }, + arbitrum: { + one: { + swap: { + v2: undefined, + v3: '0x60Ca7E3960e5F143DdB42B19B64F65c27cAD561d', + }, + }, + rinkeby: { + swap: { v2: undefined, v3: '0x4cd6B431B7A242D51B4D96aE5839a8b8f060F7A9' }, + }, + }, + polygon: { + mainnet: { + swap: { + v2: undefined, + v3: '0x9265Cf9e6Dc5B163bDB75d51661Ca8EA3b6150c4', + }, + swapArbitraryTokens: { + swap: '0xad7CaC908DfF8Dcd1D0d8d0FE3edD25bf339EB57', + }, + usdc: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + weth: '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + }, + mumbai: { + swap: { + v2: undefined, + v3: '0x60650E5a95864b989C8b7B0357a2d4979a34c6AF', + }, + swapArbitraryTokens: { + swap: '0x927B51D9Edd43BFDE3586E99BfaCBE08135374AA', + }, + usdc: '0xFEca406dA9727A25E71e732F9961F680059eF1F9', + weth: '0x3c8d6A6420C922c88577352983aFFdf7b0F977cA', + }, + }, +} as const diff --git a/lib/agent/common/approveIfNeeded.ts b/lib/agent/common/approveIfNeeded.ts new file mode 100644 index 000000000..08b420f4a --- /dev/null +++ b/lib/agent/common/approveIfNeeded.ts @@ -0,0 +1,100 @@ +/* eslint-disable functional/functional-parameters */ +import { UndefinedOr, whenDefinedAll } from '@devprotocol/util-ts' +import type { TransactionResponse, TransactionReceipt } from 'ethers' +import { createErc20Contract } from '../../common/erc20' +import { FallbackableOverrides } from '../../common/utils/execute' +import { clientsDev } from './clients/clientsDev' +import { ContractRunner } from 'ethers' + +// eslint-disable-next-line functional/no-mixed-type +export type ApproveIfNeededResultForApproveIsNeeded = { + readonly approvalNeeded: true + readonly approveIfNeeded: (options?: { + readonly amount?: string + readonly overrides?: FallbackableOverrides + }) => Promise< + TransactionResponse & { + readonly waitNeeded: true + readonly waitOrSkipApproval: () => Promise< + (TransactionReceipt | null) & { + readonly run: () => Promise + } + > + } + > +} + +// eslint-disable-next-line functional/no-mixed-type +export type ApproveIfNeededResultForApproveIsNotNeeded = { + readonly approvalNeeded: false + readonly approveIfNeeded: (options?: { + readonly amount?: string + readonly overrides?: FallbackableOverrides + }) => Promise<{ + readonly waitNeeded: false + readonly waitOrSkipApproval: () => Promise<{ + readonly run: () => Promise + }> + }> +} + +export type ApproveIfNeededResult = + | ApproveIfNeededResultForApproveIsNeeded + | ApproveIfNeededResultForApproveIsNotNeeded + +export type ApproveIfNeeded = (factoryOptions: { + readonly provider: ContractRunner + readonly requiredAmount: string + readonly from: string + readonly to?: string + readonly token?: string + readonly callback: ( + receipt?: TransactionReceipt | null, + ) => Promise +}) => Promise> + +export const approveIfNeeded: ApproveIfNeeded = async (factoryOptions) => { + const client = factoryOptions.token + ? createErc20Contract(factoryOptions.provider)(factoryOptions.token) + : await clientsDev(factoryOptions.provider).then(([l1, l2]) => l1 ?? l2) + const allowance = await whenDefinedAll( + [client, factoryOptions.to], + ([x, to]) => x.allowance(factoryOptions.from, to), + ) + + return whenDefinedAll([client, factoryOptions.to], ([dev, to]) => { + return BigInt(allowance ?? 0) < BigInt(factoryOptions.requiredAmount) + ? ({ + approvalNeeded: true, + approveIfNeeded: async (options) => { + const res = await dev.approve( + to, + options?.amount ?? factoryOptions.requiredAmount, + options?.overrides, + ) + return { + ...res, + waitNeeded: true, + waitOrSkipApproval: async () => { + const repeipt = await res.wait() + return { + ...repeipt, + run: () => factoryOptions.callback(repeipt), + } + }, + } + }, + } as ApproveIfNeededResultForApproveIsNeeded) + : ({ + approvalNeeded: false, + approveIfNeeded: async (options) => { + return { + waitNeeded: false, + waitOrSkipApproval: async () => ({ + run: () => factoryOptions.callback(), + }), + } + }, + } as ApproveIfNeededResultForApproveIsNotNeeded) + }) +} diff --git a/lib/agent/common/clients/clientsDev.ts b/lib/agent/common/clients/clientsDev.ts new file mode 100644 index 000000000..187e04f7b --- /dev/null +++ b/lib/agent/common/clients/clientsDev.ts @@ -0,0 +1,38 @@ +import { l2AvailableNetworks } from '../const' +import type { UndefinedOr } from '@devprotocol/util-ts' +import { createDevContract, DevContract } from '../../../ethereum/dev' +import { + createDevContract as createDevContractL2, + DevContract as DevContractL2, +} from '../../../l2/dev' +import { clientsRegistry } from './clientsRegistry' +import { ContractRunner } from 'ethers' + +type Results = readonly [UndefinedOr, UndefinedOr] + +const cache: WeakMap = new WeakMap() + +export const clientsDev = async ( + provider: ContractRunner, +): Promise => { + const res = + cache.get(provider) ?? + (await (async () => { + const net = await provider.provider?.getNetwork() + const [registry] = await clientsRegistry(provider) + const l1 = registry + ? createDevContract(provider)(await registry.token()) + : undefined + const l2 = ((data) => + data ? createDevContractL2(provider)(data.map.token) : undefined)( + l2AvailableNetworks.find( + ({ chainId }) => chainId === Number(net?.chainId), + ), + ) + const results: Results = [l1, l2] + // eslint-disable-next-line functional/no-expression-statement + cache.set(provider, results) + return results + })()) + return res +} diff --git a/lib/agent/common/clients/lockupClients.ts b/lib/agent/common/clients/clientsLockup.ts similarity index 51% rename from lib/agent/common/clients/lockupClients.ts rename to lib/agent/common/clients/clientsLockup.ts index 6d121660f..2ed664b4f 100644 --- a/lib/agent/common/clients/lockupClients.ts +++ b/lib/agent/common/clients/clientsLockup.ts @@ -5,35 +5,34 @@ import { createLockupContract as createLockupContractL2, LockupContract as LockupContractL2, } from '../../../l2/lockup' -import { Provider } from '@ethersproject/abstract-provider' -import { registryClientL1 } from './registryClientL1' +import { clientsRegistry } from './clientsRegistry' +import { ContractRunner } from 'ethers' -const cache: WeakMap< - Provider, - readonly [UndefinedOr, UndefinedOr] -> = new WeakMap() +type Results = readonly [ + UndefinedOr, + UndefinedOr, +] -export const lockupClients = async ( - provider: Provider -): Promise< - readonly [UndefinedOr, UndefinedOr] -> => { +const cache: WeakMap = new WeakMap() + +export const clientsLockup = async ( + provider: ContractRunner, +): Promise => { const res = cache.get(provider) ?? (await (async () => { - const net = await provider.getNetwork() - const registry = await registryClientL1(provider) + const net = await provider.provider?.getNetwork() + const [registry] = await clientsRegistry(provider) const l1 = registry ? createLockupContract(provider)(await registry.lockup()) : undefined const l2 = ((data) => data ? createLockupContractL2(provider)(data.map.lockup) : undefined)( - l2AvailableNetworks.find(({ chainId }) => chainId === net.chainId) + l2AvailableNetworks.find( + ({ chainId }) => chainId === Number(net?.chainId), + ), ) - const results: readonly [ - UndefinedOr, - UndefinedOr - ] = [l1, l2] + const results: Results = [l1, l2] // eslint-disable-next-line functional/no-expression-statement cache.set(provider, results) return results diff --git a/lib/agent/common/clients/clientsMarketFactory.ts b/lib/agent/common/clients/clientsMarketFactory.ts new file mode 100644 index 000000000..081f18d00 --- /dev/null +++ b/lib/agent/common/clients/clientsMarketFactory.ts @@ -0,0 +1,46 @@ +import { l2AvailableNetworks } from '../const' +import type { UndefinedOr } from '@devprotocol/util-ts' +import { + createMarketFactoryContract, + MarketFactoryContract, +} from '../../../ethereum/market-factory' +import { + createMarketFactoryContract as createMarketFactoryContractL2, + MarketFactoryContract as MarketFactoryContractL2, +} from '../../../l2/market-factory' +import { clientsRegistry } from './clientsRegistry' +import { ContractRunner } from 'ethers' + +type Results = readonly [ + UndefinedOr, + UndefinedOr, +] + +const cache: WeakMap = new WeakMap() + +export const clientsMarketFactory = async ( + provider: ContractRunner, +): Promise => { + const res = + cache.get(provider) ?? + (await (async () => { + const net = await provider.provider?.getNetwork() + const [registry] = await clientsRegistry(provider) + const l1 = registry + ? createMarketFactoryContract(provider)(await registry.marketFactory()) + : undefined + const l2 = ((data) => + data + ? createMarketFactoryContractL2(provider)(data.map.marketFactory) + : undefined)( + l2AvailableNetworks.find( + ({ chainId }) => chainId === Number(net?.chainId), + ), + ) + const results: Results = [l1, l2] + // eslint-disable-next-line functional/no-expression-statement + cache.set(provider, results) + return results + })()) + return res +} diff --git a/lib/agent/common/clients/clientsMetricsFactory.ts b/lib/agent/common/clients/clientsMetricsFactory.ts new file mode 100644 index 000000000..fe700ba8a --- /dev/null +++ b/lib/agent/common/clients/clientsMetricsFactory.ts @@ -0,0 +1,35 @@ +import { l2AvailableNetworks } from '../const' +import type { UndefinedOr } from '@devprotocol/util-ts' +import { + createMetricsFactoryContract as createMetricsFactoryContractL2, + MetricsFactoryContract as MetricsFactoryContractL2, +} from '../../../l2/metrics-factory' +import { ContractRunner } from 'ethers' + +type Results = readonly [undefined, UndefinedOr] + +const cache: WeakMap = new WeakMap() + +export const clientsMetricsFactory = async ( + provider: ContractRunner, +): Promise => { + const res = + cache.get(provider) ?? + (await (async () => { + const net = await provider.provider?.getNetwork() + const l1 = undefined + const l2 = ((data) => + data + ? createMetricsFactoryContractL2(provider)(data.map.metricsFactory) + : undefined)( + l2AvailableNetworks.find( + ({ chainId }) => chainId === Number(net?.chainId), + ), + ) + const results: Results = [l1, l2] + // eslint-disable-next-line functional/no-expression-statement + cache.set(provider, results) + return results + })()) + return res +} diff --git a/lib/agent/common/clients/clientsMetricsGroup.ts b/lib/agent/common/clients/clientsMetricsGroup.ts new file mode 100644 index 000000000..8fde13f34 --- /dev/null +++ b/lib/agent/common/clients/clientsMetricsGroup.ts @@ -0,0 +1,30 @@ +import type { UndefinedOr } from '@devprotocol/util-ts' +import { + createMetricsGroupContract, + CreateMetricsGroupContract, +} from '../../../ethereum/metrics-group' +import { clientsRegistry } from './clientsRegistry' +import { ContractRunner } from 'ethers' + +type Results = readonly [UndefinedOr, undefined] + +const cache: WeakMap = new WeakMap() + +export const clientsMetricsGroup = async ( + provider: ContractRunner, +): Promise => { + const res = + cache.get(provider) ?? + (await (async () => { + const [registry] = await clientsRegistry(provider) + const l1 = registry + ? createMetricsGroupContract(provider)(await registry.metricsGroup()) + : undefined + const l2 = undefined + const results: Results = [l1, l2] + // eslint-disable-next-line functional/no-expression-statement + cache.set(provider, results) + return results + })()) + return res +} diff --git a/lib/agent/common/clients/clientsPolicy.ts b/lib/agent/common/clients/clientsPolicy.ts new file mode 100644 index 000000000..690176b77 --- /dev/null +++ b/lib/agent/common/clients/clientsPolicy.ts @@ -0,0 +1,41 @@ +import type { UndefinedOr } from '@devprotocol/util-ts' +import { createPolicyContract, PolicyContract } from '../../../ethereum/policy' +import { + createPolicyContract as createPolicyContractL2, + PolicyContract as PolicyContractL2, +} from '../../../l2/policy' +import { clientsRegistry } from './clientsRegistry' +import { ContractRunner } from 'ethers' + +type Results = readonly [ + UndefinedOr, + UndefinedOr, +] + +// eslint-disable-next-line functional/prefer-readonly-type +const cache: WeakMap = new WeakMap() + +export const clientsPolicy = async ( + provider: ContractRunner, +): Promise => { + const res = + cache.get(provider) ?? + (await (async () => { + const [registryl1, registryl2] = await clientsRegistry(provider) + const l1 = registryl1 + ? createPolicyContract(provider)(await registryl1.policy()) + : undefined + const l2 = registryl2 + ? createPolicyContractL2(provider)( + await registryl2.registries('Policy'), + ) + : undefined + + const results: Results = [l1, l2] + const map = cache.get(provider) + // eslint-disable-next-line functional/no-expression-statement + cache.set(provider, results) + return results + })()) + return res +} diff --git a/lib/agent/common/clients/clientsProperty.ts b/lib/agent/common/clients/clientsProperty.ts new file mode 100644 index 000000000..bb9afc39c --- /dev/null +++ b/lib/agent/common/clients/clientsProperty.ts @@ -0,0 +1,52 @@ +import { l2AvailableNetworks } from '../const' +import type { UndefinedOr } from '@devprotocol/util-ts' +import { + createPropertyContract, + PropertyContract, +} from '../../../ethereum/property' +import { + createPropertyContract as createPropertyContractL2, + PropertyContract as PropertyContractL2, +} from '../../../l2/property' +import { clientsRegistry } from './clientsRegistry' +import { ContractRunner } from 'ethers' + +type Results = readonly [ + UndefinedOr, + UndefinedOr, +] + +// eslint-disable-next-line functional/prefer-readonly-type +const cache: WeakMap> = new WeakMap() + +export const clientsProperty = async ( + provider: ContractRunner, + tokenAddress: string, +): Promise => { + const res = + cache.get(provider)?.get(tokenAddress) ?? + (await (async () => { + const net = await provider.provider?.getNetwork() + const [registry] = await clientsRegistry(provider) + const l1 = registry + ? createPropertyContract(provider)(tokenAddress) + : undefined + const l2 = ((data) => + data ? createPropertyContractL2(provider)(tokenAddress) : undefined)( + l2AvailableNetworks.find( + ({ chainId }) => chainId === Number(net?.chainId), + ), + ) + const results: Results = [l1, l2] + const map = cache.get(provider) + // eslint-disable-next-line functional/no-expression-statement + cache.set( + provider, + map + ? map.set(tokenAddress, results) + : new Map([[tokenAddress, results]]), + ) + return results + })()) + return res +} diff --git a/lib/agent/common/clients/clientsPropertyFactory.ts b/lib/agent/common/clients/clientsPropertyFactory.ts new file mode 100644 index 000000000..a67a81d2b --- /dev/null +++ b/lib/agent/common/clients/clientsPropertyFactory.ts @@ -0,0 +1,48 @@ +import { l2AvailableNetworks } from '../const' +import type { UndefinedOr } from '@devprotocol/util-ts' +import { + createPropertyFactoryContract, + PropertyFactoryContract, +} from '../../../ethereum/property-factory' +import { + createPropertyFactoryContract as createPropertyFactoryContractL2, + PropertyFactoryContract as PropertyFactoryContractL2, +} from '../../../l2/property-factory' +import { clientsRegistry } from './clientsRegistry' +import { ContractRunner } from 'ethers' + +type Results = readonly [ + UndefinedOr, + UndefinedOr, +] + +const cache: WeakMap = new WeakMap() + +export const clientsPropertyFactory = async ( + provider: ContractRunner, +): Promise => { + const res = + cache.get(provider) ?? + (await (async () => { + const net = await provider.provider?.getNetwork() + const [registry] = await clientsRegistry(provider) + const l1 = registry + ? createPropertyFactoryContract(provider)( + await registry.propertyFactory(), + ) + : undefined + const l2 = ((data) => + data + ? createPropertyFactoryContractL2(provider)(data.map.propertyFactory) + : undefined)( + l2AvailableNetworks.find( + ({ chainId }) => chainId === Number(net?.chainId), + ), + ) + const results: Results = [l1, l2] + // eslint-disable-next-line functional/no-expression-statement + cache.set(provider, results) + return results + })()) + return res +} diff --git a/lib/agent/common/clients/clientsRegistry.ts b/lib/agent/common/clients/clientsRegistry.ts new file mode 100644 index 000000000..76299e7ec --- /dev/null +++ b/lib/agent/common/clients/clientsRegistry.ts @@ -0,0 +1,47 @@ +import { l1AvailableNetworks, l2AvailableNetworks } from '../const' +import type { UndefinedOr } from '@devprotocol/util-ts' +import { + createRegistryContract, + RegistryContract, +} from '../../../ethereum/registry' +import { + createRegistryContract as createRegistryContractL2, + RegistryContract as RegistryContractL2, +} from '../../../l2/registry' +import { ContractRunner } from 'ethers' + +type Results = readonly [ + UndefinedOr, + UndefinedOr, +] + +const cache: WeakMap = new WeakMap() + +export const clientsRegistry = async ( + provider: ContractRunner, +): Promise => { + const res = + cache.get(provider) ?? + (await (async () => { + const net = await provider.provider?.getNetwork() + const l1Info = l1AvailableNetworks.find( + ({ chainId }) => chainId === Number(net?.chainId), + ) + const l1 = l1Info + ? createRegistryContract(provider)(l1Info.registry) + : undefined + const l2 = ((data) => + data + ? createRegistryContractL2(provider)(data.map.registry) + : undefined)( + l2AvailableNetworks.find( + ({ chainId }) => chainId === Number(net?.chainId), + ), + ) + const results: Results = [l1, l2] + // eslint-disable-next-line functional/no-expression-statement + cache.set(provider, results) + return results + })()) + return res +} diff --git a/lib/agent/common/clients/clientsSTokens.ts b/lib/agent/common/clients/clientsSTokens.ts new file mode 100644 index 000000000..31537c0e4 --- /dev/null +++ b/lib/agent/common/clients/clientsSTokens.ts @@ -0,0 +1,52 @@ +import { l1AvailableNetworks, l2AvailableNetworks } from '../const' +import type { UndefinedOr } from '@devprotocol/util-ts' +import { + createSTokensContract, + STokensContract, +} from '../../../ethereum/s-tokens' +import { + createSTokensContract as createSTokensContractL2, + STokensContract as STokensContractL2, +} from '../../../l2/s-tokens' +import { addresses } from '../../../addresses' +import { ContractRunner } from 'ethers' + +type Results = readonly [ + UndefinedOr, + UndefinedOr, +] + +const cache: WeakMap = new WeakMap() + +export const clientsSTokens = async ( + provider: ContractRunner, +): Promise => { + const res = + cache.get(provider) ?? + (await (async () => { + const net = await provider.provider?.getNetwork() + const l1 = ((data) => + data + ? createSTokensContract(provider)( + data.chainId === 1 + ? addresses.eth.main.sTokens + : addresses.eth.ropsten.sTokens, + ) + : undefined)( + l1AvailableNetworks.find( + ({ chainId }) => chainId === Number(net?.chainId), + ), + ) + const l2 = ((data) => + data ? createSTokensContractL2(provider)(data.map.sTokens) : undefined)( + l2AvailableNetworks.find( + ({ chainId }) => chainId === Number(net?.chainId), + ), + ) + const results: Results = [l1, l2] + // eslint-disable-next-line functional/no-expression-statement + cache.set(provider, results) + return results + })()) + return res +} diff --git a/lib/agent/common/clients/clientsUtilsSwapForStake.ts b/lib/agent/common/clients/clientsUtilsSwapForStake.ts new file mode 100644 index 000000000..1dd94c56f --- /dev/null +++ b/lib/agent/common/clients/clientsUtilsSwapForStake.ts @@ -0,0 +1,45 @@ +import { AgentAvailableNetworks } from '../const' +import type { UndefinedOr } from '@devprotocol/util-ts' +import { createSwapContract, SwapContract } from '../../fixtures/swap' +import { ContractRunner } from 'ethers' + +type Results = readonly [ + undefined, + UndefinedOr, + UndefinedOr, +] + +const cache: WeakMap = new WeakMap() + +const polygonIDs = [137, 80001] + +export const clientsUtilsSwapForStake = async ( + provider: ContractRunner, +): Promise => { + const res = + cache.get(provider) ?? + (await (async () => { + const net = await provider.provider?.getNetwork() + const detectedNetwork = AgentAvailableNetworks.find( + ({ chainId }) => chainId === Number(net?.chainId), + ) + const l2 = detectedNetwork + ? ((v: 'v2' | 'v3' | 'v3_polygon') => + createSwapContract( + provider, + v, + )(detectedNetwork.map.swap.v3 ?? detectedNetwork.map.swap.v2))( + polygonIDs.some((id) => id === Number(net?.chainId)) + ? 'v3_polygon' + : detectedNetwork.map.swap.v3 !== undefined + ? 'v3' + : 'v2', + ) + : undefined + const results: Results = [undefined, l2, detectedNetwork?.map.weth] + // eslint-disable-next-line functional/no-expression-statement + cache.set(provider, results) + return results + })()) + return res +} diff --git a/lib/agent/common/clients/clientsUtilsSwapTokensForStake.ts b/lib/agent/common/clients/clientsUtilsSwapTokensForStake.ts new file mode 100644 index 000000000..d26e29163 --- /dev/null +++ b/lib/agent/common/clients/clientsUtilsSwapTokensForStake.ts @@ -0,0 +1,34 @@ +import { AgentAvailableNetworks } from '../const' +import type { UndefinedOr } from '@devprotocol/util-ts' +import { + createSwapArbitraryTokensContract, + SwapArbitraryTokensContract, +} from '../../fixtures/swap-arbitrary-tokens' +import type { ContractRunner } from 'ethers' + +type Results = readonly [undefined, UndefinedOr] + +const cache: WeakMap = new WeakMap() + +export const clientsUtilsSwapTokensForStake = async ( + provider: ContractRunner, +): Promise => { + const res = + cache.get(provider) ?? + (await (async () => { + const net = await provider.provider?.getNetwork() + const detectedNetwork = AgentAvailableNetworks.find( + ({ chainId }) => chainId === Number(net?.chainId), + ) + const cont = detectedNetwork + ? createSwapArbitraryTokensContract(provider)( + detectedNetwork.map.swapArbitraryTokens?.swap || '', + ) + : undefined + const results: Results = [undefined, cont] + // eslint-disable-next-line functional/no-expression-statement + cache.set(provider, results) + return results + })()) + return res +} diff --git a/lib/agent/common/clients/registryClientL1.ts b/lib/agent/common/clients/registryClientL1.ts deleted file mode 100644 index e83fa2f04..000000000 --- a/lib/agent/common/clients/registryClientL1.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { l1AvailableNetworks } from '../const' -import type { UndefinedOr } from '@devprotocol/util-ts' -import { - createRegistryContract, - RegistryContract, -} from '../../../ethereum/registry' -import { Provider } from '@ethersproject/abstract-provider' - -const cache: WeakMap> = new WeakMap() - -export const registryClientL1 = async ( - provider: Provider -): Promise> => { - const res = - cache.get(provider) ?? - (await (async () => { - const net = await provider.getNetwork() - const l1Info = l1AvailableNetworks.find( - ({ chainId }) => chainId === net.chainId - ) - const l1 = l1Info - ? createRegistryContract(provider)(l1Info.registry) - : undefined - const results = l1 - // eslint-disable-next-line functional/no-expression-statement - cache.set(provider, l1) - return results - })()) - return res -} diff --git a/lib/agent/common/const.ts b/lib/agent/common/const.ts index 1ad96b78d..7b7b4d074 100644 --- a/lib/agent/common/const.ts +++ b/lib/agent/common/const.ts @@ -1,4 +1,5 @@ import { addresses } from '../../addresses' +import { agentAddresses } from './agentAddresses' export type L1AvailableNetwork = { readonly chainId: number @@ -34,3 +35,34 @@ export const l2AvailableNetworks: readonly L2AvailableNetwork[] = [ { chainId: 137, map: addresses.polygon.mainnet }, { chainId: 80001, map: addresses.polygon.mumbai }, ] + +export type AgentAvailableNetwork = { + readonly chainId: number + readonly map: { + readonly swap: + | { + readonly v2: string + readonly v3: undefined + } + | { + readonly v2: undefined + readonly v3: string + } + readonly swapArbitraryTokens?: { + readonly swap: string + } + readonly usdc?: string + readonly weth?: string + } +} + +export const AgentAvailableNetworks: readonly AgentAvailableNetwork[] = [ + { chainId: 1, map: agentAddresses.eth.main }, + { + chainId: 42161, + map: agentAddresses.arbitrum.one, + }, + { chainId: 421611, map: agentAddresses.arbitrum.rinkeby }, + { chainId: 137, map: agentAddresses.polygon.mainnet }, + { chainId: 80001, map: agentAddresses.polygon.mumbai }, +] diff --git a/lib/agent/estimationsAPY.ts b/lib/agent/estimationsAPY.ts new file mode 100644 index 000000000..9b109ddc6 --- /dev/null +++ b/lib/agent/estimationsAPY.ts @@ -0,0 +1,56 @@ +import { clientsLockup } from './common/clients/clientsLockup' +import { UndefinedOr, whenDefined, whenDefinedAll } from '@devprotocol/util-ts' +import { clientsMetricsFactory } from './common/clients/clientsMetricsFactory' +import { clientsMetricsGroup } from './common/clients/clientsMetricsGroup' +import { clientsPolicy } from './common/clients/clientsPolicy' +import { BigNumber } from 'bignumber.js' +import { ContractRunner } from 'ethers' + +type EstimationsAPY = (options: { + readonly provider: ContractRunner +}) => Promise, UndefinedOr]> + +export const estimationsAPY: EstimationsAPY = async (options) => { + const [[l1P, l2P], [l1L, l2L], [, l2MF], [l1MG]] = await Promise.all([ + clientsPolicy(options.provider), + clientsLockup(options.provider), + clientsMetricsFactory(options.provider), + clientsMetricsGroup(options.provider), + ]) + const tvl = l1L + ? await l1L.getAllValue() + : l2L + ? await l2L.totalLocked() + : undefined + const assets = l1MG + ? await l1MG.totalIssuedMetrics() + : l2MF + ? await l2MF.metricsCount() + : undefined + const yeild = await whenDefinedAll( + [tvl, assets, l1P || l2P], + ([_tvl, _assets, policy]) => policy.rewards(_tvl, _assets.toString()), + ) + const holders = await whenDefinedAll( + [tvl, yeild, l1P || l2P], + ([_tvl, y, policy]) => policy.holdersShare(y, _tvl), + ) + const annualYeild = whenDefined( + yeild, + (y) => BigInt(y) * (l1P ? BigInt(2102400) : BigInt(31536000)), + ) + const shareOfHolders = whenDefinedAll([holders, yeild], ([hol, y]) => + new BigNumber(hol).div(y).toNumber(), + ) + const shareOfStakers = whenDefined(shareOfHolders, (hs) => 1 - hs) + const apyForStakers = whenDefinedAll( + [annualYeild, shareOfStakers, tvl], + ([ay, sh, tv]) => new BigNumber(ay.toString()).times(sh).div(tv).toNumber(), + ) + const apyForHolders = whenDefinedAll( + [annualYeild, shareOfHolders, tvl], + ([ay, sh, tv]) => new BigNumber(ay.toString()).times(sh).div(tv).toNumber(), + ) + + return [apyForStakers, apyForHolders] +} diff --git a/lib/agent/fixtures/swap-arbitrary-tokens/abi.ts b/lib/agent/fixtures/swap-arbitrary-tokens/abi.ts new file mode 100644 index 000000000..bb61892c5 --- /dev/null +++ b/lib/agent/fixtures/swap-arbitrary-tokens/abi.ts @@ -0,0 +1,459 @@ +export const swapArbitraryTokensAbi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'payee', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'token', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'Deposited', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint8', + name: 'version', + type: 'uint8', + }, + ], + name: 'Initialized', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'payee', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'token', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'Withdrawn', + type: 'event', + }, + { + inputs: [ + { + internalType: 'address', + name: 'token', + type: 'address', + }, + ], + name: 'claim', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'devAddress', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'user', + type: 'address', + }, + { + internalType: 'address', + name: 'token', + type: 'address', + }, + ], + name: 'gatewayFees', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'gatewayOf', + outputs: [ + { + internalType: 'address', + name: 'token', + type: 'address', + }, + { + internalType: 'uint256', + name: 'input', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'fee', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes', + name: 'path', + type: 'bytes', + }, + { + internalType: 'uint256', + name: 'tokenAmount', + type: 'uint256', + }, + ], + name: 'getEstimatedDevForTokens', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes', + name: 'path', + type: 'bytes', + }, + { + internalType: 'uint256', + name: 'devAmount', + type: 'uint256', + }, + ], + name: 'getEstimatedTokensForDev', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_devAddress', + type: 'address', + }, + { + internalType: 'address', + name: '_lockupAddress', + type: 'address', + }, + { + internalType: 'address', + name: '_sTokensAddress', + type: 'address', + }, + ], + name: 'initialize', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'lockupAddress', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'quoter', + outputs: [ + { + internalType: 'contract IQuoter', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'sTokensAddress', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_to', + type: 'address', + }, + { + internalType: 'bytes', + name: '_path', + type: 'bytes', + }, + { + internalType: 'address', + name: '_property', + type: 'address', + }, + { + internalType: 'uint256', + name: '_amountOut', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_deadline', + type: 'uint256', + }, + { + internalType: 'bytes32', + name: '_payload', + type: 'bytes32', + }, + { + internalType: 'address payable', + name: '_gatewayAddress', + type: 'address', + }, + { + internalType: 'uint256', + name: '_gatewayFee', + type: 'uint256', + }, + ], + name: 'swapTokensAndStakeDev', + outputs: [], + stateMutability: 'payable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_to', + type: 'address', + }, + { + internalType: 'contract IERC20', + name: '_token', + type: 'address', + }, + { + internalType: 'bytes', + name: '_path', + type: 'bytes', + }, + { + internalType: 'address', + name: '_property', + type: 'address', + }, + { + internalType: 'uint256', + name: '_amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_amountOut', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_deadline', + type: 'uint256', + }, + { + internalType: 'bytes32', + name: '_payload', + type: 'bytes32', + }, + { + internalType: 'address payable', + name: '_gatewayAddress', + type: 'address', + }, + { + internalType: 'uint256', + name: '_gatewayFee', + type: 'uint256', + }, + ], + name: 'swapTokensAndStakeDev', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_to', + type: 'address', + }, + { + internalType: 'bytes', + name: '_path', + type: 'bytes', + }, + { + internalType: 'address', + name: '_property', + type: 'address', + }, + { + internalType: 'uint256', + name: '_amountOut', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_deadline', + type: 'uint256', + }, + { + internalType: 'bytes32', + name: '_payload', + type: 'bytes32', + }, + ], + name: 'swapTokensAndStakeDev', + outputs: [], + stateMutability: 'payable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_to', + type: 'address', + }, + { + internalType: 'contract IERC20', + name: '_token', + type: 'address', + }, + { + internalType: 'bytes', + name: '_path', + type: 'bytes', + }, + { + internalType: 'address', + name: '_property', + type: 'address', + }, + { + internalType: 'uint256', + name: '_amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_amountOut', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_deadline', + type: 'uint256', + }, + { + internalType: 'bytes32', + name: '_payload', + type: 'bytes32', + }, + ], + name: 'swapTokensAndStakeDev', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'uniswapRouter', + outputs: [ + { + internalType: 'contract ISwapRouter', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, +] diff --git a/lib/agent/fixtures/swap-arbitrary-tokens/getEstimatedDevForTokens.spec.ts b/lib/agent/fixtures/swap-arbitrary-tokens/getEstimatedDevForTokens.spec.ts new file mode 100644 index 000000000..94473189a --- /dev/null +++ b/lib/agent/fixtures/swap-arbitrary-tokens/getEstimatedDevForTokens.spec.ts @@ -0,0 +1,49 @@ +import { createGetEstimatedDevForTokensCaller } from './getEstimatedDevForTokens' + +describe('getEstimatedDevForTokens.spec.ts', () => { + describe('createGetEstimatedDevForTokensCaller', () => { + it('call success', async () => { + const value = 'value' + + const swapUsdcContract = { + getEstimatedDevForTokens: { + staticCall: jest + .fn() + .mockImplementation(async () => Promise.resolve(value)), + }, + } + + const expected = value + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createGetEstimatedDevForTokensCaller( + swapUsdcContract as any, + ) + + const result = await caller([], '1000') + + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const error = 'error' + + const swapUsdcContract = { + getEstimatedDevForTokens: { + staticCall: jest + .fn() + .mockImplementation(async () => Promise.reject(error)), + }, + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createGetEstimatedDevForTokensCaller( + swapUsdcContract as any, + ) + + const result = await caller([], '1000').catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/agent/fixtures/swap-arbitrary-tokens/getEstimatedDevForTokens.ts b/lib/agent/fixtures/swap-arbitrary-tokens/getEstimatedDevForTokens.ts new file mode 100644 index 000000000..6c95e1fc6 --- /dev/null +++ b/lib/agent/fixtures/swap-arbitrary-tokens/getEstimatedDevForTokens.ts @@ -0,0 +1,26 @@ +/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */ +import { ethers, solidityPacked } from 'ethers' +import { execute, QueryOption } from '../../../common/utils/execute' +import { pathOf } from './path-of' + +export type CreateGetEstimatedDevForTokensCaller = ( + contract: ethers.Contract, +) => ( + path: readonly (string | bigint)[], + tokenAmount: string, +) => Promise + +export const createGetEstimatedDevForTokensCaller: CreateGetEstimatedDevForTokensCaller = + + (contract: ethers.Contract) => + async (path: readonly (string | bigint)[], tokenAmount: string) => { + const res = await execute({ + contract, + method: 'getEstimatedDevForTokens', + args: [pathOf(path), tokenAmount], + mutation: false, + static: true, + }) + + return res + } diff --git a/lib/agent/fixtures/swap-arbitrary-tokens/getEstimatedTokensForDev.spec.ts b/lib/agent/fixtures/swap-arbitrary-tokens/getEstimatedTokensForDev.spec.ts new file mode 100644 index 000000000..d7c8abd44 --- /dev/null +++ b/lib/agent/fixtures/swap-arbitrary-tokens/getEstimatedTokensForDev.spec.ts @@ -0,0 +1,64 @@ +import { ZeroAddress, solidityPacked } from 'ethers' +import { createGetEstimatedTokensForDevCaller } from './getEstimatedTokensForDev' + +describe('getEstimatedTokensForDev.spec.ts', () => { + describe('createGetEstimatedTokensForDevCaller.spec.ts', () => { + it('call success', async () => { + const value = 'value' + + const contract = { + getEstimatedTokensForDev: { + staticCall: jest + .fn() + .mockImplementation(async () => Promise.resolve(value)), + }, + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createGetEstimatedTokensForDevCaller(contract as any) + + const result = await caller( + [ZeroAddress, 10000n, ZeroAddress, 500n], + 'devAmount', + ) + + expect(contract.getEstimatedTokensForDev.staticCall).toBeCalledWith( + solidityPacked( + ['address', 'uint24', 'address', 'uint24'], + [ZeroAddress, 10000n, ZeroAddress, 500n], + ), + 'devAmount', + ) + expect(result).toEqual(value) + }) + + it('call failure', async () => { + const error = 'error' + + const contract = { + getEstimatedTokensForDev: { + staticCall: jest + .fn() + .mockImplementation(async () => Promise.reject(error)), + }, + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createGetEstimatedTokensForDevCaller(contract as any) + + const result = await caller( + [ZeroAddress, 10000n, ZeroAddress, 500n], + 'devAmount', + ).catch((err) => err) + + expect(contract.getEstimatedTokensForDev.staticCall).toBeCalledWith( + solidityPacked( + ['address', 'uint24', 'address', 'uint24'], + [ZeroAddress, 10000n, ZeroAddress, 500n], + ), + 'devAmount', + ) + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/agent/fixtures/swap-arbitrary-tokens/getEstimatedTokensForDev.ts b/lib/agent/fixtures/swap-arbitrary-tokens/getEstimatedTokensForDev.ts new file mode 100644 index 000000000..95cbbd4f5 --- /dev/null +++ b/lib/agent/fixtures/swap-arbitrary-tokens/getEstimatedTokensForDev.ts @@ -0,0 +1,23 @@ +/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */ +import { ethers, solidityPacked } from 'ethers' +import { execute, QueryOption } from '../../../common/utils/execute' +import { pathOf } from './path-of' + +export type CreateGetEstimatedTokensForDevCaller = ( + contract: ethers.Contract, +) => (path: readonly (string | bigint)[], devAmount: string) => Promise + +export const createGetEstimatedTokensForDevCaller: CreateGetEstimatedTokensForDevCaller = + + (contract: ethers.Contract) => + async (path: readonly (string | bigint)[], devAmount: string) => { + const res = await execute({ + contract, + method: 'getEstimatedTokensForDev', + args: [pathOf(path), devAmount], + mutation: false, + static: true, + }) + + return res + } diff --git a/lib/agent/fixtures/swap-arbitrary-tokens/index.spec.ts b/lib/agent/fixtures/swap-arbitrary-tokens/index.spec.ts new file mode 100644 index 000000000..d1efe1026 --- /dev/null +++ b/lib/agent/fixtures/swap-arbitrary-tokens/index.spec.ts @@ -0,0 +1,58 @@ +import { ethers, JsonRpcProvider } from 'ethers' +import { + createSwapArbitraryTokensContract, + SwapArbitraryTokensContract, +} from '.' +import { createGetEstimatedDevForTokensCaller } from './getEstimatedDevForTokens' +import { createGetEstimatedTokensForDevCaller } from './getEstimatedTokensForDev' +import { createSwapTokensAndStakeDevCaller } from './swapTokensAndStakeDev' +import { swapArbitraryTokensAbi } from './abi' + +jest.mock('./getEstimatedDevForTokens') +jest.mock('./getEstimatedTokensForDev') +jest.mock('./swapTokensAndStakeDev') + +describe('swap-arbitrary-tokens/index.ts', () => { + ;(createGetEstimatedDevForTokensCaller as jest.Mock).mockImplementation( + () => 123, + ) + ;(createGetEstimatedTokensForDevCaller as jest.Mock).mockImplementation( + () => 123, + ) + ;(createSwapTokensAndStakeDevCaller as jest.Mock).mockImplementation( + () => 123, + ) + + describe('createSwapArbitraryTokensContract', () => { + it('check return object', () => { + const host = 'localhost' + const address = '0x0000000000000000000000000000000000000000' + const provider = new JsonRpcProvider(host) + + const expected: (address: string) => SwapArbitraryTokensContract = ( + address: string, + ) => { + const contract = new ethers.Contract( + address, + [...swapArbitraryTokensAbi], + provider, + ) + return { + getEstimatedDevForTokens: + createGetEstimatedDevForTokensCaller(contract), + getEstimatedTokensForDev: + createGetEstimatedTokensForDevCaller(contract), + swapTokensAndStakeDev: createSwapTokensAndStakeDevCaller(contract), + contract: () => contract, + } + } + + const result = createSwapArbitraryTokensContract(provider) + + expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) + expect(JSON.stringify(result(address))).toEqual( + JSON.stringify(expected(address)), + ) + }) + }) +}) diff --git a/lib/agent/fixtures/swap-arbitrary-tokens/index.ts b/lib/agent/fixtures/swap-arbitrary-tokens/index.ts new file mode 100644 index 000000000..d05865f9b --- /dev/null +++ b/lib/agent/fixtures/swap-arbitrary-tokens/index.ts @@ -0,0 +1,49 @@ +import { ContractRunner, ethers } from 'ethers' +import { swapArbitraryTokensAbi } from './abi' +import { FallbackableOverrides } from '../../../common/utils/execute' +import type { TransactionResponse } from 'ethers' +import { createGetEstimatedDevForTokensCaller } from './getEstimatedDevForTokens' +import { createGetEstimatedTokensForDevCaller } from './getEstimatedTokensForDev' +import { createSwapTokensAndStakeDevCaller } from './swapTokensAndStakeDev' + +export type SwapArbitraryTokensContract = { + readonly getEstimatedDevForTokens: ( + path: readonly (string | bigint)[], + tokenAmount: string, + ) => Promise + readonly getEstimatedTokensForDev: ( + path: readonly (string | bigint)[], + devAmount: string, + ) => Promise + readonly swapTokensAndStakeDev: ( + to: string, + path: readonly (string | bigint)[], + propertyAddress: string, + amountOut: string, + deadline: number, + amount: string, + payload?: string | Uint8Array, + token?: string, + gatewayAddress?: string, + gatewayBasisPoints?: string, + overrides?: FallbackableOverrides, + ) => Promise + readonly contract: () => ethers.Contract +} + +export const createSwapArbitraryTokensContract = + (provider: ContractRunner) => + (address: string): SwapArbitraryTokensContract => { + const contract = new ethers.Contract( + address, + [...swapArbitraryTokensAbi], + provider, + ) + + return { + getEstimatedDevForTokens: createGetEstimatedDevForTokensCaller(contract), + getEstimatedTokensForDev: createGetEstimatedTokensForDevCaller(contract), + swapTokensAndStakeDev: createSwapTokensAndStakeDevCaller(contract), + contract: () => contract, + } + } diff --git a/lib/agent/fixtures/swap-arbitrary-tokens/path-of.ts b/lib/agent/fixtures/swap-arbitrary-tokens/path-of.ts new file mode 100644 index 000000000..ca0adc1d8 --- /dev/null +++ b/lib/agent/fixtures/swap-arbitrary-tokens/path-of.ts @@ -0,0 +1,14 @@ +import { solidityPacked } from 'ethers' + +export const pathOf = (_path: readonly (string | bigint)[]): string => { + const abi = _path.map((value) => + typeof value === 'string' + ? 'address' + : typeof value === 'bigint' + ? 'uint24' + : (undefined as never), + ) + const path = solidityPacked(abi, _path) + + return path +} diff --git a/lib/agent/fixtures/swap-arbitrary-tokens/swapTokensAndStakeDev.spec.ts b/lib/agent/fixtures/swap-arbitrary-tokens/swapTokensAndStakeDev.spec.ts new file mode 100644 index 000000000..f49908dca --- /dev/null +++ b/lib/agent/fixtures/swap-arbitrary-tokens/swapTokensAndStakeDev.spec.ts @@ -0,0 +1,258 @@ +import { createSwapTokensAndStakeDevCaller } from './swapTokensAndStakeDev' +import { stubTransactionResposeFactory } from '../../../common/utils/for-test' +import { ZeroHash } from 'ethers' + +describe('swapTokensAndStakeDev.spec.ts', () => { + describe('createSwapTokensAndStakeDevCaller: ERC20, with gateway', () => { + it('call success', async () => { + const stubTx = stubTransactionResposeFactory({}) + const swapContract = { + 'swapTokensAndStakeDev(address,address,bytes,address,uint256,uint256,uint256,bytes32,address,uint256)': + () => Promise.resolve(stubTx), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createSwapTokensAndStakeDevCaller(swapContract as any) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + [ + '0xA5577D1cec2583058A6Bd6d5DEAC44797c205701', + 10000n, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + 500n, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + ], + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '1000000000000000000', + Math.floor(new Date().getTime() / 1000) + 300, + '1000000000000000000', + ZeroHash, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '1000', + ) + + expect(result).toEqual(stubTx) + }) + + it('call failure', async () => { + const error = 'error' + const swapContract = { + 'swapTokensAndStakeDev(address,address,bytes,address,uint256,uint256,uint256,bytes32,address,uint256)': + jest.fn().mockImplementation(async () => Promise.reject(error)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createSwapTokensAndStakeDevCaller(swapContract as any) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + [ + '0xA5577D1cec2583058A6Bd6d5DEAC44797c205701', + 10000n, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + 500n, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + ], + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '1000000000000000000', + Math.floor(new Date().getTime() / 1000) + 300, + '1000000000000000000', + ZeroHash, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '1000', + ).catch((err) => err) + + expect(result).toEqual(error) + }) + }) + describe('createSwapTokensAndStakeDevCaller: ERC20, without gateway', () => { + it('call success', async () => { + const stubTx = stubTransactionResposeFactory({}) + const swapContract = { + 'swapTokensAndStakeDev(address,address,bytes,address,uint256,uint256,uint256,bytes32)': + () => Promise.resolve(stubTx), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createSwapTokensAndStakeDevCaller(swapContract as any) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + [ + '0xA5577D1cec2583058A6Bd6d5DEAC44797c205701', + 10000n, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + 500n, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + ], + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '1000000000000000000', + Math.floor(new Date().getTime() / 1000) + 300, + '1000000000000000000', + ZeroHash, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + ) + + expect(result).toEqual(stubTx) + }) + + it('call failure', async () => { + const error = 'error' + const swapContract = { + 'swapTokensAndStakeDev(address,address,bytes,address,uint256,uint256,uint256,bytes32)': + jest.fn().mockImplementation(async () => Promise.reject(error)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createSwapTokensAndStakeDevCaller(swapContract as any) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + [ + '0xA5577D1cec2583058A6Bd6d5DEAC44797c205701', + 10000n, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + 500n, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + ], + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '1000000000000000000', + Math.floor(new Date().getTime() / 1000) + 300, + '1000000000000000000', + ZeroHash, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + ).catch((err) => err) + + expect(result).toEqual(error) + }) + }) + describe('createSwapTokensAndStakeDevCaller: Calling payable, with gateway', () => { + it('call success', async () => { + const stubTx = stubTransactionResposeFactory({}) + const swapContract = { + 'swapTokensAndStakeDev(address,bytes,address,uint256,uint256,bytes32,address,uint256)': + () => Promise.resolve(stubTx), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createSwapTokensAndStakeDevCaller(swapContract as any) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + [ + '0xA5577D1cec2583058A6Bd6d5DEAC44797c205701', + 10000n, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + 500n, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + ], + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '1000000000000000000', + Math.floor(new Date().getTime() / 1000) + 300, + '1000000000000000000', + ZeroHash, + undefined, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '1000', + ) + + expect(result).toEqual(stubTx) + }) + + it('call failure', async () => { + const error = 'error' + const swapContract = { + 'swapTokensAndStakeDev(address,bytes,address,uint256,uint256,bytes32,address,uint256)': + jest.fn().mockImplementation(async () => Promise.reject(error)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createSwapTokensAndStakeDevCaller(swapContract as any) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + [ + '0xA5577D1cec2583058A6Bd6d5DEAC44797c205701', + 10000n, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + 500n, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + ], + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '1000000000000000000', + Math.floor(new Date().getTime() / 1000) + 300, + '1000000000000000000', + ZeroHash, + undefined, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '1000', + ).catch((err) => err) + + expect(result).toEqual(error) + }) + }) + describe('createSwapTokensAndStakeDevCaller: Calling payable, without gateway', () => { + it('call success', async () => { + const stubTx = stubTransactionResposeFactory({}) + const swapContract = { + 'swapTokensAndStakeDev(address,bytes,address,uint256,uint256,bytes32)': + () => Promise.resolve(stubTx), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createSwapTokensAndStakeDevCaller(swapContract as any) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + [ + '0xA5577D1cec2583058A6Bd6d5DEAC44797c205701', + 10000n, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + 500n, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + ], + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '1000000000000000000', + Math.floor(new Date().getTime() / 1000) + 300, + '1000000000000000000', + ZeroHash, + undefined, + ) + + expect(result).toEqual(stubTx) + }) + + it('call failure', async () => { + const error = 'error' + const swapContract = { + 'swapTokensAndStakeDev(address,bytes,address,uint256,uint256,bytes32)': + jest.fn().mockImplementation(async () => Promise.reject(error)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createSwapTokensAndStakeDevCaller(swapContract as any) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + [ + '0xA5577D1cec2583058A6Bd6d5DEAC44797c205701', + 10000n, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + 500n, + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + ], + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '1000000000000000000', + Math.floor(new Date().getTime() / 1000) + 300, + '1000000000000000000', + ZeroHash, + undefined, + ).catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/agent/fixtures/swap-arbitrary-tokens/swapTokensAndStakeDev.ts b/lib/agent/fixtures/swap-arbitrary-tokens/swapTokensAndStakeDev.ts new file mode 100644 index 000000000..20f5407c0 --- /dev/null +++ b/lib/agent/fixtures/swap-arbitrary-tokens/swapTokensAndStakeDev.ts @@ -0,0 +1,106 @@ +/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */ +import { ethers, ZeroAddress, ZeroHash } from 'ethers' +import { + execute, + FallbackableOverrides, + MutationOption, +} from '../../../common/utils/execute' +import type { TransactionResponse } from 'ethers' +import { pathOf } from './path-of' + +export type CreateSwapTokensAndStakeDevCaller = ( + contract: ethers.Contract, +) => ( + to: string, + path: readonly (string | bigint)[], + propertyAddress: string, + amountOut: string, + deadline: number, + amount: string, + payload?: string | Uint8Array, + token?: string, + gatewayAddress?: string, + gatewayBasisPoints?: string, + overrides?: FallbackableOverrides, +) => Promise + +export const createSwapTokensAndStakeDevCaller: CreateSwapTokensAndStakeDevCaller = + + (contract: ethers.Contract) => + async ( + to: string, + path: readonly (string | bigint)[], + propertyAddress: string, + amountOut: string, + deadline: number, + amount: string, + payload?: string | Uint8Array, + token?: string, + gatewayAddress?: string, + gatewayBasisPoints?: string, + overrides?: FallbackableOverrides, + ) => { + const args = + token && token !== ZeroAddress + ? // Overload: ERC20 + gatewayAddress && gatewayBasisPoints + ? [ + to, + token, + pathOf(path), + propertyAddress, + amount, + amountOut, + String(deadline), + payload ?? ZeroHash, + gatewayAddress, + gatewayBasisPoints, + ] + : [ + to, + token, + pathOf(path), + propertyAddress, + amount, + amountOut, + String(deadline), + payload ?? ZeroHash, + ] + : gatewayAddress && gatewayBasisPoints + ? // Overload: Payable + [ + to, + pathOf(path), + propertyAddress, + amountOut, + String(deadline), + payload ?? ZeroHash, + gatewayAddress, + gatewayBasisPoints, + ] + : [ + to, + pathOf(path), + propertyAddress, + amountOut, + String(deadline), + payload ?? ZeroHash, + ] + return execute({ + contract, + method: 'swapTokensAndStakeDev', + mutation: true, + args, + overrides, + interface: + token && token !== ZeroAddress + ? // Overload: ERC20 + gatewayAddress && gatewayBasisPoints + ? 'address,address,bytes,address,uint256,uint256,uint256,bytes32,address,uint256' + : 'address,address,bytes,address,uint256,uint256,uint256,bytes32' + : gatewayAddress && gatewayBasisPoints + ? // Overload: Payable + 'address,bytes,address,uint256,uint256,bytes32,address,uint256' + : 'address,bytes,address,uint256,uint256,bytes32', + }) + } diff --git a/lib/agent/fixtures/swap/abi-v2.ts b/lib/agent/fixtures/swap/abi-v2.ts new file mode 100644 index 000000000..d143e873f --- /dev/null +++ b/lib/agent/fixtures/swap/abi-v2.ts @@ -0,0 +1,285 @@ +export const swapAbiV2 = [ + { + inputs: [ + { + internalType: 'address', + name: '_uniswapRouterAddress', + type: 'address', + }, + { + internalType: 'address', + name: '_devAddress', + type: 'address', + }, + { + internalType: 'address', + name: '_lockupAddress', + type: 'address', + }, + { + internalType: 'address', + name: '_sTokensAddress', + type: 'address', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'payee', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'token', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'Deposited', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'payee', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'token', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'Withdrawn', + type: 'event', + }, + { + inputs: [ + { + internalType: 'address', + name: 'token', + type: 'address', + }, + ], + name: 'claim', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'devAddress', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'user', + type: 'address', + }, + { + internalType: 'address', + name: 'token', + type: 'address', + }, + ], + name: 'gatewayFees', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'gatewayOf', + outputs: [ + { + internalType: 'uint256', + name: 'input', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'fee', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'ethAmount', + type: 'uint256', + }, + ], + name: 'getEstimatedDevForEth', + outputs: [ + { + internalType: 'uint256[]', + name: '', + type: 'uint256[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'devAmount', + type: 'uint256', + }, + ], + name: 'getEstimatedEthForDev', + outputs: [ + { + internalType: 'uint256[]', + name: '', + type: 'uint256[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'lockupAddress', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'sTokensAddress', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'property', + type: 'address', + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256', + }, + { + internalType: 'bytes32', + name: 'payload', + type: 'bytes32', + }, + ], + name: 'swapEthAndStakeDev', + outputs: [], + stateMutability: 'payable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'property', + type: 'address', + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256', + }, + { + internalType: 'bytes32', + name: 'payload', + type: 'bytes32', + }, + { + internalType: 'address payable', + name: 'gatewayAddress', + type: 'address', + }, + { + internalType: 'uint256', + name: 'gatewayFee', + type: 'uint256', + }, + ], + name: 'swapEthAndStakeDev', + outputs: [], + stateMutability: 'payable', + type: 'function', + }, + { + inputs: [], + name: 'uniswapRouter', + outputs: [ + { + internalType: 'contract IUniswapV2Router02', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, +] diff --git a/lib/agent/fixtures/swap/abi-v3-polygon.ts b/lib/agent/fixtures/swap/abi-v3-polygon.ts new file mode 100644 index 000000000..35b8c6db9 --- /dev/null +++ b/lib/agent/fixtures/swap/abi-v3-polygon.ts @@ -0,0 +1,321 @@ +export const swapAbiV3Polygon = [ + { + inputs: [ + { + internalType: 'address', + name: '_wethAddress', + type: 'address', + }, + { + internalType: 'address', + name: '_devAddress', + type: 'address', + }, + { + internalType: 'address', + name: '_lockupAddress', + type: 'address', + }, + { + internalType: 'address', + name: '_sTokensAddress', + type: 'address', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'payee', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'token', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'Deposited', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'payee', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'token', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'Withdrawn', + type: 'event', + }, + { + inputs: [ + { + internalType: 'address', + name: 'token', + type: 'address', + }, + ], + name: 'claim', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'devAddress', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'user', + type: 'address', + }, + { + internalType: 'address', + name: 'token', + type: 'address', + }, + ], + name: 'gatewayFees', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'gatewayOf', + outputs: [ + { + internalType: 'uint256', + name: 'input', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'fee', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'ethAmount', + type: 'uint256', + }, + ], + name: 'getEstimatedDevForEth', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'devAmount', + type: 'uint256', + }, + ], + name: 'getEstimatedEthForDev', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'lockupAddress', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'quoter', + outputs: [ + { + internalType: 'contract IQuoter', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'sTokensAddress', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'property', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256', + }, + { + internalType: 'bytes32', + name: 'payload', + type: 'bytes32', + }, + ], + name: 'swapEthAndStakeDev', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'property', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256', + }, + { + internalType: 'bytes32', + name: 'payload', + type: 'bytes32', + }, + { + internalType: 'address payable', + name: 'gatewayAddress', + type: 'address', + }, + { + internalType: 'uint256', + name: 'gatewayFee', + type: 'uint256', + }, + ], + name: 'swapEthAndStakeDev', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'uniswapRouter', + outputs: [ + { + internalType: 'contract ISwapRouter', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'wethAddress', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, +] diff --git a/lib/agent/fixtures/swap/abi-v3.ts b/lib/agent/fixtures/swap/abi-v3.ts new file mode 100644 index 000000000..1c21e21e0 --- /dev/null +++ b/lib/agent/fixtures/swap/abi-v3.ts @@ -0,0 +1,157 @@ +export const swapAbiV3 = [ + { + inputs: [ + { + internalType: 'address', + name: '_wethAddress', + type: 'address', + }, + { + internalType: 'address', + name: '_devAddress', + type: 'address', + }, + { + internalType: 'address', + name: '_lockupAddress', + type: 'address', + }, + { + internalType: 'address', + name: '_sTokensAddress', + type: 'address', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + inputs: [], + name: 'devAddress', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'ethAmount', + type: 'uint256', + }, + ], + name: 'getEstimatedDevForEth', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'devAmount', + type: 'uint256', + }, + ], + name: 'getEstimatedEthForDev', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'lockupAddress', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'quoter', + outputs: [ + { + internalType: 'contract IQuoter', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'sTokensAddress', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'property', + type: 'address', + }, + ], + name: 'swapEthAndStakeDev', + outputs: [], + stateMutability: 'payable', + type: 'function', + }, + { + inputs: [], + name: 'uniswapRouter', + outputs: [ + { + internalType: 'contract ISwapRouter', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'wethAddress', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, +] diff --git a/lib/agent/fixtures/swap/getEstimatedDevForEth.spec.ts b/lib/agent/fixtures/swap/getEstimatedDevForEth.spec.ts new file mode 100644 index 000000000..6248b890f --- /dev/null +++ b/lib/agent/fixtures/swap/getEstimatedDevForEth.spec.ts @@ -0,0 +1,66 @@ +import { createGetEstimatedDevForEthCaller } from './getEstimatedDevForEth' + +describe('totalLockedForProperty.spec.ts', () => { + describe('createTotalLockedForPropertyCaller', () => { + it('call success', async () => { + const value = 'value' + + const swapContract = { + getEstimatedDevForEth: { + staticCall: jest + .fn() + .mockImplementation(async () => Promise.resolve(value)), + }, + } + + const expected = value + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createGetEstimatedDevForEthCaller(swapContract as any) + + const result = await caller('1000') + + expect(result).toEqual(expected) + }) + + it('call success for v2', async () => { + const value = ['value'] + + const swapContract = { + getEstimatedDevForEth: { + staticCall: jest + .fn() + .mockImplementation(async () => Promise.resolve(value)), + }, + } + + const expected = value[1] + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createGetEstimatedDevForEthCaller(swapContract as any) + + const result = await caller('1000') + + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const error = 'error' + + const swapContract = { + getEstimatedDevForEth: { + staticCall: jest + .fn() + .mockImplementation(async () => Promise.reject(error)), + }, + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createGetEstimatedDevForEthCaller(swapContract as any) + + const result = await caller('1000').catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/agent/fixtures/swap/getEstimatedDevForEth.ts b/lib/agent/fixtures/swap/getEstimatedDevForEth.ts new file mode 100644 index 000000000..6294b31d4 --- /dev/null +++ b/lib/agent/fixtures/swap/getEstimatedDevForEth.ts @@ -0,0 +1,20 @@ +/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */ +import { ethers } from 'ethers' +import { execute, QueryOption } from '../../../common/utils/execute' + +export type CreateGetEstimatedDevForEthCaller = ( + contract: ethers.Contract, +) => (ethAmount: string) => Promise + +export const createGetEstimatedDevForEthCaller: CreateGetEstimatedDevForEthCaller = + (contract: ethers.Contract) => async (ethAmount: string) => { + const res = await execute({ + contract, + method: 'getEstimatedDevForEth', + args: [ethAmount], + mutation: false, + static: true, + }) + + return Array.isArray(res) ? res[1] : res + } diff --git a/lib/agent/fixtures/swap/getEstimatedEthForDev.spec.ts b/lib/agent/fixtures/swap/getEstimatedEthForDev.spec.ts new file mode 100644 index 000000000..19b46f519 --- /dev/null +++ b/lib/agent/fixtures/swap/getEstimatedEthForDev.spec.ts @@ -0,0 +1,66 @@ +import { createGetEstimatedEthForDevCaller } from './getEstimatedEthForDev' + +describe('totalLockedForProperty.spec.ts', () => { + describe('createTotalLockedForPropertyCaller', () => { + it('call success', async () => { + const value = 'value' + + const swapContract = { + getEstimatedEthForDev: { + staticCall: jest + .fn() + .mockImplementation(async () => Promise.resolve(value)), + }, + } + + const expected = value + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createGetEstimatedEthForDevCaller(swapContract as any) + + const result = await caller('1000') + + expect(result).toEqual(expected) + }) + + it('call success v2', async () => { + const value = ['value'] + + const swapContract = { + getEstimatedEthForDev: { + staticCall: jest + .fn() + .mockImplementation(async () => Promise.resolve(value)), + }, + } + + const expected = value[0] + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createGetEstimatedEthForDevCaller(swapContract as any) + + const result = await caller('1000') + + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const error = 'error' + + const swapContract = { + getEstimatedEthForDev: { + staticCall: jest + .fn() + .mockImplementation(async () => Promise.reject(error)), + }, + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createGetEstimatedEthForDevCaller(swapContract as any) + + const result = await caller('1000').catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/agent/fixtures/swap/getEstimatedEthForDev.ts b/lib/agent/fixtures/swap/getEstimatedEthForDev.ts new file mode 100644 index 000000000..6e5703aa4 --- /dev/null +++ b/lib/agent/fixtures/swap/getEstimatedEthForDev.ts @@ -0,0 +1,19 @@ +/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */ +import { ethers } from 'ethers' +import { execute, QueryOption } from '../../../common/utils/execute' + +export type CreateGetEstimatedEthForDevCaller = ( + contract: ethers.Contract, +) => (devAmount: string) => Promise + +export const createGetEstimatedEthForDevCaller: CreateGetEstimatedEthForDevCaller = + (contract: ethers.Contract) => async (devAmount: string) => { + const res = await execute({ + contract, + method: 'getEstimatedEthForDev', + args: [devAmount], + mutation: false, + static: true, + }) + return Array.isArray(res) ? res[0] : res + } diff --git a/lib/agent/fixtures/swap/index.spec.ts b/lib/agent/fixtures/swap/index.spec.ts new file mode 100644 index 000000000..a831ececf --- /dev/null +++ b/lib/agent/fixtures/swap/index.spec.ts @@ -0,0 +1,50 @@ +import { ethers } from 'ethers' +import { createSwapContract, SwapContract } from '.' +import { createGetEstimatedDevForEthCaller } from './getEstimatedDevForEth' +import { createGetEstimatedEthForDevCaller } from './getEstimatedEthForDev' +import { swapAbiV3 } from './abi-v3' +import { createSwapEthAndStakeDevCaller } from './swapEthAndStakeDev' +import { createSwapEthAndStakeDevPolygonCaller } from './swapEthAndStakeDevPolygon' + +jest.mock('./getEstimatedDevForEth') +jest.mock('./getEstimatedEthForDev') +jest.mock('./swapEthAndStakeDev') +jest.mock('ethers') + +describe('swap/index.ts', () => { + ;(createGetEstimatedDevForEthCaller as jest.Mock).mockImplementation( + () => 123, + ) + ;(createGetEstimatedEthForDevCaller as jest.Mock).mockImplementation( + () => 123, + ) + ;(createSwapEthAndStakeDevCaller as jest.Mock).mockImplementation(() => 123) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) + + describe('createSwapContract', () => { + it('check return object', () => { + const host = 'localhost' + const address = '0x0000000000000000000000000000000000000000' + const provider = new ethers.JsonRpcProvider(host) + + const expected: (address: string) => SwapContract = (address: string) => { + const contract = new ethers.Contract(address, [...swapAbiV3], provider) + return { + getEstimatedDevForEth: createGetEstimatedDevForEthCaller(contract), + getEstimatedEthForDev: createGetEstimatedEthForDevCaller(contract), + swapEthAndStakeDevCaller: createSwapEthAndStakeDevCaller(contract), + swapEthAndStakeDevPolygonCaller: + createSwapEthAndStakeDevPolygonCaller(contract), + contract: () => contract, + } + } + + const result = createSwapContract(provider) + + expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) + expect(JSON.stringify(result(address))).toEqual( + JSON.stringify(expected(address)), + ) + }) + }) +}) diff --git a/lib/agent/fixtures/swap/index.ts b/lib/agent/fixtures/swap/index.ts new file mode 100644 index 000000000..f7189d888 --- /dev/null +++ b/lib/agent/fixtures/swap/index.ts @@ -0,0 +1,56 @@ +import { ContractRunner, ethers } from 'ethers' +import { swapAbiV2 } from './abi-v2' +import { swapAbiV3 } from './abi-v3' +import { createGetEstimatedDevForEthCaller } from './getEstimatedDevForEth' +import { createGetEstimatedEthForDevCaller } from './getEstimatedEthForDev' +import { createSwapEthAndStakeDevCaller } from './swapEthAndStakeDev' +import { FallbackableOverrides } from '../../../common/utils/execute' +import type { TransactionResponse } from 'ethers' +import { createSwapEthAndStakeDevPolygonCaller } from './swapEthAndStakeDevPolygon' +import { swapAbiV3Polygon } from './abi-v3-polygon' + +export type SwapContract = { + readonly getEstimatedDevForEth: (ethAmount: string) => Promise + readonly getEstimatedEthForDev: (devAmount: string) => Promise + readonly swapEthAndStakeDevCaller: ( + propertyAddress: string, + deadline: number, + payload: string | Uint8Array, + overrides: FallbackableOverrides, + gatewayAddress?: string, + gatewayBasisPoints?: string, + ) => Promise + readonly swapEthAndStakeDevPolygonCaller: ( + propertyAddress: string, + amount: string, + deadline: number, + payload: string | Uint8Array, + overrides: FallbackableOverrides, + gatewayAddress?: string, + gatewayBasisPoints?: string, + ) => Promise + readonly contract: () => ethers.Contract +} + +export const createSwapContract = + (provider: ContractRunner, v: 'v2' | 'v3' | 'v3_polygon' = 'v3') => + (address: string): SwapContract => { + const contract = new ethers.Contract( + address, + v === 'v3' + ? [...swapAbiV3] + : v === 'v3_polygon' + ? [...swapAbiV3Polygon] + : [...swapAbiV2], + provider, + ) + + return { + getEstimatedDevForEth: createGetEstimatedDevForEthCaller(contract), + getEstimatedEthForDev: createGetEstimatedEthForDevCaller(contract), + swapEthAndStakeDevCaller: createSwapEthAndStakeDevCaller(contract), + swapEthAndStakeDevPolygonCaller: + createSwapEthAndStakeDevPolygonCaller(contract), + contract: () => contract, + } + } diff --git a/lib/agent/fixtures/swap/swapEthAndStakeDev.spec.ts b/lib/agent/fixtures/swap/swapEthAndStakeDev.spec.ts new file mode 100644 index 000000000..6b05e4365 --- /dev/null +++ b/lib/agent/fixtures/swap/swapEthAndStakeDev.spec.ts @@ -0,0 +1,46 @@ +import { createSwapEthAndStakeDevCaller } from './swapEthAndStakeDev' +import { stubTransactionResposeFactory } from '../../../common/utils/for-test' + +describe('depositToProperty.spec.ts', () => { + describe('createDepositToPropertyCaller', () => { + it('call success', async () => { + const stubTx = stubTransactionResposeFactory({}) + + const swapContract = { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + 'swapEthAndStakeDev(address,uint256,bytes32)': ( + propertyAddress: string, + ) => Promise.resolve(stubTx), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createSwapEthAndStakeDevCaller(swapContract as any) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + Math.floor(new Date().getTime() / 1000) + 300, + ) + + expect(result).toEqual(stubTx) + }) + + it('call failure', async () => { + const error = 'error' + const swapContract = { + 'swapEthAndStakeDev(address,uint256,bytes32)': jest + .fn() + .mockImplementation(async () => Promise.reject(error)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createSwapEthAndStakeDevCaller(swapContract as any) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + Math.floor(new Date().getTime() / 1000) + 300, + ).catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/agent/fixtures/swap/swapEthAndStakeDev.ts b/lib/agent/fixtures/swap/swapEthAndStakeDev.ts new file mode 100644 index 000000000..24b493898 --- /dev/null +++ b/lib/agent/fixtures/swap/swapEthAndStakeDev.ts @@ -0,0 +1,53 @@ +/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */ +import { ZeroHash, ethers } from 'ethers' +import { + execute, + FallbackableOverrides, + MutationOption, +} from '../../../common/utils/execute' +import type { TransactionResponse } from 'ethers' + +export type CreateSwapEthAndStakeDevCaller = ( + contract: ethers.Contract, +) => ( + propertyAddress: string, + deadline: number, + payload?: string | Uint8Array, + overrides?: FallbackableOverrides, + gatewayAddress?: string, + gatewayBasisPoints?: string, +) => Promise + +export const createSwapEthAndStakeDevCaller: CreateSwapEthAndStakeDevCaller = + (contract: ethers.Contract) => + async ( + propertyAddress: string, + deadline: number, + payload?: string | Uint8Array, + overrides?: FallbackableOverrides, + gatewayAddress?: string, + gatewayBasisPoints?: string, + ) => { + const args = + gatewayAddress && gatewayBasisPoints + ? [ + propertyAddress, + String(deadline), + payload ?? ZeroHash, + gatewayAddress, + gatewayBasisPoints, + ] + : [propertyAddress, String(deadline), payload ?? ZeroHash] + + return execute({ + contract, + method: 'swapEthAndStakeDev', + mutation: true, + args, + overrides, + interface: + gatewayAddress && gatewayBasisPoints + ? 'address,uint256,bytes32,address,uint256' + : 'address,uint256,bytes32', + }) + } diff --git a/lib/agent/fixtures/swap/swapEthAndStakeDevPolygon.spec.ts b/lib/agent/fixtures/swap/swapEthAndStakeDevPolygon.spec.ts new file mode 100644 index 000000000..6b05e4365 --- /dev/null +++ b/lib/agent/fixtures/swap/swapEthAndStakeDevPolygon.spec.ts @@ -0,0 +1,46 @@ +import { createSwapEthAndStakeDevCaller } from './swapEthAndStakeDev' +import { stubTransactionResposeFactory } from '../../../common/utils/for-test' + +describe('depositToProperty.spec.ts', () => { + describe('createDepositToPropertyCaller', () => { + it('call success', async () => { + const stubTx = stubTransactionResposeFactory({}) + + const swapContract = { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + 'swapEthAndStakeDev(address,uint256,bytes32)': ( + propertyAddress: string, + ) => Promise.resolve(stubTx), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createSwapEthAndStakeDevCaller(swapContract as any) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + Math.floor(new Date().getTime() / 1000) + 300, + ) + + expect(result).toEqual(stubTx) + }) + + it('call failure', async () => { + const error = 'error' + const swapContract = { + 'swapEthAndStakeDev(address,uint256,bytes32)': jest + .fn() + .mockImplementation(async () => Promise.reject(error)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createSwapEthAndStakeDevCaller(swapContract as any) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + Math.floor(new Date().getTime() / 1000) + 300, + ).catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/agent/fixtures/swap/swapEthAndStakeDevPolygon.ts b/lib/agent/fixtures/swap/swapEthAndStakeDevPolygon.ts new file mode 100644 index 000000000..d02beb4fa --- /dev/null +++ b/lib/agent/fixtures/swap/swapEthAndStakeDevPolygon.ts @@ -0,0 +1,54 @@ +/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */ +import { ethers } from 'ethers' +import { + execute, + FallbackableOverrides, + MutationOption, +} from '../../../common/utils/execute' +import type { TransactionResponse } from 'ethers' + +export type CreateSwapEthAndStakeDevPolygonCaller = ( + contract: ethers.Contract, +) => ( + propertyAddress: string, + amount: string, + deadline: number, + payload: string | Uint8Array, + overrides: FallbackableOverrides, + gatewayAddress?: string, + gatewayBasisPoints?: string, +) => Promise + +export const createSwapEthAndStakeDevPolygonCaller: CreateSwapEthAndStakeDevPolygonCaller = + + (contract: ethers.Contract) => + async ( + propertyAddress: string, + amount: string, + deadline: number, + payload: string | Uint8Array, + overrides: FallbackableOverrides, + gatewayAddress?: string, + gatewayBasisPoints?: string, + ) => + execute({ + contract, + method: 'swapEthAndStakeDev', + mutation: true, + args: + gatewayAddress && gatewayBasisPoints + ? [ + propertyAddress, + amount, + String(deadline), + payload, + gatewayAddress, + gatewayBasisPoints, + ] + : [propertyAddress, amount, String(deadline), payload], + overrides, + interface: + gatewayAddress && gatewayBasisPoints + ? 'address,uint256,uint256,bytes32,address,uint256' + : 'address,uint256,uint256,bytes32', + }) diff --git a/lib/agent/index.ts b/lib/agent/index.ts index a91fcc430..bff3b5d58 100644 --- a/lib/agent/index.ts +++ b/lib/agent/index.ts @@ -1 +1,24 @@ export { positionsCreate } from './positionsCreate' +export { positionsCreateWithEth } from './positionsCreateWithEth' +export { positionsCreateWithEthForPolygon } from './positionsCreateWithEthForPolygon' +export { + positionsCreateWithAnyTokens, + type ReturnOfPositionsCreateWithAnyTokensERC20, + type ReturnOfPositionsCreateWithAnyTokensNative, +} from './positionsCreateWithAnyTokens' +export { estimationsAPY } from './estimationsAPY' +export { propertiesAssets } from './propertiesAssets' + +export { clientsDev } from './common/clients/clientsDev' +export { clientsLockup } from './common/clients/clientsLockup' +export { clientsMarketFactory } from './common/clients/clientsMarketFactory' +export { clientsMetricsFactory } from './common/clients/clientsMetricsFactory' +export { clientsProperty } from './common/clients/clientsProperty' +export { clientsPropertyFactory } from './common/clients/clientsPropertyFactory' +export { clientsRegistry } from './common/clients/clientsRegistry' +export { clientsPolicy } from './common/clients/clientsPolicy' +export { clientsSTokens } from './common/clients/clientsSTokens' +export { clientsUtilsSwapForStake } from './common/clients/clientsUtilsSwapForStake' +export { clientsUtilsSwapTokensForStake as clientsUtilsSwapUsdcForStake } from './common/clients/clientsUtilsSwapTokensForStake' +export { agentAddresses } from './common/agentAddresses' +export * from './common/approveIfNeeded' diff --git a/lib/agent/positionsClaim.ts b/lib/agent/positionsClaim.ts index 42368609d..54e22774c 100644 --- a/lib/agent/positionsClaim.ts +++ b/lib/agent/positionsClaim.ts @@ -1,10 +1,10 @@ -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' import { FallbackableOverrides } from '../common/utils/execute' -import { Provider } from '@ethersproject/abstract-provider' +import type { ContractRunner } from 'ethers' import { UndefinedOr } from '@devprotocol/util-ts' type PositionsClaim = (options: { - readonly provider: Provider + readonly provider: ContractRunner readonly positionId: number readonly withdrawalAmount: string readonly overrides?: FallbackableOverrides diff --git a/lib/agent/positionsCreate.ts b/lib/agent/positionsCreate.ts index 9ef01d570..abacb8c84 100644 --- a/lib/agent/positionsCreate.ts +++ b/lib/agent/positionsCreate.ts @@ -1,22 +1,48 @@ -import { TransactionResponse } from '@ethersproject/abstract-provider' import { FallbackableOverrides } from '../common/utils/execute' -import { Provider } from '@ethersproject/abstract-provider' +import { clientsLockup } from './common/clients/clientsLockup' +import { + approveIfNeeded as _approveIfNeeded, + ApproveIfNeededResult, +} from './common/approveIfNeeded' import { UndefinedOr } from '@devprotocol/util-ts' -import { lockupClients } from './common/clients/lockupClients' +import { ContractRunner } from 'ethers' type PositionsCreate = (options: { - readonly provider: Provider + readonly provider: ContractRunner + readonly from: string readonly destination: string readonly amount: string + readonly payload?: string | Uint8Array readonly overrides?: FallbackableOverrides -}) => Promise> +}) => Promise> export const positionsCreate: PositionsCreate = async (options) => { - const [l1, l2] = await lockupClients(options.provider) + const [l1, l2] = await clientsLockup(options.provider) - return l1 - ? l1.depositToProperty(options.destination, options.amount) - : l2 - ? l2.depositToProperty(options.destination, options.amount) + return l1 || l2 + ? ((res) => res)( + await _approveIfNeeded({ + provider: options.provider, + requiredAmount: options.amount, + from: options.from, + to: await ((x) => x?.contract().getAddress())(l1 ?? l2), + callback: (receipt) => + l1 + ? l1.depositToProperty( + options.destination, + options.amount, + options.payload, + options.overrides, + ) + : l2 + ? l2.depositToProperty( + options.destination, + options.amount, + options.payload, + options.overrides, + ) + : (undefined as never), + }), + ) : undefined } diff --git a/lib/agent/positionsCreateWithAnyTokens.ts b/lib/agent/positionsCreateWithAnyTokens.ts new file mode 100644 index 000000000..f53492a7e --- /dev/null +++ b/lib/agent/positionsCreateWithAnyTokens.ts @@ -0,0 +1,187 @@ +/* eslint-disable functional/functional-parameters */ +import { FallbackableOverrides } from '../common/utils/execute' +import { clientsUtilsSwapTokensForStake } from './common/clients/clientsUtilsSwapTokensForStake' +import { ZeroAddress, type ContractRunner } from 'ethers' +import { + approveIfNeeded, + type ApproveIfNeededResult, + type ApproveIfNeededResultForApproveIsNotNeeded, +} from './common/approveIfNeeded' +import { UndefinedOr, whenDefined } from '@devprotocol/util-ts' +import { BigNumber } from 'bignumber.js' + +type Params = { + readonly provider: ContractRunner + readonly mintTo: string + readonly destination: string + readonly path: readonly (string | bigint)[] + readonly token?: string + readonly tokenAmount?: string + readonly devAmount?: string + readonly devAmountOut?: string + readonly from?: string + readonly overrides?: FallbackableOverrides + readonly payload?: string | Uint8Array + readonly deadline?: number + readonly gatewayAddress?: string + readonly gatewayBasisPoints?: number +} + +type ParamsWithToken = Omit & { + readonly token: string +} + +const hasTokens = ( + options: Params | ParamsWithToken, +): options is ParamsWithToken => + options.token !== undefined && options.token !== ZeroAddress + +export type ReturnOfPositionsCreateWithAnyTokensERC20 = Promise< + UndefinedOr<{ + readonly estimatedDev: string + readonly estimatedTokens: string + readonly create: () => Promise + }> +> + +export type ReturnOfPositionsCreateWithAnyTokensNative = Promise< + UndefinedOr<{ + readonly estimatedDev: string + readonly estimatedTokens: string + readonly create: () => Promise + }> +> + +export function positionsCreateWithAnyTokens( + opts: ParamsWithToken, +): ReturnOfPositionsCreateWithAnyTokensERC20 +export function positionsCreateWithAnyTokens( + opts: Params, +): ReturnOfPositionsCreateWithAnyTokensNative + +export async function positionsCreateWithAnyTokens( + options: ParamsWithToken | Params, +): Promise { + const [, cont] = await clientsUtilsSwapTokensForStake(options.provider) + const useERC20 = hasTokens(options) + + return cont + ? { + estimatedDev: options.tokenAmount + ? await cont.getEstimatedDevForTokens( + options.path, + options.tokenAmount, + ) + : 'No tokenAmount provided', + estimatedTokens: options.devAmount + ? await cont.getEstimatedTokensForDev(options.path, options.devAmount) + : 'No devAmount provided', + create: async () => { + const tokenAmount = options.tokenAmount + ? options.tokenAmount + : options.devAmount + ? await cont.getEstimatedTokensForDev( + options.path, + options.devAmount, + ) + : 'Neither tokenAmount nor devAmount provided' + const _overrides = { + overrides: { + ...{ value: useERC20 ? undefined : tokenAmount }, + ...options.overrides?.overrides, + }, + } + + const devAmountOut = options.devAmountOut ? options.devAmountOut : '0' + const deadline = options.deadline + ? options.deadline + : ((await options.provider.provider?.getBlock('latest')) + ?.timestamp ?? Math.floor(new Date().getTime() / 1000)) + 300 + + return useERC20 + ? whenDefined(options.from, async (from) => { + return approveIfNeeded({ + provider: options.provider, + requiredAmount: tokenAmount, + from, + token: options.token, + to: await cont.contract().getAddress(), + callback: async () => { + return options.gatewayAddress && + typeof options.gatewayBasisPoints === 'number' + ? cont.swapTokensAndStakeDev( + options.mintTo, + options.path, + options.destination, + devAmountOut, + deadline, + tokenAmount, + options.payload, + options.token, + options.gatewayAddress, + options.gatewayBasisPoints.toString(), + _overrides, + ) + : cont.swapTokensAndStakeDev( + options.mintTo, + options.path, + options.destination, + devAmountOut, + deadline, + tokenAmount, + options.payload, + options.token, + undefined, + undefined, + _overrides, + ) + }, + }) + }) + : ({ + approvalNeeded: false, + approveIfNeeded: async ( + // eslint-disable-next-line @typescript-eslint/no-unused-vars + _unused_?: Readonly<{ + readonly amount?: string + readonly overrides?: FallbackableOverrides + }>, + ) => ({ + waitNeeded: false, + waitOrSkipApproval: async () => ({ + run: () => + options.gatewayAddress && + typeof options.gatewayBasisPoints === 'number' + ? cont.swapTokensAndStakeDev( + options.mintTo, + options.path, + options.destination, + devAmountOut, + deadline, + tokenAmount, + options.payload, + undefined, + options.gatewayAddress, + options.gatewayBasisPoints.toString(), + _overrides, + ) + : cont.swapTokensAndStakeDev( + options.mintTo, + options.path, + options.destination, + devAmountOut, + deadline, + tokenAmount, + options.payload, + undefined, + undefined, + undefined, + _overrides, + ), + }), + }), + } as ApproveIfNeededResultForApproveIsNotNeeded) + }, + } + : undefined +} diff --git a/lib/agent/positionsCreateWithEth.ts b/lib/agent/positionsCreateWithEth.ts new file mode 100644 index 000000000..31e7fde9a --- /dev/null +++ b/lib/agent/positionsCreateWithEth.ts @@ -0,0 +1,73 @@ +/* eslint-disable functional/functional-parameters */ +import { FallbackableOverrides } from '../common/utils/execute' +import { clientsUtilsSwapForStake } from './common/clients/clientsUtilsSwapForStake' +import type { TransactionResponse } from 'ethers' +import { ContractRunner, ZeroHash } from 'ethers' + +type PositionsCreateWithEth = (options: { + readonly provider: ContractRunner + readonly ethAmount?: string + readonly devAmount?: string + readonly destination: string + readonly deadline?: number + readonly gatewayAddress?: string + readonly gatewayBasisPoints?: number + readonly payload?: string | Uint8Array + readonly overrides?: FallbackableOverrides +}) => Promise<{ + readonly estimatedDev: string + readonly estimatedEth: string + readonly create: () => Promise +}> + +export const positionsCreateWithEth: PositionsCreateWithEth = async ( + options, +) => { + const [, l2] = await clientsUtilsSwapForStake(options.provider) + + return l2 + ? { + estimatedDev: options.ethAmount + ? await l2.getEstimatedDevForEth(options.ethAmount) + : 'No ethAmount provided', + estimatedEth: options.devAmount + ? await l2.getEstimatedEthForDev(options.devAmount) + : 'No devAmount provided', + create: async () => { + const ethAmount = options.ethAmount + ? options.ethAmount + : options.devAmount + ? await l2.getEstimatedEthForDev(options.devAmount) + : 'Neither ethAmount nor devAmount provided' + const _overrides = { + overrides: { + ...{ value: ethAmount }, + ...options.overrides?.overrides, + }, + } + + const deadline = + options.deadline ?? + ((await options.provider.provider?.getBlock('latest'))?.timestamp ?? + Math.floor(new Date().getTime() / 1000)) + 300 + + return options.gatewayAddress && + typeof options.gatewayBasisPoints === 'number' + ? await l2.swapEthAndStakeDevCaller( + options.destination, + deadline, + options.payload ?? ZeroHash, + _overrides, + options.gatewayAddress, + String(options.gatewayBasisPoints), + ) + : await l2.swapEthAndStakeDevCaller( + options.destination, + deadline, + options.payload ?? ZeroHash, + _overrides, + ) + }, + } + : (undefined as never) +} diff --git a/lib/agent/positionsCreateWithEthForPolygon.ts b/lib/agent/positionsCreateWithEthForPolygon.ts new file mode 100644 index 000000000..508e70098 --- /dev/null +++ b/lib/agent/positionsCreateWithEthForPolygon.ts @@ -0,0 +1,88 @@ +/* eslint-disable functional/functional-parameters */ +import { FallbackableOverrides } from '../common/utils/execute' +import { clientsUtilsSwapForStake } from './common/clients/clientsUtilsSwapForStake' +import { ContractRunner, ZeroHash } from 'ethers' +import { + approveIfNeeded, + ApproveIfNeededResult, +} from './common/approveIfNeeded' +import { UndefinedOr, whenDefined } from '@devprotocol/util-ts' + +type PositionsCreateWithEthForPolygon = (options: { + readonly provider: ContractRunner + readonly ethAmount?: string + readonly devAmount?: string + readonly destination: string + readonly from?: string + readonly overrides?: FallbackableOverrides + readonly payload?: string | Uint8Array + readonly deadline?: number + readonly gatewayAddress?: string + readonly gatewayBasisPoints?: number +}) => Promise<{ + readonly estimatedDev: string + readonly estimatedEth: string + readonly create: () => Promise> +}> + +export const positionsCreateWithEthForPolygon: PositionsCreateWithEthForPolygon = + async (options) => { + const [, l2, weth] = await clientsUtilsSwapForStake(options.provider) + + return l2 && weth + ? { + estimatedDev: options.ethAmount + ? await l2.getEstimatedDevForEth(options.ethAmount) + : 'No ethAmount provided', + estimatedEth: options.devAmount + ? await l2.getEstimatedEthForDev(options.devAmount) + : 'No devAmount provided', + create: async () => + whenDefined(options.from, async (from) => { + const ethAmount = options.ethAmount + ? options.ethAmount + : options.devAmount + ? await l2.getEstimatedEthForDev(options.devAmount) + : 'Neither ethAmount nor devAmount provided' + const _overrides = { + overrides: { + ...options.overrides?.overrides, + }, + } + + return approveIfNeeded({ + provider: options.provider, + requiredAmount: ethAmount, + from, + token: weth, + to: await l2.contract().getAddress(), + callback: async () => { + const deadline = options.deadline + ? options.deadline + : ((await options.provider.provider?.getBlock('latest')) + ?.timestamp ?? + Math.floor(new Date().getTime() / 1000)) + 300 + return options.gatewayAddress && + typeof options.gatewayBasisPoints === 'number' + ? l2.swapEthAndStakeDevPolygonCaller( + options.destination, + ethAmount, + deadline, + options.payload ?? ZeroHash, + _overrides, + options.gatewayAddress, + String(options.gatewayBasisPoints), + ) + : l2.swapEthAndStakeDevPolygonCaller( + options.destination, + ethAmount, + deadline, + options.payload ?? ZeroHash, + _overrides, + ) + }, + }) + }), + } + : (undefined as never) + } diff --git a/lib/agent/positionsGet.ts b/lib/agent/positionsGet.ts index 0fb495821..0bb6d271e 100644 --- a/lib/agent/positionsGet.ts +++ b/lib/agent/positionsGet.ts @@ -1,8 +1,8 @@ -import { Provider } from '@ethersproject/abstract-provider' +import type { ContractRunner } from 'ethers' import { UndefinedOr } from '@devprotocol/util-ts' import { Positions } from '../ethereum/s-tokens/positions' type PositionsGet = (options: { - readonly provider: Provider + readonly provider: ContractRunner readonly positionId: number }) => Promise> diff --git a/lib/agent/positionsList.ts b/lib/agent/positionsList.ts index 0559329d7..90019ba33 100644 --- a/lib/agent/positionsList.ts +++ b/lib/agent/positionsList.ts @@ -1,9 +1,9 @@ -import { Provider } from '@ethersproject/abstract-provider' +import type { ContractRunner } from 'ethers' import { UndefinedOr } from '@devprotocol/util-ts' import { Positions } from '../ethereum/s-tokens/positions' type PositionsList = (options: { - readonly provider: Provider + readonly provider: ContractRunner readonly destination?: string readonly user?: string }) => Promise> diff --git a/lib/agent/positionsUpdate.ts b/lib/agent/positionsUpdate.ts index 376a89ee2..b66052c50 100644 --- a/lib/agent/positionsUpdate.ts +++ b/lib/agent/positionsUpdate.ts @@ -1,11 +1,11 @@ -import { TransactionResponse } from '@ethersproject/abstract-provider' import { FallbackableOverrides } from '../common/utils/execute' -import { Provider } from '@ethersproject/abstract-provider' +import type { ContractRunner } from 'ethers' import { UndefinedOr } from '@devprotocol/util-ts' +import { ApproveIfNeededResult } from './common/approveIfNeeded' type PositionsUpdate = (options: { - readonly provider: Provider + readonly provider: ContractRunner readonly positionId: number readonly additionalAmount: string readonly overrides?: FallbackableOverrides -}) => Promise> +}) => Promise> diff --git a/lib/agent/propertiesAssets.ts b/lib/agent/propertiesAssets.ts new file mode 100644 index 000000000..4a53353bf --- /dev/null +++ b/lib/agent/propertiesAssets.ts @@ -0,0 +1,70 @@ +import { UndefinedOr, whenDefined } from '@devprotocol/util-ts' +import { clientsMetricsFactory } from './common/clients/clientsMetricsFactory' +import { createMetricsContract } from '../ethereum/metrics' +import { createMarketContract } from '../ethereum/market' +import { createMarketBehaviorContract } from '../ethereum/market-behavior' +import { flatten, toPairs, unnest, values } from 'ramda' +import { marketAddresses } from '../marketAddresses' +import { ContractRunner } from 'ethers' + +type Asset = { + readonly market: string + readonly marketSlug?: string + readonly id: string +} + +type PropertiesAssets = (options: { + readonly provider: ContractRunner + readonly destination: string +}) => Promise> + +export const propertiesAssets: PropertiesAssets = async (options) => { + const marketSet = unnest( + flatten(values(marketAddresses).map(values)).map(toPairs), + ) as ReadonlyArray + const [, metricsFactory] = await clientsMetricsFactory(options.provider) + const metricsContract = createMetricsContract(options.provider) + const marketContract = createMarketContract(options.provider) + const marketBehaviorContract = createMarketBehaviorContract(options.provider) + + const listOfMetrics = await whenDefined(metricsFactory, (c) => + c.metricsOfProperty(options.destination), + ) + const listOfMetricsContract = await whenDefined(listOfMetrics, (x) => + Promise.all(x.map(metricsContract)), + ) + const listOfMarketContract = await whenDefined(listOfMetricsContract, (m) => + Promise.all( + m.map(async (metrics) => ({ + metrics, + market: marketContract(await metrics.market()), + })), + ), + ) + const marketBehaviors = await whenDefined(listOfMarketContract, (m) => + Promise.all( + m.map(async (cont) => ({ + marketBehavior: marketBehaviorContract(await cont.market.behavior()), + ...cont, + })), + ), + ) + const results = await whenDefined(marketBehaviors, (mb) => + Promise.all( + mb.map(async (cont) => { + const [metrics, market] = await Promise.all([ + cont.metrics.contract().getAddress(), + cont.market.contract().getAddress(), + ]) + const marketSlug = marketSet.find(([, addr]) => addr === market)?.[0] + return { + id: await cont.marketBehavior.getId(metrics), + market, + marketSlug, + } + }), + ), + ) + + return results +} diff --git a/lib/agent/propertiesAuthenticate.ts b/lib/agent/propertiesAuthenticate.ts new file mode 100644 index 000000000..8f70f038a --- /dev/null +++ b/lib/agent/propertiesAuthenticate.ts @@ -0,0 +1,20 @@ +import { FallbackableOverrides } from '../common/utils/execute' +import type { ContractRunner } from 'ethers' +import type { TransactionResponse } from 'ethers' +import { UndefinedOr } from '@devprotocol/util-ts' + +type PropertiesAuthenticate = (options: { + readonly provider: ContractRunner + readonly destination: string + readonly authentication: { + readonly market: string + readonly options: readonly string[] + } + readonly overrides?: FallbackableOverrides +}) => Promise< + UndefinedOr< + TransactionResponse & { + readonly wait: () => Promise + } + > +> diff --git a/lib/agent/propertiesCreate.ts b/lib/agent/propertiesCreate.ts new file mode 100644 index 000000000..f5fea0bf4 --- /dev/null +++ b/lib/agent/propertiesCreate.ts @@ -0,0 +1,12 @@ +import type { TransactionResponse } from 'ethers' +import { FallbackableOverrides } from '../common/utils/execute' +import type { ContractRunner } from 'ethers' +import { UndefinedOr } from '@devprotocol/util-ts' + +type PropertiesCreate = (options: { + readonly provider: ContractRunner + readonly name: string + readonly symbol: string + readonly author: string + readonly overrides?: FallbackableOverrides +}) => Promise> diff --git a/lib/agent/propertiesCreateToAuthenticate.ts b/lib/agent/propertiesCreateToAuthenticate.ts new file mode 100644 index 000000000..a82eccacb --- /dev/null +++ b/lib/agent/propertiesCreateToAuthenticate.ts @@ -0,0 +1,23 @@ +import { FallbackableOverrides } from '../common/utils/execute' +import type { ContractRunner } from 'ethers' +import type { TransactionResponse } from 'ethers' +import { UndefinedOr } from '@devprotocol/util-ts' + +type PropertiesCreateToAuthenticate = (options: { + readonly provider: ContractRunner + readonly name: string + readonly symbol: string + readonly author: string + readonly authentication: { + readonly market: string + readonly options: readonly string[] + readonly overrides?: FallbackableOverrides + } + readonly overrides?: FallbackableOverrides +}) => Promise< + UndefinedOr< + TransactionResponse & { + readonly wait: () => Promise + } + > +> diff --git a/lib/agent/propertiesDeauthenticate.ts b/lib/agent/propertiesDeauthenticate.ts new file mode 100644 index 000000000..6fa0a4f9c --- /dev/null +++ b/lib/agent/propertiesDeauthenticate.ts @@ -0,0 +1,14 @@ +import { FallbackableOverrides } from '../common/utils/execute' +import type { ContractRunner } from 'ethers' +import type { TransactionResponse } from 'ethers' +import { UndefinedOr } from '@devprotocol/util-ts' + +type PropertiesDeauthenticate = (options: { + readonly provider: ContractRunner + readonly destination: string + readonly authentication: { + readonly market: string + readonly id: string + } + readonly overrides?: FallbackableOverrides +}) => Promise> diff --git a/lib/agent/propertiesList.ts b/lib/agent/propertiesList.ts new file mode 100644 index 000000000..bb80648f8 --- /dev/null +++ b/lib/agent/propertiesList.ts @@ -0,0 +1,7 @@ +import type { ContractRunner } from 'ethers' +import { UndefinedOr } from '@devprotocol/util-ts' + +type PropertiesList = (options: { + readonly provider: ContractRunner + readonly user: string +}) => Promise> diff --git a/lib/common/erc20/allowance.spec.ts b/lib/common/erc20/allowance.spec.ts index 69b35dac3..41bbf5fe3 100644 --- a/lib/common/erc20/allowance.spec.ts +++ b/lib/common/erc20/allowance.spec.ts @@ -12,7 +12,7 @@ describe('allowance.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (from: string, to: string) => - Promise.resolve(value) + Promise.resolve(value), ), } @@ -36,7 +36,7 @@ describe('allowance.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (from: string, to: string) => - Promise.reject(error) + Promise.reject(error), ), } diff --git a/lib/common/erc20/allowance.ts b/lib/common/erc20/allowance.ts index 144b0664c..c2bb4da5f 100644 --- a/lib/common/erc20/allowance.ts +++ b/lib/common/erc20/allowance.ts @@ -2,7 +2,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../utils/execute' export type CreateAllowanceCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (from: string, to: string) => Promise export const createAllowanceCaller: CreateAllowanceCaller = diff --git a/lib/common/erc20/approve.spec.ts b/lib/common/erc20/approve.spec.ts index 8587e16f0..50c151bb2 100644 --- a/lib/common/erc20/approve.spec.ts +++ b/lib/common/erc20/approve.spec.ts @@ -35,7 +35,7 @@ describe('approve.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (to: string, value: number) => - Promise.reject(error) + Promise.reject(error), ), } diff --git a/lib/common/erc20/approve.ts b/lib/common/erc20/approve.ts index 3d716168c..e62a47d0e 100644 --- a/lib/common/erc20/approve.ts +++ b/lib/common/erc20/approve.ts @@ -4,14 +4,14 @@ import { FallbackableOverrides, MutationOption, } from '../utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type CreateApproveCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => ( to: string, value: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise export const createApproveCaller: CreateApproveCaller = diff --git a/lib/common/erc20/balanceOf.spec.ts b/lib/common/erc20/balanceOf.spec.ts index c610eab73..be4384b62 100644 --- a/lib/common/erc20/balanceOf.spec.ts +++ b/lib/common/erc20/balanceOf.spec.ts @@ -11,7 +11,7 @@ describe('balanceOf.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (address: string) => - Promise.resolve(value) + Promise.resolve(value), ), } diff --git a/lib/common/erc20/balanceOf.ts b/lib/common/erc20/balanceOf.ts index 657da8233..a3b481f4f 100644 --- a/lib/common/erc20/balanceOf.ts +++ b/lib/common/erc20/balanceOf.ts @@ -2,7 +2,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../utils/execute' export type CreateBalanceOfCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (address: string) => Promise export const createBalanceOfCaller: CreateBalanceOfCaller = diff --git a/lib/common/erc20/decimals.ts b/lib/common/erc20/decimals.ts index 48b7383cb..b6387aa4a 100644 --- a/lib/common/erc20/decimals.ts +++ b/lib/common/erc20/decimals.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../utils/execute' import { always } from 'ramda' export type CreateDecimalsCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createDecimalsCaller: CreateDecimalsCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'decimals', mutation: false, - }) + }), ) diff --git a/lib/common/erc20/index.spec.ts b/lib/common/erc20/index.spec.ts index c0f12c331..7aaa34080 100644 --- a/lib/common/erc20/index.spec.ts +++ b/lib/common/erc20/index.spec.ts @@ -19,34 +19,26 @@ jest.mock('./name') jest.mock('./symbol') jest.mock('./decimals') jest.mock('./allowance') +jest.mock('ethers') describe('erc20/index.ts', () => { - ;(createBalanceOfCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createTotalSupplyCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createApproveCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createTransferFromCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createNameCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createSymbolCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createDecimalsCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createAllowanceCaller as jest.Mock).mockImplementation( - (contract) => contract - ) + ;(createBalanceOfCaller as jest.Mock).mockImplementation(() => 123) + ;(createTotalSupplyCaller as jest.Mock).mockImplementation(() => 123) + ;(createApproveCaller as jest.Mock).mockImplementation(() => 123) + ;(createTransferFromCaller as jest.Mock).mockImplementation(() => 123) + ;(createNameCaller as jest.Mock).mockImplementation(() => 123) + ;(createSymbolCaller as jest.Mock).mockImplementation(() => 123) + ;(createDecimalsCaller as jest.Mock).mockImplementation(() => 123) + ;(createAllowanceCaller as jest.Mock).mockImplementation(() => 123) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) describe('createErc20Contract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => Erc20Contract = ( - address: string + address: string, ) => { const contract = new ethers.Contract(address, [...erc20Abi], provider) return { @@ -66,7 +58,7 @@ describe('erc20/index.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/common/erc20/index.ts b/lib/common/erc20/index.ts index b1391ab11..a179dd2b0 100644 --- a/lib/common/erc20/index.ts +++ b/lib/common/erc20/index.ts @@ -1,6 +1,4 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' import { erc20Abi } from './abi' import { createTransferCaller } from './transfer' import { createBalanceOfCaller } from './balanceOf' @@ -12,7 +10,7 @@ import { createSymbolCaller } from './symbol' import { createDecimalsCaller } from './decimals' import { createAllowanceCaller } from './allowance' import { FallbackableOverrides } from '../utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type Erc20Contract = { readonly totalSupply: () => Promise @@ -20,19 +18,19 @@ export type Erc20Contract = { readonly transfer: ( to: string, value: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly allowance: (from: string, to: string) => Promise readonly approve: ( to: string, value: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly transferFrom: ( from: string, to: string, value: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly name: () => Promise readonly symbol: () => Promise @@ -40,7 +38,7 @@ export type Erc20Contract = { } export const createErc20Contract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): Erc20Contract => { const contract = new ethers.Contract(address, [...erc20Abi], provider) diff --git a/lib/common/erc20/name.ts b/lib/common/erc20/name.ts index 290c7f50d..779a0540f 100644 --- a/lib/common/erc20/name.ts +++ b/lib/common/erc20/name.ts @@ -3,7 +3,7 @@ import { execute, QueryOption } from '../utils/execute' import { always } from 'ramda' export type CreateNameCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createNameCaller: CreateNameCaller = (contract: ethers.Contract) => @@ -12,5 +12,5 @@ export const createNameCaller: CreateNameCaller = (contract: ethers.Contract) => contract, method: 'name', mutation: false, - }) + }), ) diff --git a/lib/common/erc20/symbol.ts b/lib/common/erc20/symbol.ts index 1960a5b99..1cd4f9a01 100644 --- a/lib/common/erc20/symbol.ts +++ b/lib/common/erc20/symbol.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../utils/execute' import { always } from 'ramda' export type CreateSymbolCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createSymbolCaller: CreateSymbolCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'symbol', mutation: false, - }) + }), ) diff --git a/lib/common/erc20/totalSupply.ts b/lib/common/erc20/totalSupply.ts index 1d8844bd4..eefe99de8 100644 --- a/lib/common/erc20/totalSupply.ts +++ b/lib/common/erc20/totalSupply.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../utils/execute' import { always } from 'ramda' export type CreateTotalSupplyCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createTotalSupplyCaller: CreateTotalSupplyCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'totalSupply', mutation: false, - }) + }), ) diff --git a/lib/common/erc20/transfer.spec.ts b/lib/common/erc20/transfer.spec.ts index 649fd33f1..cd3f99597 100644 --- a/lib/common/erc20/transfer.spec.ts +++ b/lib/common/erc20/transfer.spec.ts @@ -35,7 +35,7 @@ describe('transfer.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (to: string, value: number) => - Promise.reject(error) + Promise.reject(error), ), } diff --git a/lib/common/erc20/transfer.ts b/lib/common/erc20/transfer.ts index cec3e01dd..dd8cbbd29 100644 --- a/lib/common/erc20/transfer.ts +++ b/lib/common/erc20/transfer.ts @@ -4,14 +4,14 @@ import { FallbackableOverrides, MutationOption, } from '../utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type CreateTransferCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => ( to: string, value: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise export const createTransferCaller: CreateTransferCaller = diff --git a/lib/common/erc20/transferFrom.spec.ts b/lib/common/erc20/transferFrom.spec.ts index d5c45210a..849886ee9 100644 --- a/lib/common/erc20/transferFrom.spec.ts +++ b/lib/common/erc20/transferFrom.spec.ts @@ -14,7 +14,7 @@ describe('transferFrom.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation( - async (from: string, to: string, value: number) => success + async (from: string, to: string, value: number) => success, ), } @@ -39,7 +39,7 @@ describe('transferFrom.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (from: string, to: string, value: number) => - Promise.reject(error) + Promise.reject(error), ), } diff --git a/lib/common/erc20/transferFrom.ts b/lib/common/erc20/transferFrom.ts index ddb1bf269..df9b5d9ed 100644 --- a/lib/common/erc20/transferFrom.ts +++ b/lib/common/erc20/transferFrom.ts @@ -4,15 +4,15 @@ import { FallbackableOverrides, MutationOption, } from '../utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type CreateTransferFromCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => ( from: string, to: string, value: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise export const createTransferFromCaller: CreateTransferFromCaller = @@ -21,7 +21,7 @@ export const createTransferFromCaller: CreateTransferFromCaller = from: string, to: string, value: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => execute({ contract, diff --git a/lib/common/option.ts b/lib/common/option.ts index 88aead1d3..340f8a7f1 100644 --- a/lib/common/option.ts +++ b/lib/common/option.ts @@ -1,6 +1,10 @@ +import type { ContractRunner } from 'ethers' + export type CustomOptions = { readonly from?: string readonly gasPrice?: string readonly gas: number readonly data: string } + +export type ValidProvider = ContractRunner diff --git a/lib/common/utils/execute.spec.ts b/lib/common/utils/execute.spec.ts index 372fea64a..63975492b 100644 --- a/lib/common/utils/execute.spec.ts +++ b/lib/common/utils/execute.spec.ts @@ -1,12 +1,798 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ -import { BigNumber, ethers } from 'ethers' +import { + Contract, + HDNodeWallet, + JsonRpcProvider, + ZeroHash, + ethers, + getAddress, + keccak256, + toUtf8Bytes, +} from 'ethers' import { execute } from './execute' +const abi = [ + { + inputs: [], + name: '_a', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: '_b', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: '_c', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: '_d', + outputs: [ + { + internalType: 'bytes32', + name: 'a', + type: 'bytes32', + }, + { + internalType: 'uint256', + name: 'b', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256[]', + name: 'c', + type: 'uint256[]', + }, + { + internalType: 'uint256[]', + name: 'e', + type: 'uint256[]', + }, + ], + name: 'fn_array', + outputs: [ + { + internalType: 'uint256[]', + name: '', + type: 'uint256[]', + }, + { + internalType: 'uint256[]', + name: '', + type: 'uint256[]', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256[]', + name: 'c', + type: 'uint256[]', + }, + ], + name: 'fn_array', + outputs: [ + { + internalType: 'uint256[]', + name: '', + type: 'uint256[]', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'a', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'b', + type: 'uint256', + }, + ], + name: 'fn_mutable', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'a', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'b', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'e', + type: 'uint256', + }, + ], + name: 'fn_mutable', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + components: [ + { + internalType: 'bytes32', + name: 'a', + type: 'bytes32', + }, + { + internalType: 'uint256', + name: 'b', + type: 'uint256', + }, + ], + internalType: 'struct Debug.Data', + name: 'd', + type: 'tuple', + }, + { + components: [ + { + internalType: 'bytes32', + name: 'a', + type: 'bytes32', + }, + { + internalType: 'uint256', + name: 'b', + type: 'uint256', + }, + ], + internalType: 'struct Debug.Data', + name: 'e', + type: 'tuple', + }, + ], + name: 'fn_struct', + outputs: [ + { + components: [ + { + internalType: 'bytes32', + name: 'a', + type: 'bytes32', + }, + { + internalType: 'uint256', + name: 'b', + type: 'uint256', + }, + ], + internalType: 'struct Debug.Data', + name: '', + type: 'tuple', + }, + { + components: [ + { + internalType: 'bytes32', + name: 'a', + type: 'bytes32', + }, + { + internalType: 'uint256', + name: 'b', + type: 'uint256', + }, + ], + internalType: 'struct Debug.Data', + name: '', + type: 'tuple', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + components: [ + { + internalType: 'bytes32', + name: 'a', + type: 'bytes32', + }, + { + internalType: 'uint256', + name: 'b', + type: 'uint256', + }, + ], + internalType: 'struct Debug.Data', + name: 'd', + type: 'tuple', + }, + ], + name: 'fn_struct', + outputs: [ + { + components: [ + { + internalType: 'bytes32', + name: 'a', + type: 'bytes32', + }, + { + internalType: 'uint256', + name: 'b', + type: 'uint256', + }, + ], + internalType: 'struct Debug.Data', + name: '', + type: 'tuple', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'a', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'b', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'e', + type: 'uint256', + }, + ], + name: 'fn_view', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'a', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'b', + type: 'uint256', + }, + ], + name: 'fn_view', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, +] +/** + * The ABI is generated by... +// SPDX-License-Identifier: MIT +pragma solidity =0.8.9; + +contract Debug { + struct Data { + bytes32 a; + uint256 b; + } + uint256 public _a; + uint256 public _b; + uint256[] public _c; + Data public _d; + + function fn_mutable(uint256 a, uint256 b) + public + returns (uint256, uint256) + { + _a = a; + _b = b; + return (_a, _b); + } + + function fn_mutable( + uint256 a, + uint256 b, + uint256 e + ) + public + returns ( + uint256, + uint256, + uint256 + ) + { + _a = a; + _b = b; + return (_a, _b, e); + } + + function fn_view(uint256 a, uint256 b) + public + view + returns (uint256, uint256) + { + return (a + _a, b + _b); + } + + function fn_view( + uint256 a, + uint256 b, + uint256 e + ) + public + view + returns ( + uint256, + uint256, + uint256 + ) + { + return (a + _a, b + _b, e); + } + + function fn_array(uint256[] memory c) public returns (uint256[] memory) { + _c = c; + return _c; + } + + function fn_array(uint256[] memory c, uint256[] memory e) + public + returns (uint256[] memory, uint256[] memory) + { + _c = c; + return (_c, e); + } + + function fn_struct(Data memory d) public returns (Data memory) { + _d = d; + return _d; + } + + function fn_struct(Data memory d, Data memory e) + public + returns (Data memory, Data memory) + { + _d = d; + return (_d, e); + } +} + + */ + describe('execute.ts', () => { describe('execute', () => { + describe('contract method detection', () => { + const wallet = HDNodeWallet.createRandom().connect( + new JsonRpcProvider('https://polygon-rpc.com'), + ) + const genContract = () => + new Contract( + '0x10ce91CDC6dbE80BA4c6CbF6F287c7B957FC07a0', // <== Deployed on Polygon + abi, + wallet, + ) + describe('calling mutable function', () => { + it('calling mutable function', async () => { + const contract = genContract() + const spy = jest + .spyOn(contract, 'fn_mutable') + .mockImplementation(() => Promise.resolve('value')) + const result = await execute({ + contract, + method: 'fn_mutable', + args: ['0', '0'], + mutation: true, + }) + expect(result).toEqual('value') + expect(spy).toHaveBeenCalledWith('0', '0') + }) + it('calling mutable function, with static=true', async () => { + const contract = genContract() + /** + * This case will be calling `Method.staticCall`, + * but `staticCall` cannot spy with jest, so calling it in real. + */ + const result = await execute({ + contract, + method: 'fn_mutable', + args: ['1', '1'], + mutation: true, + static: true, + }) + expect(result).toEqual([1n, 1n]) + }) + it('calling mutable function, with static=true & interface option', async () => { + const contract = genContract() + /** + * This case will be calling `Method.staticCall`, + * but `staticCall` cannot spy with jest, so calling it in real. + */ + const result = await execute({ + contract, + method: 'fn_mutable', + args: ['1', '2'], + mutation: true, + static: true, + interface: 'uint256,uint256', + }) + expect(result).toEqual([1n, 2n]) + }) + it('calling mutable function, with static=true & interface option for overloaded method', async () => { + const contract = genContract() + /** + * This case will be calling `Method.staticCall`, + * but `staticCall` cannot spy with jest, so calling it in real. + */ + const result = await execute({ + contract, + method: 'fn_mutable', + args: ['1', '2', '3'], + mutation: true, + static: true, + interface: 'uint256,uint256,uint256', + }) + expect(result).toEqual([1n, 2n, 3n]) + }) + }) + describe('calling view function', () => { + it('calling view function', async () => { + const contract = genContract() + const spy = jest + .spyOn(contract, 'fn_view') + .mockImplementation(() => Promise.resolve('value')) + const result = await execute({ + contract, + method: 'fn_view', + args: ['0', '0'], + mutation: false, + }) + expect(result).toEqual('value') + expect(spy).toHaveBeenCalledWith('0', '0') + }) + it('calling view function, with static=true', async () => { + const contract = genContract() + const _a = await execute({ + contract, + method: '_a', + mutation: false, + }) + const _b = await execute({ + contract, + method: '_b', + mutation: false, + }) + const random = BigInt(~~(Math.random() * 10000)) + /** + * This case will be calling `Method.staticCall`, + * but `staticCall` cannot spy with jest, so calling it in real. + */ + const result = await execute({ + contract, + method: 'fn_view', + args: [random.toString(), random.toString()], + mutation: false, + static: true, + }) + expect(result).toEqual([ + (BigInt(_a) + random).toString(), + (BigInt(_b) + random).toString(), + ]) + }) + it('calling view function, with static=true & interface option', async () => { + const contract = genContract() + const _a = await execute({ + contract, + method: '_a', + mutation: false, + }) + const _b = await execute({ + contract, + method: '_b', + mutation: false, + }) + const random = BigInt(~~(Math.random() * 10000)) + /** + * This case will be calling `Method.staticCall`, + * but `staticCall` cannot spy with jest, so calling it in real. + */ + const result = await execute({ + contract, + method: 'fn_view', + args: [random.toString(), random.toString()], + mutation: false, + static: true, + interface: 'uint256,uint256', + }) + expect(result).toEqual([ + (BigInt(_a) + random).toString(), + (BigInt(_b) + random).toString(), + ]) + }) + it('calling view function, with static=true & interface option for overloaded method', async () => { + const contract = genContract() + const _a = await execute({ + contract, + method: '_a', + mutation: false, + }) + const _b = await execute({ + contract, + method: '_b', + mutation: false, + }) + const random = BigInt(~~(Math.random() * 10000)) + /** + * This case will be calling `Method.staticCall`, + * but `staticCall` cannot spy with jest, so calling it in real. + */ + const result = await execute({ + contract, + method: 'fn_view', + args: [random.toString(), random.toString(), random.toString()], + mutation: false, + static: true, + interface: 'uint256,uint256,uint256', + }) + expect(result).toEqual([ + (BigInt(_a) + random).toString(), + (BigInt(_b) + random).toString(), + random.toString(), + ]) + }) + }) + describe('calling function that has array args', () => { + it('calling function that has array args', async () => { + const contract = genContract() + const spy = jest + .spyOn(contract, 'fn_array') + .mockImplementation(() => Promise.resolve('value')) + const result = await execute({ + contract, + method: 'fn_array', + args: [['1', '2', '3']], + mutation: true, + }) + expect(result).toEqual('value') + expect(spy).toHaveBeenCalledWith(['1', '2', '3']) + }) + it('calling function that has array args, with static=true', async () => { + const contract = genContract() + const result = await execute({ + contract, + method: 'fn_array', + args: [['1', '2', '3']], + mutation: true, + static: true, + }) + expect(result).toEqual([1n, 2n, 3n]) + }) + it('calling function that has array args, with static=true & interface option', async () => { + const contract = genContract() + /** + * This case will be calling `Method.staticCall`, + * but `staticCall` cannot spy with jest, so calling it in real. + */ + const result = await execute({ + contract, + method: 'fn_array', + args: [['1', '2', '3']], + mutation: true, + static: true, + interface: 'uint256[]', + }) + expect(result).toEqual([1n, 2n, 3n]) + }) + it('calling function that has array args, with static=true & interface option for overloaded method', async () => { + const contract = genContract() + /** + * This case will be calling `Method.staticCall`, + * but `staticCall` cannot spy with jest, so calling it in real. + */ + const result = await execute({ + contract, + method: 'fn_array', + args: [ + ['1', '2', '3'], + ['4', '5', '6'], + ], + mutation: true, + static: true, + interface: 'uint256[],uint256[]', + }) + expect(result).toEqual([ + [1n, 2n, 3n], + [4n, 5n, 6n], + ]) + }) + }) + describe('calling function that has struct args', () => { + it('calling function that has struct args', async () => { + const contract = genContract() + const spy = jest + .spyOn(contract, 'fn_struct') + .mockImplementation(() => Promise.resolve('value')) + const result = await execute({ + contract, + method: 'fn_struct', + args: [[ZeroHash, '2']], + mutation: true, + }) + expect(result).toEqual('value') + expect(spy).toHaveBeenCalledWith([ZeroHash, '2']) + }) + it('calling function that has struct args, with static=true', async () => { + const contract = genContract() + /** + * This case will be calling `Method.staticCall`, + * but `staticCall` cannot spy with jest, so calling it in real. + */ + const result = await execute({ + contract, + method: 'fn_struct', + args: [[ZeroHash, '2']], + mutation: true, + static: true, + }) + expect(result).toEqual([ZeroHash, 2n]) + }) + it('calling function that has struct args, with static=true & interface option', async () => { + const contract = genContract() + /** + * This case will be calling `Method.staticCall`, + * but `staticCall` cannot spy with jest, so calling it in real. + */ + const result = await execute({ + contract, + method: 'fn_struct', + args: [[ZeroHash, '2']], + mutation: true, + static: true, + interface: '(bytes32,uint256)', + }) + expect(result).toEqual([ZeroHash, 2n]) + }) + it('calling function that has struct args, with static=true & interface option for overloaded method', async () => { + const contract = genContract() + /** + * This case will be calling `Method.staticCall`, + * but `staticCall` cannot spy with jest, so calling it in real. + */ + const result = await execute({ + contract, + method: 'fn_struct', + args: [ + [ZeroHash, '2'], + [ZeroHash, '3'], + ], + mutation: true, + static: true, + interface: '(bytes32,uint256),(bytes32,uint256)', + }) + expect(result).toEqual([ + [ZeroHash, 2n], + [ZeroHash, 3n], + ]) + }) + }) + }) it("Execute the contract instance's `[passed method]([...passed args])` when the mutation is false.", async () => { const fooStub = jest.fn(async (arg1: string, arg2: string) => - Promise.resolve('value') + Promise.resolve('value'), ) const contract = { foo: fooStub, @@ -38,7 +824,7 @@ describe('execute.ts', () => { }) it("Execute the contract instance's `[passed method]([...passed args])` when the mutation is true.", async () => { const fooStub = jest.fn(async (arg1: string, arg2: string) => - Promise.resolve(true) + Promise.resolve(true), ) const contract = { foo: fooStub, @@ -78,9 +864,9 @@ describe('execute.ts', () => { arg5: boolean, arg6: string, arg7: string, - arg8: string + arg8: string, // eslint-disable-next-line max-params - ) => Promise.resolve(true) + ) => Promise.resolve(true), ) const contract = { foo: fooStub, @@ -105,6 +891,43 @@ describe('execute.ts', () => { // @ts-expect-error expect(fooStub.mock.calls[0][8]).toEqual(undefined) }) + it('Uint8Array in the passed args will be conveted to string', async () => { + const fooStub = jest.fn(async (arg1: string, arg2: string) => + Promise.resolve('value'), + ) + const contract = { + foo: fooStub, + } as unknown as ethers.Contract + const result = await execute({ + contract, + method: 'foo', + args: ['abc', toUtf8Bytes('TEST')], + mutation: false, + }) + expect(result).toEqual('value') + expect(fooStub.mock.calls.length).toEqual(1) + expect(fooStub.mock.calls[0][0]).toEqual('abc') + expect(fooStub.mock.calls[0][1]).toEqual(keccak256(toUtf8Bytes('TEST'))) + }) + it("Execute the contract instance's `[passed overloaded method]()`.", async () => { + const fooStub = jest.fn(async () => Promise.resolve(true)) + const contract = { + 'foo(uint256)': () => {}, + 'foo(uint256,address)': fooStub, + functions: { + 'foo(uint256)': () => {}, + 'foo(uint256,address)': () => {}, + }, + } as unknown as ethers.Contract + const result = await execute({ + contract, + method: 'foo', + args: ['1', '0x'], + mutation: false, + interface: 'uint256,address', + }) + expect(result).toEqual(true) + }) }) describe.skip('execute: overrides and fallbackOverrider', () => { // TODO: Write tests @@ -156,7 +979,7 @@ describe('execute.ts', () => { }) it('Returns string when the response is BigNumber', async () => { const contract = { - foo: jest.fn(async () => Promise.resolve(BigNumber.from(123456789))), + foo: jest.fn(async () => Promise.resolve(123456789n)), } as unknown as ethers.Contract const result = await execute({ contract, @@ -168,12 +991,7 @@ describe('execute.ts', () => { it('Returns array of string, number, boolean when the response included BigNumber', async () => { const contract = { foo: jest.fn(async () => - Promise.resolve([ - 'value', - 123456789, - false, - BigNumber.from(123456789), - ]) + Promise.resolve(['value', 123456789, false, 123456789n]), ), } as unknown as ethers.Contract const result = await execute({ @@ -191,23 +1009,23 @@ describe('execute.ts', () => { 0: 'value1', 1: 123456789, 2: false, - 3: BigNumber.from(123456789), + 3: 123456789n, a: 'value', b: 123456789, c: false, - d: BigNumber.from(123456789), + d: 123456789n, }, { 0: 'value2', 1: 1234567891, 2: true, - 3: BigNumber.from(1234567891), + 3: 1234567891n, a: 'value2', b: 1234567891, c: true, - d: BigNumber.from(1234567891), + d: 1234567891n, }, - ]) + ]), ), } as unknown as ethers.Contract const result = await execute({ @@ -245,12 +1063,12 @@ describe('execute.ts', () => { 0: 'value', 1: 123456789, 2: false, - 3: BigNumber.from(123456789), + 3: 123456789n, a: 'value', b: 123456789, c: false, - d: BigNumber.from(123456789), - }) + d: 123456789n, + }), ), } as unknown as ethers.Contract const result = await execute({ @@ -273,8 +1091,8 @@ describe('execute.ts', () => { const contract = { foo: jest.fn(async () => Promise.resolve({ - data: BigNumber.from(123456789), - }) + data: 123456789n, + }), ), } as unknown as ethers.Contract const result = await execute({ @@ -283,7 +1101,7 @@ describe('execute.ts', () => { mutation: true, }) expect(result).toEqual({ - data: BigNumber.from(123456789), + data: 123456789n, }) }) }) diff --git a/lib/common/utils/execute.ts b/lib/common/utils/execute.ts index 08e365362..9b4a18a6e 100644 --- a/lib/common/utils/execute.ts +++ b/lib/common/utils/execute.ts @@ -1,11 +1,27 @@ -import { ethers, BigNumber, providers } from 'ethers' -import { TransactionResponse } from '@ethersproject/abstract-provider' -import { mergeAll } from 'ramda' +import { ethers, type BrowserProvider, keccak256 } from 'ethers' +import type { TransactionResponse } from 'ethers' +import { always, mergeAll } from 'ramda' -type Args = ReadonlyArray +import { Positions } from '../../ethereum/s-tokens' +import { Rewards } from '../../ethereum/s-tokens/rewards' +import { Image } from '../../ethereum/simpleCollection/types' + +type Args = ReadonlyArray< + | string + | boolean + | readonly string[] + | Uint8Array + | readonly Image[] + | Positions + | Rewards +> +type ArgsWithoutUint8Array = ReadonlyArray< + string | boolean | readonly string[] | readonly Image[] | Positions | Rewards +> type Overrides = { readonly gasLimit?: number readonly from?: string + readonly value?: string } export type FallbackableOverrides = { readonly overrides?: Overrides @@ -17,6 +33,8 @@ type Option = { readonly args?: Args readonly mutation?: boolean readonly padEnd?: number + readonly static?: boolean + readonly interface?: string } export type QueryOption = Option & { @@ -32,9 +50,9 @@ export type ExecuteOption = QueryOption | MutationOption export type ExecuteFunction = < O extends ExecuteOption = QueryOption, - R = string + R = string, >( - opts: O + opts: O, ) => Promise< O extends QueryOption ? R @@ -43,40 +61,56 @@ export type ExecuteFunction = < : never > type PadCaller = ( - arr: Args, - v: string | boolean | undefined | readonly string[], + arr: ArgsWithoutUint8Array, + v: + | string + | boolean + | undefined + | readonly string[] + | readonly Image[] + | Positions + | Rewards, i: number, - fn: PadCaller -) => Args -const pad = (args: Args, index: number): Args => - ((fn: PadCaller): Args => fn([], args[0], 0, fn))( + fn: PadCaller, +) => ArgsWithoutUint8Array +const pad = ( + args: ArgsWithoutUint8Array, + index: number, +): ArgsWithoutUint8Array => + ((fn: PadCaller): ArgsWithoutUint8Array => fn([], args[0], 0, fn))( ( - arr: Args, - v: string | boolean | undefined | readonly string[], + arr: ArgsWithoutUint8Array, + v: + | string + | boolean + | undefined + | readonly string[] + | readonly Image[] + | Positions + | Rewards, i: number, - fn: PadCaller - ): Args => - i < index ? fn(arr.concat(v ?? ''), args[i + 1], i + 1, fn) : arr + fn: PadCaller, + ): ArgsWithoutUint8Array => + i < index ? fn(arr.concat(v ?? ''), args[i + 1], i + 1, fn) : arr, ) type Value = boolean | string | number -type ValueWithBigNumber = Value | BigNumber -const isBigNumber = (data: unknown): data is BigNumber => - BigNumber.isBigNumber(data) -const toString = (data: Readonly): string => data.toString() +type ValueWithBigNumber = Value | bigint +const isBigNumber = (data: unknown): data is bigint => typeof data === 'bigint' +const toString = (data: Readonly): string => data.toString() const toStringObj = ( - data: Readonly> + data: Readonly>, ): Record => { const keys = Object.keys(data) const valueSet = keys.map((key) => ({ [key]: ((value) => (isBigNumber(value) ? toString(value) : value))( - data[key] + data[key], ), })) return mergeAll(valueSet) } const stringifyItem = ( - data: ValueWithBigNumber | Record + data: ValueWithBigNumber | Record, ): Value | Readonly> => { return isBigNumber(data) ? toString(data) @@ -90,7 +124,7 @@ const stringify = ( data: | ValueWithBigNumber | Record - | readonly (ValueWithBigNumber | Record)[] + | readonly (ValueWithBigNumber | Record)[], ): | Value | Readonly> @@ -100,32 +134,44 @@ const stringify = ( const N = null -type SignableProvider = providers.JsonRpcProvider | providers.Web3Provider - export const execute: ExecuteFunction = async < T = string, - O extends ExecuteOption = QueryOption + O extends ExecuteOption = QueryOption, >( - opts: O + opts: O, ) => { const signer = - typeof (opts.contract?.provider as SignableProvider)?.getSigner === - 'function' - ? (opts.contract.provider as SignableProvider).getSigner() + typeof (opts.contract?.runner as BrowserProvider)?.getSigner === 'function' + ? await (opts.contract.runner as BrowserProvider) + .getSigner() + .catch(always(undefined)) : undefined const contract = - opts.mutation && signer ? opts.contract.connect(signer) : opts.contract - const args = + opts.mutation && signer + ? (opts.contract.connect(signer) as ethers.Contract) + : opts.contract + const convertedArgs: ArgsWithoutUint8Array | undefined = opts.args === undefined + ? undefined + : opts.args.map((v) => (v instanceof Uint8Array ? keccak256(v) : v)) + const args = + convertedArgs === undefined ? undefined : opts.padEnd - ? [...pad(opts.args, opts.padEnd)] - : [...opts.args] + ? [...pad(convertedArgs, opts.padEnd)] + : [...convertedArgs] const argsOverrided = opts.mutation && opts.overrides?.overrides ? [...(args || []), opts.overrides.overrides] : args - const method = contract[opts.method] + const typedMethod = `${opts.method}(${opts.interface})` + const method = opts.static + ? opts.interface + ? contract[typedMethod].staticCall + : contract[opts.method].staticCall + : opts.interface + ? contract[typedMethod] + : contract[opts.method] const res = await (argsOverrided === undefined ? method() : method.apply(N, argsOverrided) diff --git a/lib/common/utils/for-test.ts b/lib/common/utils/for-test.ts index 179a217b2..ee4b27db2 100644 --- a/lib/common/utils/for-test.ts +++ b/lib/common/utils/for-test.ts @@ -9,11 +9,7 @@ /* eslint-disable @typescript-eslint/promise-function-async */ /* eslint-disable @typescript-eslint/explicit-function-return-type */ /* eslint-disable no-extend-native */ -import { - TransactionResponse, - TransactionReceipt, -} from '@ethersproject/abstract-provider' -import { BigNumber } from 'ethers' +import type { TransactionResponse, TransactionReceipt } from 'ethers' export type StubTransactionResposeFactory = (p: { readonly hash?: string @@ -22,9 +18,9 @@ export type StubTransactionResposeFactory = (p: { readonly wait?: () => Promise readonly from?: string readonly nonce?: number - readonly gasLimit?: BigNumber + readonly gasLimit?: bigint readonly data?: string - readonly value?: BigNumber + readonly value?: bigint readonly chainId?: number }) => TransactionResponse @@ -37,37 +33,38 @@ export const stubTransactionResposeFactory: StubTransactionResposeFactory = ({ from: 'from', contractAddress: 'contractAddress', transactionIndex: 10, - gasUsed: BigNumber.from(10), + gasUsed: 10n, logsBloom: 'logsBloom', blockHash: 'blockHash', transactionHash: 'transactionHash', logs: [], blockNumber: 100, confirmations: 102, - cumulativeGasUsed: BigNumber.from(10), - effectiveGasPrice: BigNumber.from(10), + cumulativeGasUsed: 10n, + effectiveGasPrice: 10n, byzantium: true, type: 10, - }), + } as unknown as TransactionReceipt), confirmations = 102, from = 'from', nonce = 10, - gasLimit = BigNumber.from(10), + gasLimit = 10n, data = 'data', - value = BigNumber.from(10), + value = 10n, chainId = 10, -}) => ({ - hash, - confirm, - confirmations, - wait, - from, - nonce, - gasLimit, - data, - value, - chainId, -}) +}) => + ({ + hash, + confirm, + confirmations, + wait, + from, + nonce, + gasLimit: gasLimit, + data, + value: value, + chainId, + }) as unknown as TransactionResponse export const stubbedSendTx = ( confirmationEvent: { @@ -80,7 +77,7 @@ export const stubbedSendTx = ( value: 'test', }, reject = false, - rejectOnConfirmation = false + rejectOnConfirmation = false, ) => { const result = { status: true, @@ -95,7 +92,7 @@ export const stubbedSendTx = ( } ;(Promise.prototype as any).on = function ( event: string, - cb: (...args: readonly any[]) => void + cb: (...args: readonly any[]) => void, ) { if (event === 'confirmation') { setTimeout(() => { diff --git a/lib/common/utils/index.spec.ts b/lib/common/utils/index.spec.ts index 22845578d..c32d8feb9 100644 --- a/lib/common/utils/index.spec.ts +++ b/lib/common/utils/index.spec.ts @@ -1,11 +1,13 @@ import { DevkitUtils, utils } from './index' import { execute } from './execute' +import { arrayify } from './arrayify' describe('index.ts', () => { describe('utils', () => { it('check return object', () => { const expected: DevkitUtils = { execute, + arrayify, } const result = utils diff --git a/lib/common/utils/index.ts b/lib/common/utils/index.ts index b645381aa..820cd5846 100644 --- a/lib/common/utils/index.ts +++ b/lib/common/utils/index.ts @@ -1,9 +1,14 @@ import { execute } from './execute' +import { arrayify } from './arrayify' export type DevkitUtils = { readonly execute: typeof execute + readonly arrayify: typeof arrayify } export const utils: DevkitUtils = { execute, + arrayify, } + +export { execute, arrayify } diff --git a/lib/ethereum/allocator/calculateMaxRewardsPerBlock.spec.ts b/lib/ethereum/allocator/calculateMaxRewardsPerBlock.spec.ts index 4dd18cd67..6b435821f 100644 --- a/lib/ethereum/allocator/calculateMaxRewardsPerBlock.spec.ts +++ b/lib/ethereum/allocator/calculateMaxRewardsPerBlock.spec.ts @@ -11,7 +11,7 @@ describe('calculateMaxRewardsPerBlock.spec.ts', () => { } const caller = createCalculateMaxRewardsPerBlockCaller( - allocatorContract as any + allocatorContract as any, ) const result = await caller().catch((err) => err) expect(result).toEqual(error) diff --git a/lib/ethereum/allocator/calculateMaxRewardsPerBlock.ts b/lib/ethereum/allocator/calculateMaxRewardsPerBlock.ts index 85a88b4d2..53b4c6e33 100644 --- a/lib/ethereum/allocator/calculateMaxRewardsPerBlock.ts +++ b/lib/ethereum/allocator/calculateMaxRewardsPerBlock.ts @@ -3,7 +3,7 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateCalculateMaxRewardsPerBlockCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createCalculateMaxRewardsPerBlockCaller: CreateCalculateMaxRewardsPerBlockCaller = @@ -13,5 +13,5 @@ export const createCalculateMaxRewardsPerBlockCaller: CreateCalculateMaxRewardsP contract, method: 'calculateMaxRewardsPerBlock', mutation: false, - }) + }), ) diff --git a/lib/ethereum/allocator/index.spec.ts b/lib/ethereum/allocator/index.spec.ts index d6213664d..3b4402e97 100644 --- a/lib/ethereum/allocator/index.spec.ts +++ b/lib/ethereum/allocator/index.spec.ts @@ -4,34 +4,37 @@ import { createCalculateMaxRewardsPerBlockCaller } from './calculateMaxRewardsPe import { allocatorAbi } from './abi' jest.mock('./calculateMaxRewardsPerBlock') +jest.mock('ethers') describe('allocator/index.ts', () => { describe('createAllocatorContract', () => { ;(createCalculateMaxRewardsPerBlockCaller as jest.Mock).mockImplementation( - (contract) => contract + () => 123, ) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) it('check return object', () => { const host = 'localhost' const address = 'address' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => CreateAllocatorContract = ( - address: string + address: string, ) => { const contract = new ethers.Contract( address, [...allocatorAbi], - provider + provider, ) return { calculateMaxRewardsPerBlock: createCalculateMaxRewardsPerBlockCaller(contract), + contract: () => contract, } } const result = createAllocatorContract(provider) expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/ethereum/allocator/index.ts b/lib/ethereum/allocator/index.ts index 8e2f70146..1365580d4 100644 --- a/lib/ethereum/allocator/index.ts +++ b/lib/ethereum/allocator/index.ts @@ -1,19 +1,19 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' import { allocatorAbi } from './abi' import { createCalculateMaxRewardsPerBlockCaller } from './calculateMaxRewardsPerBlock' export type CreateAllocatorContract = { readonly calculateMaxRewardsPerBlock: () => Promise + readonly contract: () => ethers.Contract } export const createAllocatorContract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): CreateAllocatorContract => { const contract = new ethers.Contract(address, [...allocatorAbi], provider) return { calculateMaxRewardsPerBlock: createCalculateMaxRewardsPerBlockCaller(contract), + contract: () => contract, } } diff --git a/lib/ethereum/client/createDetectSTokens.spec.ts b/lib/ethereum/client/createDetectSTokens.spec.ts index 67557016d..2a303bb46 100644 --- a/lib/ethereum/client/createDetectSTokens.spec.ts +++ b/lib/ethereum/client/createDetectSTokens.spec.ts @@ -9,14 +9,14 @@ describe('detectSTokens.ts', () => { const sTokens = { positionsOfProperty: (a: string) => Promise.resolve( - a === propertyAddress ? [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] : [] + a === propertyAddress ? [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] : [], ), positionsOfOwner: (a: string) => Promise.resolve(a === accountAddress ? [9, 5, 1, 2, 12] : []), } const result = await createDetectSTokens(sTokens as any)( propertyAddress, - accountAddress + accountAddress, ) const expected = [1, 2, 5, 9] diff --git a/lib/ethereum/client/createDetectSTokens.ts b/lib/ethereum/client/createDetectSTokens.ts index 8944f0762..a8d9cff0a 100644 --- a/lib/ethereum/client/createDetectSTokens.ts +++ b/lib/ethereum/client/createDetectSTokens.ts @@ -2,10 +2,10 @@ import { intersection, sort } from 'ramda' import { STokensContract } from '../s-tokens' export type CreateDetectSTokens = ( - sTokens: STokensContract + sTokens: STokensContract, ) => ( propertyAddress: string, - accountAddress: string + accountAddress: string, ) => Promise const diff = function (a: number, b: number): number { @@ -17,7 +17,7 @@ export const createDetectSTokens: CreateDetectSTokens = (sTokens: STokensContract) => async ( propertyAddress: string, - accountAddress: string + accountAddress: string, ): Promise => { const [listForProperty, listForOwner] = await Promise.all([ sTokens.positionsOfProperty(propertyAddress), diff --git a/lib/ethereum/client/getStats.spec.ts b/lib/ethereum/client/getStats.spec.ts deleted file mode 100644 index b74c7f343..000000000 --- a/lib/ethereum/client/getStats.spec.ts +++ /dev/null @@ -1,83 +0,0 @@ -import bent from 'bent' -jest.mock('bent') -;(bent as unknown as jest.Mock).mockImplementation( - () => async (_: any, query: any) => { - return query.query.includes('property_factory_create_aggregate') - ? { - data: { - property_factory_create_aggregate: { - aggregate: { - count: 999, - }, - }, - }, - } - : query.query.includes('bundle') - ? { - data: { - bundle: { - ethPrice: '644.0464312079124850378698962438385', - }, - }, - } - : { - data: { - token: { - derivedETH: '0.01150918413764253552393494096221037', - }, - }, - } - } -) -import { getStats } from './getStats' -import { createDevkitContract } from '../contract' - -jest.mock('ethers') -jest.mock('../contract') - -describe('getStats.ts', () => { - describe('getStats', () => { - it('returns stats', async () => { - ;(createDevkitContract as unknown as jest.Mock).mockImplementation(() => { - return { - allocator: () => ({ - calculateMaxRewardsPerBlock: () => '134196471886248864', - }), - dev: () => ({ - balanceOf: () => '2343987666147792601927123', - totalSupply: () => '12714973254932553412724975', - }), - lockup: () => ({ - getAllValue: () => '561691256328145520467695', - }), - policy: () => ({ - holdersShare: () => '68440200661986920', - }), - registry: () => ({ - allocator: () => '0x112233', - lockup: () => '0x223344', - policy: () => '0x445566', - token: () => '0x998877', - }), - } - }) - - const stats = await getStats('http://localhost') - const expected = { - devPrice: 7.412448969963391, - totalCap: 94249090.40663686, - marketCap: 7375645.59891638003044179337, - stakingRatio: 0.5644940118894408747, - stakingAmount: 561691.256328145520467695, - stakerAPY: 0.24612450890836665613, - creatorAPY: 0.256170407231157127, - annualSupplyGrowthRatio: 0.02218916680648151275, - assetOnboarded: 999, - creatorsRewardsDEV: 143888.67787176130060727095, - creatorsRewardsUSD: 1066567.48207993122416401861838448991779145, - } - - expect(stats).toEqual(expected) - }) - }) -}) diff --git a/lib/ethereum/client/getStats.ts b/lib/ethereum/client/getStats.ts deleted file mode 100644 index 821325405..000000000 --- a/lib/ethereum/client/getStats.ts +++ /dev/null @@ -1,307 +0,0 @@ -/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */ -import bent from 'bent' -import BigNumber from 'bignumber.js' -import { ethers } from 'ethers' -import { always } from 'ramda' -import { addresses } from '../../addresses' -import { createDevkitContract, DevkitContract } from '../contract' -import { DEV_GRAPHQL_ENDPOINT } from '../../common/utils/const' - -const THEGRAPH_UNISWAP_ENDPOINT = - 'https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v2' -const TEAM_WALLET_ADDRESSES = [ - '0x33b5043442979D2226E9a6389F7201932D11e448', - '0xA47c73A77d358A985157034A2338fAB7742B107E', - '0x0dAb082C2f2CD7C6C2a9335b69d0B2aB8121178D', - '0x93d7A66E10b6a8a5a00313bC68F0FB234c8eB06D', - '0x6B18fDa007ec96E187e5CF89D1873B9F75D5293D', -] - -const falsyOrZero = (num?: T): T | 0 => (num ? num : 0) -const toNaturalBasis = new BigNumber(10).pow(18) -export const toNaturalNumber = (num?: number | string | BigNumber): BigNumber => - new BigNumber(falsyOrZero(num)).div(toNaturalBasis) - -export type DevStats = { - readonly devPrice: number - readonly totalCap: number - readonly marketCap: number - readonly stakingRatio: number - readonly stakingAmount: number - readonly stakerAPY: number - readonly creatorAPY: number - readonly annualSupplyGrowthRatio: number - readonly creatorsRewardsDEV: number - readonly creatorsRewardsUSD: number -} - -type graphBundle = { - readonly data: { - readonly bundle: { - readonly ethPrice: string - } - } -} - -type graphToken = { - readonly data: { - readonly token: { - readonly derivedETH: string - } - } -} - -type propertyFactoryCreateAggregate = { - readonly data: { - readonly property_factory_create_aggregate: { - readonly aggregate: { - readonly count: number - } - } - } -} - -export type GetStatsCaller = (httpProviderEndpoint: string) => Promise -type GetEthPriceCaller = () => Promise -type GetDevEthPriceCaller = (devkit: DevkitContract) => Promise - -const getEthPrice: GetEthPriceCaller = always( - bent( - THEGRAPH_UNISWAP_ENDPOINT, - 'POST', - 'json' - )('', { - query: `{ bundle(id: 1) { id ethPrice } }`, - variables: null, - }).then((r) => r as graphBundle) -) - -const getDevEthPrice: GetDevEthPriceCaller = async (devkit: DevkitContract) => { - const devContractAddress = await devkit - .registry(addresses.eth['main']?.registry) - ['token']() - return bent( - THEGRAPH_UNISWAP_ENDPOINT, - 'POST', - 'json' - )('', { - query: `{ token(id: "${devContractAddress.toLowerCase()}") { derivedETH } }`, - variables: null, - }).then((r) => r as graphToken) -} - -const getDevPrice: (devkit: DevkitContract) => Promise = async ( - devkit: DevkitContract -) => { - const [{ data: ethPrice }, { data: devEthPrice }] = await Promise.all([ - getEthPrice(), - getDevEthPrice(devkit), - ]) - const devPrice = - ethPrice && - Number(ethPrice?.bundle.ethPrice) * - Number(devEthPrice?.token?.derivedETH || '0') - return new BigNumber(devPrice || '0') -} - -const getTotalCap: (devkit: DevkitContract) => Promise = async ( - devkit: DevkitContract -) => { - const devContractAddress = await devkit - .registry(addresses.eth['main']?.registry) - ['token']() - const totalSupply = await devkit.dev(devContractAddress).totalSupply() - - const devPrice = await getDevPrice(devkit) - - const devTotalCap = new BigNumber( - devPrice.toNumber() * toNaturalNumber(totalSupply).toNumber() - ) - return devTotalCap -} - -const getCirculatingSupply: ( - devkit: DevkitContract -) => Promise = async (devkit: DevkitContract) => { - const devContractAddress = await devkit - .registry(addresses.eth['main']?.registry) - ['token']() - const totalSupply = new BigNumber(await getTotalSupply(devkit)) - const dev = devkit.dev(devContractAddress) - const teamAmounts = await Promise.all( - TEAM_WALLET_ADDRESSES.map(dev.balanceOf) - ) - const teamAmount = BigNumber.sum(...teamAmounts) - const circulatingSupply = totalSupply.minus(teamAmount) - - return circulatingSupply -} - -const getMarketCap: (devkit: DevkitContract) => Promise = async ( - devkit: DevkitContract -) => { - // use from input parameter - const devPrice = await getDevPrice(devkit) - const circulatingSupply = await getCirculatingSupply(devkit) - const marketCap = devPrice.multipliedBy(circulatingSupply) - - return toNaturalNumber(marketCap) -} - -const getTotalStakingAmount: ( - devkit: DevkitContract -) => Promise = async (devkit: DevkitContract) => { - const devContractAddress = await devkit - .registry(addresses.eth['main']?.registry) - ['lockup']() - const totalStakingAmount = await devkit - .lockup(devContractAddress) - .getAllValue() - - return new BigNumber(totalStakingAmount) -} - -const getStakingRatio: (devkit: DevkitContract) => Promise = async ( - devkit: DevkitContract -) => { - const totalStakingAmount = await getTotalStakingAmount(devkit) - const circulatingSupply = await getCirculatingSupply(devkit) - - return totalStakingAmount.div(circulatingSupply) -} - -const getAPY: (devkit: DevkitContract) => Promise<{ - readonly stakerAPY: BigNumber - readonly creatorAPY: BigNumber -}> = async (devkit: DevkitContract) => { - const allocatorContractAddress = await devkit - .registry(addresses.eth['main']?.registry) - ['allocator']() - const maxRewards = await devkit - .allocator(allocatorContractAddress) - .calculateMaxRewardsPerBlock() - - const totalStakingAmount = await getTotalStakingAmount(devkit) - - const policyContractAddress = await devkit - .registry(addresses.eth['main']?.registry) - ['policy']() - const holdersShare = await devkit - .policy(policyContractAddress) - .holdersShare(maxRewards, totalStakingAmount.toFixed()) - - const stakers = new BigNumber(maxRewards).minus(new BigNumber(holdersShare)) - const year = new BigNumber(2102400) - const stakerAPY = stakers.times(year).div(totalStakingAmount) - const creatorAPY = new BigNumber(holdersShare) - .times(year) - .div(totalStakingAmount) - - return { stakerAPY, creatorAPY } -} - -const getTotalSupply: (devkit: DevkitContract) => Promise = async ( - devkit: DevkitContract -) => { - const devContractAddress = await devkit - .registry(addresses.eth['main']?.registry) - ['token']() - const totalSupply = await devkit.dev(devContractAddress).totalSupply() - - return totalSupply -} - -const getSupplyGrowth: (devkit: DevkitContract) => Promise = async ( - devkit: DevkitContract -) => { - const allocatorContractAddress = await devkit - .registry(addresses.eth['main']?.registry) - ['allocator']() - const maxRewards = await devkit - .allocator(allocatorContractAddress) - .calculateMaxRewardsPerBlock() - - const totalSupply = toNaturalNumber(await getTotalSupply(devkit)) - - const year = new BigNumber(2102400) - const annualSupplyGrowthRatio = toNaturalNumber(maxRewards) - .times(year) - .div(totalSupply) - - return annualSupplyGrowthRatio -} - -const getAssetOnboarded: () => Promise = always( - bent( - DEV_GRAPHQL_ENDPOINT, - 'POST', - 'json' - )('/', { - query: `{ property_factory_create_aggregate( - where: { authentication: { authentication_id: { _is_null: false } } } - ) { aggregate { count } } }`, - variables: null, - }).then( - (r) => - (r as propertyFactoryCreateAggregate).data - .property_factory_create_aggregate.aggregate.count - ) -) - -const getCreatorsRewardsDev: ( - devkit: DevkitContract, - creatorAPY: BigNumber -) => Promise = async ( - devkit: DevkitContract, - creatorAPY: BigNumber -) => { - const totalStakingAmount = await getTotalStakingAmount(devkit) - const creatorsRewardsDev = creatorAPY.multipliedBy(totalStakingAmount) - return creatorsRewardsDev -} - -// eslint-disable-next-line functional/functional-parameters -export const getStats: GetStatsCaller = async ( - httpProviderEndpoint: string -) => { - const provider = new ethers.providers.JsonRpcProvider(httpProviderEndpoint) - const devkit = createDevkitContract(provider) - - const [ - devPrice, - totalCap, - marketCap, - stakingRatio, - stakingAmount, - { stakerAPY, creatorAPY }, - annualSupplyGrowthRatio, - assetOnboarded, - ] = await Promise.all([ - getDevPrice(devkit), - getTotalCap(devkit), - getMarketCap(devkit), - getStakingRatio(devkit), - getTotalStakingAmount(devkit), - getAPY(devkit), - getSupplyGrowth(devkit), - getAssetOnboarded(), - ]) - const creatorsRewardsDEV = toNaturalNumber( - await getCreatorsRewardsDev(devkit, creatorAPY) - ) - const creatorsRewardsUSD = devPrice.multipliedBy(creatorsRewardsDEV) - - return { - devPrice: devPrice.toNumber(), - totalCap: totalCap.toNumber(), - marketCap: marketCap.toNumber(), - stakingRatio: stakingRatio.toNumber(), - stakingAmount: toNaturalNumber(stakingAmount).toNumber(), - stakerAPY: stakerAPY.toNumber(), - creatorAPY: creatorAPY.toNumber(), - annualSupplyGrowthRatio: annualSupplyGrowthRatio.toNumber(), - assetOnboarded: assetOnboarded, - creatorsRewardsDEV: creatorsRewardsDEV.toNumber(), - creatorsRewardsUSD: creatorsRewardsUSD.toNumber(), - } as DevStats -} diff --git a/lib/ethereum/client/getVotablePolicy.ts b/lib/ethereum/client/getVotablePolicy.ts deleted file mode 100644 index 55195e170..000000000 --- a/lib/ethereum/client/getVotablePolicy.ts +++ /dev/null @@ -1,50 +0,0 @@ -import bent from 'bent' -import { always, not } from 'ramda' -import { aFindIndex } from 'async-ray' -import { PolicyGroupContract } from '../policy-group' -import { DEV_GRAPHQL_ENDPOINT } from '../../common/utils/const' - -export type CreateGetVotablePolicyCaller = ( - policyGroup: PolicyGroupContract -) => () => Promise - -export const createGetVotablePolicy: CreateGetVotablePolicyCaller = ( - policyGroup: PolicyGroupContract -) => { - const fetcher = always( - bent( - DEV_GRAPHQL_ENDPOINT, - 'POST', - 'json' - )('/', { - query: `{ - policy_factory_create(order_by: {block_number: desc}, limit: 100) { - policy_address - } - }`, - }).then( - (r) => - r as unknown as { - readonly data: { - readonly policy_factory_create: ReadonlyArray<{ - readonly policy_address: string - }> - } - } - ) - ) - const checker = async (policy: string): Promise => - policyGroup.isGroup(policy) - - // eslint-disable-next-line functional/functional-parameters - return async () => { - const policies = await fetcher().then( - ({ data }) => data.policy_factory_create - ) - const policyAddresses = policies.map(({ policy_address }) => policy_address) - const notPolicyIndex = await aFindIndex(policyAddresses, async (policy) => - not(await checker(policy)) - ) - return policyAddresses.filter((_, i) => i < notPolicyIndex) - } -} diff --git a/lib/ethereum/client/index.spec.ts b/lib/ethereum/client/index.spec.ts index 07459642c..cb81e5a05 100644 --- a/lib/ethereum/client/index.spec.ts +++ b/lib/ethereum/client/index.spec.ts @@ -1,14 +1,10 @@ import { DevkitClient, client } from './index' -import { createGetVotablePolicy } from './getVotablePolicy' import { createDetectSTokens } from './createDetectSTokens' -import { getStats } from './getStats' describe('index.ts', () => { describe('client', () => { it('check return object', () => { const expected: DevkitClient = { - createGetVotablePolicy, - getStats, createDetectSTokens, } diff --git a/lib/ethereum/client/index.ts b/lib/ethereum/client/index.ts index 659cbc17e..647928f3d 100644 --- a/lib/ethereum/client/index.ts +++ b/lib/ethereum/client/index.ts @@ -1,15 +1,11 @@ -import { createGetVotablePolicy } from './getVotablePolicy' -import { getStats } from './getStats' import { createDetectSTokens } from './createDetectSTokens' export type DevkitClient = { - readonly createGetVotablePolicy: typeof createGetVotablePolicy - readonly getStats: typeof getStats readonly createDetectSTokens: typeof createDetectSTokens } export const client: DevkitClient = { - createGetVotablePolicy, - getStats, createDetectSTokens, } + +export { createDetectSTokens } diff --git a/lib/ethereum/contract.spec.ts b/lib/ethereum/contract.spec.ts index ecf5d0c08..aeb0b785d 100644 --- a/lib/ethereum/contract.spec.ts +++ b/lib/ethereum/contract.spec.ts @@ -18,12 +18,14 @@ import { createPolicyGroupContract } from './policy-group' import { createMetricsContract } from './metrics' import { createPolicyFactoryContract } from './policy-factory' import { createSTokensContract } from './s-tokens' +import { createMetricsGroupContract } from './metrics-group' +import { createSimpleCollectionsContract } from './simpleCollection' describe('contract.ts', () => { describe('createDevkitContract', () => { it('check return object', () => { const host = 'localhost' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: DevkitContract = { allocator: createAllocatorContract(provider), @@ -38,8 +40,10 @@ describe('contract.ts', () => { policy: createPolicyContract(provider), policyGroup: createPolicyGroupContract(provider), metrics: createMetricsContract(provider), + metricsGroup: createMetricsGroupContract(provider), policyFactory: createPolicyFactoryContract(provider), sTokens: createSTokensContract(provider), + simpleCollections: createSimpleCollectionsContract(provider), } const result = createDevkitContract(provider) @@ -51,7 +55,7 @@ describe('contract.ts', () => { describe('contractFactory', () => { it('check return object', () => { const host = 'localhost' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected = createDevkitContract(provider) const result = contractFactory(provider) diff --git a/lib/ethereum/contract.ts b/lib/ethereum/contract.ts index 19dc39704..04127c75a 100644 --- a/lib/ethereum/contract.ts +++ b/lib/ethereum/contract.ts @@ -1,7 +1,5 @@ /* eslint-disable functional/no-throw-statement */ /* eslint-disable functional/no-conditional-statement */ -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' import { createMarketContract } from './market/index' import { createMarketBehaviorContract } from './market-behavior/index' import { createPropertyContract } from './property/index' @@ -16,6 +14,9 @@ import { createPolicyGroupContract } from './policy-group' import { createMetricsContract } from './metrics' import { createPolicyFactoryContract } from './policy-factory' import { createSTokensContract } from './s-tokens' +import { createMetricsGroupContract } from './metrics-group' +import { createSimpleCollectionsContract } from './simpleCollection' +import { ContractRunner } from 'ethers' export type DevkitContract = { readonly allocator: ReturnType @@ -30,18 +31,16 @@ export type DevkitContract = { readonly policy: ReturnType readonly policyGroup: ReturnType readonly metrics: ReturnType + readonly metricsGroup: ReturnType readonly policyFactory: ReturnType readonly sTokens: ReturnType + readonly simpleCollections: ReturnType } -export type ContractFactory = ( - ethersProvider: Provider | Signer -) => DevkitContract -export type CreateDevkitContract = ( - provider: Provider | Signer -) => DevkitContract +export type ContractFactory = (ethersProvider: ContractRunner) => DevkitContract +export type CreateDevkitContract = (provider: ContractRunner) => DevkitContract export const createDevkitContract: CreateDevkitContract = ( - provider: Provider | Signer + provider: ContractRunner, ): DevkitContract => ({ allocator: createAllocatorContract(provider), market: createMarketContract(provider), @@ -55,8 +54,10 @@ export const createDevkitContract: CreateDevkitContract = ( policy: createPolicyContract(provider), policyGroup: createPolicyGroupContract(provider), metrics: createMetricsContract(provider), + metricsGroup: createMetricsGroupContract(provider), policyFactory: createPolicyFactoryContract(provider), sTokens: createSTokensContract(provider), + simpleCollections: createSimpleCollectionsContract(provider), }) export const contractFactory: ContractFactory = createDevkitContract diff --git a/lib/ethereum/dev/deposit.spec.ts b/lib/ethereum/dev/deposit.spec.ts index 77a1897fa..af8d26a3e 100644 --- a/lib/ethereum/dev/deposit.spec.ts +++ b/lib/ethereum/dev/deposit.spec.ts @@ -35,7 +35,7 @@ describe('deposit.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (to: string, value: number) => - Promise.reject(error) + Promise.reject(error), ), } diff --git a/lib/ethereum/dev/deposit.ts b/lib/ethereum/dev/deposit.ts index 249363a47..e27732fe0 100644 --- a/lib/ethereum/dev/deposit.ts +++ b/lib/ethereum/dev/deposit.ts @@ -4,14 +4,14 @@ import { MutationOption, FallbackableOverrides, } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type CreateDepositCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => ( to: string, value: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise export const createDepositCaller: CreateDepositCaller = diff --git a/lib/ethereum/dev/index.spec.ts b/lib/ethereum/dev/index.spec.ts index fa5b947f4..42cd09b5f 100644 --- a/lib/ethereum/dev/index.spec.ts +++ b/lib/ethereum/dev/index.spec.ts @@ -21,33 +21,25 @@ jest.mock('./../../common/erc20/name') jest.mock('./../../common/erc20/symbol') jest.mock('./../../common/erc20/decimals') jest.mock('./../../common/erc20/allowance') +jest.mock('ethers') describe('dev/index.ts', () => { - ;(createDepositCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createBalanceOfCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createTotalSupplyCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createApproveCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createTransferFromCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createNameCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createSymbolCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createDecimalsCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createAllowanceCaller as jest.Mock).mockImplementation( - (contract) => contract - ) + ;(createDepositCaller as jest.Mock).mockImplementation(() => 123) + ;(createBalanceOfCaller as jest.Mock).mockImplementation(() => 123) + ;(createTotalSupplyCaller as jest.Mock).mockImplementation(() => 123) + ;(createApproveCaller as jest.Mock).mockImplementation(() => 123) + ;(createTransferFromCaller as jest.Mock).mockImplementation(() => 123) + ;(createNameCaller as jest.Mock).mockImplementation(() => 123) + ;(createSymbolCaller as jest.Mock).mockImplementation(() => 123) + ;(createDecimalsCaller as jest.Mock).mockImplementation(() => 123) + ;(createAllowanceCaller as jest.Mock).mockImplementation(() => 123) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) describe('createDevContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => DevContract = (address: string) => { const contract = new ethers.Contract(address, [...devAbi], provider) return { @@ -69,7 +61,7 @@ describe('dev/index.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/ethereum/dev/index.ts b/lib/ethereum/dev/index.ts index d3da3d831..00ef1c512 100644 --- a/lib/ethereum/dev/index.ts +++ b/lib/ethereum/dev/index.ts @@ -1,6 +1,4 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' import { devAbi } from './abi' import { createTransferCaller } from '../../common/erc20/transfer' import { createBalanceOfCaller } from '../../common/erc20/balanceOf' @@ -13,7 +11,7 @@ import { createDecimalsCaller } from '../../common/erc20/decimals' import { createAllowanceCaller } from '../../common/erc20/allowance' import { createDepositCaller } from './deposit' import { FallbackableOverrides } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type DevContract = { readonly totalSupply: () => Promise @@ -24,7 +22,7 @@ export type DevContract = { readonly transferFrom: ( from: string, to: string, - value: string + value: string, ) => Promise readonly name: () => Promise readonly symbol: () => Promise @@ -32,12 +30,13 @@ export type DevContract = { readonly deposit: ( to: string, value: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise + readonly contract: () => ethers.Contract } export const createDevContract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): DevContract => { const contract = new ethers.Contract(address, [...devAbi], provider) @@ -52,5 +51,6 @@ export const createDevContract = symbol: createSymbolCaller(contract), decimals: createDecimalsCaller(contract), deposit: createDepositCaller(contract), + contract: () => contract, } } diff --git a/lib/ethereum/lockup/abi.ts b/lib/ethereum/lockup/abi.ts index 5d69e8b8b..c06b2653c 100644 --- a/lib/ethereum/lockup/abi.ts +++ b/lib/ethereum/lockup/abi.ts @@ -636,6 +636,37 @@ export const lockupAbi = [ stateMutability: 'nonpayable', type: 'function', }, + { + constant: false, + inputs: [ + { + internalType: 'address', + name: '_property', + type: 'address', + }, + { + internalType: 'uint256', + name: '_amount', + type: 'uint256', + }, + { + internalType: 'bytes32', + name: '_payload', + type: 'bytes32', + }, + ], + name: 'depositToProperty', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + payable: false, + stateMutability: 'nonpayable', + type: 'function', + }, { constant: false, inputs: [ diff --git a/lib/ethereum/lockup/calculateCumulativeHoldersRewardAmount.spec.ts b/lib/ethereum/lockup/calculateCumulativeHoldersRewardAmount.spec.ts index 2866ce4d8..41780f888 100644 --- a/lib/ethereum/lockup/calculateCumulativeHoldersRewardAmount.spec.ts +++ b/lib/ethereum/lockup/calculateCumulativeHoldersRewardAmount.spec.ts @@ -10,7 +10,7 @@ describe('calculateCumulativeHoldersRewardAmount.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (propertyAddress: string) => - Promise.resolve(value) + Promise.resolve(value), ), } @@ -18,7 +18,7 @@ describe('calculateCumulativeHoldersRewardAmount.spec.ts', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createCalculateCumulativeHoldersRewardAmountCaller( - lockupContract as any + lockupContract as any, ) const result = await caller('0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5') @@ -34,17 +34,17 @@ describe('calculateCumulativeHoldersRewardAmount.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (propertyAddress: string) => - Promise.reject(error) + Promise.reject(error), ), } // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createCalculateCumulativeHoldersRewardAmountCaller( - lockupContract as any + lockupContract as any, ) const result = await caller( - '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5' + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', ).catch((err) => err) expect(result).toEqual(error) diff --git a/lib/ethereum/lockup/calculateCumulativeHoldersRewardAmount.ts b/lib/ethereum/lockup/calculateCumulativeHoldersRewardAmount.ts index 120977e4f..d70fce72f 100644 --- a/lib/ethereum/lockup/calculateCumulativeHoldersRewardAmount.ts +++ b/lib/ethereum/lockup/calculateCumulativeHoldersRewardAmount.ts @@ -2,7 +2,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type CreateCalculateCumulativeHoldersRewardAmountCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (propertyAddress: string) => Promise export const createCalculateCumulativeHoldersRewardAmountCaller: CreateCalculateCumulativeHoldersRewardAmountCaller = diff --git a/lib/ethereum/lockup/calculateCumulativeRewardPrices.spec.ts b/lib/ethereum/lockup/calculateCumulativeRewardPrices.spec.ts index 8b93ecbdc..a65e5c2f3 100644 --- a/lib/ethereum/lockup/calculateCumulativeRewardPrices.spec.ts +++ b/lib/ethereum/lockup/calculateCumulativeRewardPrices.spec.ts @@ -15,7 +15,7 @@ describe('calculateCumulativeRewardPrices.spec.ts', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createCalculateCumulativeRewardPricesCaller( - lockupContract as any + lockupContract as any, ) const result = await caller() @@ -35,7 +35,7 @@ describe('calculateCumulativeRewardPrices.spec.ts', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createCalculateCumulativeRewardPricesCaller( - lockupContract as any + lockupContract as any, ) const result = await caller().catch((err) => err) diff --git a/lib/ethereum/lockup/calculateCumulativeRewardPrices.ts b/lib/ethereum/lockup/calculateCumulativeRewardPrices.ts index 74a0b0d06..bce941fd6 100644 --- a/lib/ethereum/lockup/calculateCumulativeRewardPrices.ts +++ b/lib/ethereum/lockup/calculateCumulativeRewardPrices.ts @@ -4,7 +4,7 @@ import { always } from 'ramda' import { arrayify } from '../../common/utils/arrayify' export type CreateCalculateCumulativeRewardPricesCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createCalculateCumulativeRewardPricesCaller: CreateCalculateCumulativeRewardPricesCaller = @@ -14,5 +14,5 @@ export const createCalculateCumulativeRewardPricesCaller: CreateCalculateCumulat contract, method: 'calculateCumulativeRewardPrices', mutation: false, - }).then((r) => arrayify(r) as readonly [string, string, string, string]) + }).then((r) => arrayify(r) as readonly [string, string, string, string]), ) diff --git a/lib/ethereum/lockup/calculateRewardAmount.spec.ts b/lib/ethereum/lockup/calculateRewardAmount.spec.ts index d8b645c89..b5132f062 100644 --- a/lib/ethereum/lockup/calculateRewardAmount.spec.ts +++ b/lib/ethereum/lockup/calculateRewardAmount.spec.ts @@ -9,8 +9,8 @@ describe('calculateRewardAmount.spec.ts', () => { calculateRewardAmount: jest.fn().mockImplementation( async ( // eslint-disable-next-line @typescript-eslint/no-unused-vars - propertyAddress: string - ) => Promise.resolve(value) + propertyAddress: string, + ) => Promise.resolve(value), ), } @@ -31,8 +31,8 @@ describe('calculateRewardAmount.spec.ts', () => { calculateRewardAmount: jest.fn().mockImplementation( async ( // eslint-disable-next-line @typescript-eslint/no-unused-vars - propertyAddress: string - ) => Promise.reject(error) + propertyAddress: string, + ) => Promise.reject(error), ), } @@ -40,7 +40,7 @@ describe('calculateRewardAmount.spec.ts', () => { const caller = createCalculateRewardAmountCaller(lockupContract as any) const result = await caller( - '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5' + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', ).catch((err) => err) expect(result).toEqual(error) diff --git a/lib/ethereum/lockup/calculateRewardAmount.ts b/lib/ethereum/lockup/calculateRewardAmount.ts index 76f5f24e5..3e9c00371 100644 --- a/lib/ethereum/lockup/calculateRewardAmount.ts +++ b/lib/ethereum/lockup/calculateRewardAmount.ts @@ -3,7 +3,7 @@ import { execute, QueryOption } from '../../common/utils/execute' import { arrayify } from '../../common/utils/arrayify' export type CreateCalculateRewardAmountCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (propertyAddress: string) => Promise export const createCalculateRewardAmountCaller: CreateCalculateRewardAmountCaller = diff --git a/lib/ethereum/lockup/calculateWithdrawableInterestAmount.spec.ts b/lib/ethereum/lockup/calculateWithdrawableInterestAmount.spec.ts index 8854f69db..47749497c 100644 --- a/lib/ethereum/lockup/calculateWithdrawableInterestAmount.spec.ts +++ b/lib/ethereum/lockup/calculateWithdrawableInterestAmount.spec.ts @@ -11,8 +11,8 @@ describe('calculateWithdrawableInterestAmount.spec.ts', () => { // eslint-disable-next-line @typescript-eslint/no-unused-vars propertyAddress: string, // eslint-disable-next-line @typescript-eslint/no-unused-vars - address: string - ) => Promise.resolve(value) + address: string, + ) => Promise.resolve(value), ), } @@ -20,12 +20,12 @@ describe('calculateWithdrawableInterestAmount.spec.ts', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createCalculateWithdrawableInterestAmountCaller( - lockupContract as any + lockupContract as any, ) const result = await caller( '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', - '0xC7b8B28E498233113b270B1E1e0f91049a31467a' + '0xC7b8B28E498233113b270B1E1e0f91049a31467a', ) expect(result).toEqual(expected) @@ -40,19 +40,19 @@ describe('calculateWithdrawableInterestAmount.spec.ts', () => { // eslint-disable-next-line @typescript-eslint/no-unused-vars propertyAddress: string, // eslint-disable-next-line @typescript-eslint/no-unused-vars - address: string - ) => Promise.reject(error) + address: string, + ) => Promise.reject(error), ), } // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createCalculateWithdrawableInterestAmountCaller( - lockupContract as any + lockupContract as any, ) const result = await caller( '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', - '0xC7b8B28E498233113b270B1E1e0f91049a31467a' + '0xC7b8B28E498233113b270B1E1e0f91049a31467a', ).catch((err) => err) expect(result).toEqual(error) diff --git a/lib/ethereum/lockup/calculateWithdrawableInterestAmount.ts b/lib/ethereum/lockup/calculateWithdrawableInterestAmount.ts index 633e4435a..156e1ee06 100644 --- a/lib/ethereum/lockup/calculateWithdrawableInterestAmount.ts +++ b/lib/ethereum/lockup/calculateWithdrawableInterestAmount.ts @@ -2,7 +2,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type CreateCalculateWithdrawableInterestAmountCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (propertyAddress: string, account: string) => Promise export const createCalculateWithdrawableInterestAmountCaller: CreateCalculateWithdrawableInterestAmountCaller = diff --git a/lib/ethereum/lockup/calculateWithdrawableInterestAmountByPosition.spec.ts b/lib/ethereum/lockup/calculateWithdrawableInterestAmountByPosition.spec.ts index 54f002f2c..f91f6d036 100644 --- a/lib/ethereum/lockup/calculateWithdrawableInterestAmountByPosition.spec.ts +++ b/lib/ethereum/lockup/calculateWithdrawableInterestAmountByPosition.spec.ts @@ -15,7 +15,7 @@ describe('calculateWithdrawableInterestAmountByPosition.spec.ts', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createcalculateWithdrawableInterestAmountByPositionCaller( - lockupContract as any + lockupContract as any, ) const result = await caller('123') @@ -34,7 +34,7 @@ describe('calculateWithdrawableInterestAmountByPosition.spec.ts', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createcalculateWithdrawableInterestAmountByPositionCaller( - lockupContract as any + lockupContract as any, ) const result = await caller('123').catch((err) => err) diff --git a/lib/ethereum/lockup/calculateWithdrawableInterestAmountByPosition.ts b/lib/ethereum/lockup/calculateWithdrawableInterestAmountByPosition.ts index 55397c94e..f1c8cbefe 100644 --- a/lib/ethereum/lockup/calculateWithdrawableInterestAmountByPosition.ts +++ b/lib/ethereum/lockup/calculateWithdrawableInterestAmountByPosition.ts @@ -3,7 +3,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type CreatecalculateWithdrawableInterestAmountByPositionCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (positionTokenId: string) => Promise export const createcalculateWithdrawableInterestAmountByPositionCaller: CreatecalculateWithdrawableInterestAmountByPositionCaller = diff --git a/lib/ethereum/lockup/cap.ts b/lib/ethereum/lockup/cap.ts index 968321114..e8c808cdf 100644 --- a/lib/ethereum/lockup/cap.ts +++ b/lib/ethereum/lockup/cap.ts @@ -3,7 +3,7 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateCapCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createCapCaller: CreateCapCaller = (contract: ethers.Contract) => @@ -12,5 +12,5 @@ export const createCapCaller: CreateCapCaller = (contract: ethers.Contract) => contract, method: 'cap', mutation: false, - }) + }), ) diff --git a/lib/ethereum/lockup/depositToPosition.ts b/lib/ethereum/lockup/depositToPosition.ts index 03ca49a38..4ba51d190 100644 --- a/lib/ethereum/lockup/depositToPosition.ts +++ b/lib/ethereum/lockup/depositToPosition.ts @@ -5,14 +5,14 @@ import { FallbackableOverrides, MutationOption, } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type CreateDepositToPositionCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => ( positionTokenId: string, amount: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise export const createDepositToPositionCaller: CreateDepositToPositionCaller = @@ -20,7 +20,7 @@ export const createDepositToPositionCaller: CreateDepositToPositionCaller = async ( positionTokenId: string, amount: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => execute({ contract, diff --git a/lib/ethereum/lockup/depositToProperty.spec.ts b/lib/ethereum/lockup/depositToProperty.spec.ts index ffe3bb3a3..93ddce253 100644 --- a/lib/ethereum/lockup/depositToProperty.spec.ts +++ b/lib/ethereum/lockup/depositToProperty.spec.ts @@ -8,8 +8,10 @@ describe('depositToProperty.spec.ts', () => { const lockupContract = { // eslint-disable-next-line @typescript-eslint/no-unused-vars - depositToProperty: (propertyAddress: string, amount: number) => - Promise.resolve(stubTx), + 'depositToProperty(address,uint256)': ( + propertyAddress: string, + amount: number, + ) => Promise.resolve(stubTx), } // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -17,16 +19,36 @@ describe('depositToProperty.spec.ts', () => { const result = await caller( '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', - '100' + '100', ) expect(result).toEqual(stubTx) }) + it('call success with optional payload', async () => { + const expected = stubTransactionResposeFactory({}) + const lockupContract = { + 'depositToProperty(address,uint256,bytes32)': jest + .fn() + .mockImplementation(() => Promise.resolve(expected)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createDepositToPropertyCaller(lockupContract as any) + + const result = await caller( + '32', + '100', + '0xb690e3d57bc3c98d69dfb6136cd622b2ba93f965cc4740a53019a867a8af2106', + ) + + expect(result).toEqual(expected) + }) + it('call failure', async () => { const error = 'error' const lockupContract = { - depositToProperty: jest + 'depositToProperty(address,uint256)': jest .fn() .mockImplementation(async () => Promise.reject(error)), } @@ -36,7 +58,7 @@ describe('depositToProperty.spec.ts', () => { const result = await caller( '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', - '100' + '100', ).catch((err) => err) expect(result).toEqual(error) diff --git a/lib/ethereum/lockup/depositToProperty.ts b/lib/ethereum/lockup/depositToProperty.ts index 896d61e53..c94870940 100644 --- a/lib/ethereum/lockup/depositToProperty.ts +++ b/lib/ethereum/lockup/depositToProperty.ts @@ -5,14 +5,15 @@ import { FallbackableOverrides, MutationOption, } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type CreateDepositToPropertyCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => ( propertyAddress: string, amount: string, - overrides?: FallbackableOverrides + payload?: string | Uint8Array, + overrides?: FallbackableOverrides, ) => Promise export const createDepositToPropertyCaller: CreateDepositToPropertyCaller = @@ -20,12 +21,16 @@ export const createDepositToPropertyCaller: CreateDepositToPropertyCaller = async ( propertyAddress: string, amount: string, - overrides?: FallbackableOverrides + payload?: string | Uint8Array, + overrides?: FallbackableOverrides, ) => execute({ contract, method: 'depositToProperty', mutation: true, - args: [propertyAddress, amount], + args: payload + ? [propertyAddress, amount, payload] + : [propertyAddress, amount], overrides, + interface: payload ? 'address,uint256,bytes32' : 'address,uint256', }) diff --git a/lib/ethereum/lockup/getAllValue.ts b/lib/ethereum/lockup/getAllValue.ts index 0987b8d43..0decc7032 100644 --- a/lib/ethereum/lockup/getAllValue.ts +++ b/lib/ethereum/lockup/getAllValue.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateGetAllValueCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createGetAllValueCaller: CreateGetAllValueCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'getAllValue', mutation: false, - }) + }), ) diff --git a/lib/ethereum/lockup/getPropertyValue.spec.ts b/lib/ethereum/lockup/getPropertyValue.spec.ts index b1b5808af..33e930925 100644 --- a/lib/ethereum/lockup/getPropertyValue.spec.ts +++ b/lib/ethereum/lockup/getPropertyValue.spec.ts @@ -10,7 +10,7 @@ describe('getPropertyValue.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (address: string) => - Promise.resolve(value) + Promise.resolve(value), ), } @@ -38,7 +38,7 @@ describe('getPropertyValue.spec.ts', () => { const caller = createGetPropertyValueCaller(lockupContract as any) const result = await caller( - '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5' + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', ).catch((err) => err) expect(result).toEqual(error) diff --git a/lib/ethereum/lockup/getPropertyValue.ts b/lib/ethereum/lockup/getPropertyValue.ts index 3db43b549..926ffd4ce 100644 --- a/lib/ethereum/lockup/getPropertyValue.ts +++ b/lib/ethereum/lockup/getPropertyValue.ts @@ -2,7 +2,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type CreateGetPropertyValueCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (address: string) => Promise export const createGetPropertyValueCaller: CreateGetPropertyValueCaller = diff --git a/lib/ethereum/lockup/getStorageWithdrawalStatus.spec.ts b/lib/ethereum/lockup/getStorageWithdrawalStatus.spec.ts index a217b179e..6cf4ab79d 100644 --- a/lib/ethereum/lockup/getStorageWithdrawalStatus.spec.ts +++ b/lib/ethereum/lockup/getStorageWithdrawalStatus.spec.ts @@ -10,7 +10,7 @@ describe('getStorageWithdrawalStatus.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (property: string, account: string) => - Promise.resolve(value) + Promise.resolve(value), ), } @@ -18,12 +18,12 @@ describe('getStorageWithdrawalStatus.spec.ts', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createGetStorageWithdrawalStatusCaller( - lockupContract as any + lockupContract as any, ) const result = await caller( '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', - '0xC7b8B28E498233113b270B1E1e0f91049a31467a' + '0xC7b8B28E498233113b270B1E1e0f91049a31467a', ) expect(result).toEqual(expected) @@ -37,18 +37,18 @@ describe('getStorageWithdrawalStatus.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (property: string, account: string) => - Promise.reject(error) + Promise.reject(error), ), } // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createGetStorageWithdrawalStatusCaller( - lockupContract as any + lockupContract as any, ) const result = await caller( '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', - '0xC7b8B28E498233113b270B1E1e0f91049a31467a' + '0xC7b8B28E498233113b270B1E1e0f91049a31467a', ).catch((err) => err) expect(result).toEqual(error) diff --git a/lib/ethereum/lockup/getStorageWithdrawalStatus.ts b/lib/ethereum/lockup/getStorageWithdrawalStatus.ts index 0e687eb86..4e778130b 100644 --- a/lib/ethereum/lockup/getStorageWithdrawalStatus.ts +++ b/lib/ethereum/lockup/getStorageWithdrawalStatus.ts @@ -2,7 +2,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type CreateGetStorageWithdrawalStatusCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (propertyAddress: string, accountAddress: string) => Promise export const createGetStorageWithdrawalStatusCaller: CreateGetStorageWithdrawalStatusCaller = diff --git a/lib/ethereum/lockup/getValue.spec.ts b/lib/ethereum/lockup/getValue.spec.ts index 56d14f62f..3906c2863 100644 --- a/lib/ethereum/lockup/getValue.spec.ts +++ b/lib/ethereum/lockup/getValue.spec.ts @@ -10,7 +10,7 @@ describe('getValue.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (property: string, account: string) => - Promise.resolve(value) + Promise.resolve(value), ), } @@ -21,7 +21,7 @@ describe('getValue.spec.ts', () => { const result = await caller( '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', - '0xC7b8B28E498233113b270B1E1e0f91049a31467a' + '0xC7b8B28E498233113b270B1E1e0f91049a31467a', ) expect(result).toEqual(expected) @@ -35,7 +35,7 @@ describe('getValue.spec.ts', () => { getValue: jest .fn() .mockImplementation(async (property: string, account: string) => - Promise.reject(error) + Promise.reject(error), ), } @@ -44,7 +44,7 @@ describe('getValue.spec.ts', () => { const result = await caller( '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', - '0xC7b8B28E498233113b270B1E1e0f91049a31467a' + '0xC7b8B28E498233113b270B1E1e0f91049a31467a', ).catch((err) => err) expect(result).toEqual(error) diff --git a/lib/ethereum/lockup/getValue.ts b/lib/ethereum/lockup/getValue.ts index 39c0fcb5a..575a24903 100644 --- a/lib/ethereum/lockup/getValue.ts +++ b/lib/ethereum/lockup/getValue.ts @@ -2,7 +2,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type CreateGetValueCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (propertyAddress: string, accountAddress: string) => Promise export const createGetValueCaller: CreateGetValueCaller = diff --git a/lib/ethereum/lockup/index.spec.ts b/lib/ethereum/lockup/index.spec.ts index 74b2b3399..61b609c4f 100644 --- a/lib/ethereum/lockup/index.spec.ts +++ b/lib/ethereum/lockup/index.spec.ts @@ -31,56 +31,44 @@ jest.mock('./depositToPosition') jest.mock('./withdrawByPosition') jest.mock('./migrateToSTokens') jest.mock('./calculateWithdrawableInterestAmountByPosition') +jest.mock('ethers') describe('lockup/index.ts', () => { - ;(createGetPropertyValueCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createWithdrawCaller as jest.Mock).mockImplementation( - (contract) => contract - ) + ;(createGetPropertyValueCaller as jest.Mock).mockImplementation(() => 123) + ;(createWithdrawCaller as jest.Mock).mockImplementation(() => 123) ;( createCalculateWithdrawableInterestAmountCaller as jest.Mock - ).mockImplementation((contract) => contract) - ;(createGetAllValueCaller as jest.Mock).mockImplementation( - (contract) => contract - ) + ).mockImplementation(() => 123) + ;(createGetAllValueCaller as jest.Mock).mockImplementation(() => 123) ;(createGetStorageWithdrawalStatusCaller as jest.Mock).mockImplementation( - (contract) => contract + () => 123, ) ;( createCalculateCumulativeHoldersRewardAmountCaller as jest.Mock - ).mockImplementation((contract) => contract) + ).mockImplementation(() => 123) ;( createCalculateCumulativeRewardPricesCaller as jest.Mock - ).mockImplementation((contract) => contract) + ).mockImplementation(() => 123) ;(createCalculateRewardAmountCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createDepositToPropertyCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createDepositToPositionCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createWithdrawByPositionCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createMigrateToSTokensCaller as jest.Mock).mockImplementation( - (contract) => contract + () => 123, ) + ;(createDepositToPropertyCaller as jest.Mock).mockImplementation(() => 123) + ;(createDepositToPositionCaller as jest.Mock).mockImplementation(() => 123) + ;(createWithdrawByPositionCaller as jest.Mock).mockImplementation(() => 123) + ;(createMigrateToSTokensCaller as jest.Mock).mockImplementation(() => 123) ;( createcalculateWithdrawableInterestAmountByPositionCaller as jest.Mock - ).mockImplementation((contract) => contract) + ).mockImplementation(() => 123) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) describe('createLockupContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => LockupContract = ( - address: string + address: string, ) => { const contract = new ethers.Contract(address, [...lockupAbi], provider) return { @@ -104,6 +92,7 @@ describe('lockup/index.ts', () => { depositToProperty: createDepositToPropertyCaller(contract), depositToPosition: createDepositToPositionCaller(contract), migrateToSTokens: createMigrateToSTokensCaller(contract), + contract: () => contract, } } @@ -111,7 +100,7 @@ describe('lockup/index.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/ethereum/lockup/index.ts b/lib/ethereum/lockup/index.ts index edf591af8..9f026329d 100644 --- a/lib/ethereum/lockup/index.ts +++ b/lib/ethereum/lockup/index.ts @@ -1,6 +1,4 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' import { lockupAbi } from './abi' import { createGetValueCaller } from './getValue' import { createGetPropertyValueCaller } from './getPropertyValue' @@ -18,64 +16,66 @@ import { createDepositToPropertyCaller } from './depositToProperty' import { createDepositToPositionCaller } from './depositToPosition' import { createMigrateToSTokensCaller } from './migrateToSTokens' import { FallbackableOverrides } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type LockupContract = { readonly getValue: ( propertyAddress: string, - accountAddress: string + accountAddress: string, ) => Promise readonly getAllValue: () => Promise readonly getPropertyValue: (address: string) => Promise readonly withdrawByPosition: ( positionTokenId: string, amount: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly withdraw: ( propertyAddress: string, amount: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly calculateWithdrawableInterestAmountByPosition: ( - positionTokenId: string + positionTokenId: string, ) => Promise readonly calculateWithdrawableInterestAmount: ( propertyAddress: string, - accountAddress: string + accountAddress: string, ) => Promise readonly calculateCumulativeHoldersRewardAmount: ( - propertyAddress: string + propertyAddress: string, ) => Promise readonly getStorageWithdrawalStatus: ( propertyAddress: string, - accountAddress: string + accountAddress: string, ) => Promise readonly calculateCumulativeRewardPrices: () => Promise< readonly [string, string, string, string] > readonly calculateRewardAmount: ( - propertyAddress: string + propertyAddress: string, ) => Promise readonly cap: () => Promise readonly depositToProperty: ( propertyAddress: string, amount: string, - overrides?: FallbackableOverrides + payload?: string | Uint8Array, + overrides?: FallbackableOverrides, ) => Promise readonly depositToPosition: ( positionTokenId: string, amount: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly migrateToSTokens: ( positionTokenId: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise + readonly contract: () => ethers.Contract } export const createLockupContract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): LockupContract => { const contract = new ethers.Contract(address, [...lockupAbi], provider) @@ -100,5 +100,6 @@ export const createLockupContract = depositToProperty: createDepositToPropertyCaller(contract), depositToPosition: createDepositToPositionCaller(contract), migrateToSTokens: createMigrateToSTokensCaller(contract), + contract: () => contract, } } diff --git a/lib/ethereum/lockup/migrateToSTokens.spec.ts b/lib/ethereum/lockup/migrateToSTokens.spec.ts index 8dff32da9..9f94358b5 100644 --- a/lib/ethereum/lockup/migrateToSTokens.spec.ts +++ b/lib/ethereum/lockup/migrateToSTokens.spec.ts @@ -1,12 +1,14 @@ import { createMigrateToSTokensCaller } from './migrateToSTokens' -import { stubTransactionResposeFactory } from '../../common/utils/for-test' +import { stubTransactionResposeFactory } from '../../common/utils/for-test' describe('migrateToSTokens.spec.ts', () => { describe('createMigrateToSTokensCaller', () => { it('call success', async () => { const expected = stubTransactionResposeFactory({}) const lockupContract = { - migrateToSTokens: jest.fn().mockImplementation(()=>Promise.resolve(expected)), + migrateToSTokens: jest + .fn() + .mockImplementation(() => Promise.resolve(expected)), } // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -29,7 +31,7 @@ describe('migrateToSTokens.spec.ts', () => { const caller = createMigrateToSTokensCaller(lockupContract as any) const result = await caller( - '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5' + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', ).catch((err) => err) expect(result).toEqual(error) diff --git a/lib/ethereum/lockup/migrateToSTokens.ts b/lib/ethereum/lockup/migrateToSTokens.ts index 6034d268c..70fb8d933 100644 --- a/lib/ethereum/lockup/migrateToSTokens.ts +++ b/lib/ethereum/lockup/migrateToSTokens.ts @@ -5,13 +5,13 @@ import { FallbackableOverrides, MutationOption, } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type CreateMigrateToSTokensCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => ( propertyAddress: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise export const createMigrateToSTokensCaller: CreateMigrateToSTokensCaller = diff --git a/lib/ethereum/lockup/withdraw.spec.ts b/lib/ethereum/lockup/withdraw.spec.ts index 7bef6b688..1c6a6cf4b 100644 --- a/lib/ethereum/lockup/withdraw.spec.ts +++ b/lib/ethereum/lockup/withdraw.spec.ts @@ -17,7 +17,7 @@ describe('withdraw.spec.ts', () => { const result = await caller( '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', - '100' + '100', ) expect(result).toEqual(expected) @@ -30,7 +30,7 @@ describe('withdraw.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (property: string) => - Promise.reject(error) + Promise.reject(error), ), } @@ -39,7 +39,7 @@ describe('withdraw.spec.ts', () => { const result = await caller( '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', - '100' + '100', ).catch((err) => err) expect(result).toEqual(error) diff --git a/lib/ethereum/lockup/withdraw.ts b/lib/ethereum/lockup/withdraw.ts index 5a4e38943..1a58b4c12 100644 --- a/lib/ethereum/lockup/withdraw.ts +++ b/lib/ethereum/lockup/withdraw.ts @@ -4,14 +4,14 @@ import { FallbackableOverrides, MutationOption, } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type CreateWithdrawCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => ( propertyAddress: string, amount: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise export const createWithdrawCaller: CreateWithdrawCaller = @@ -19,7 +19,7 @@ export const createWithdrawCaller: CreateWithdrawCaller = async ( propertyAddress: string, amount: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => execute({ contract, diff --git a/lib/ethereum/lockup/withdrawByPosition.ts b/lib/ethereum/lockup/withdrawByPosition.ts index 357494265..04bfb3887 100644 --- a/lib/ethereum/lockup/withdrawByPosition.ts +++ b/lib/ethereum/lockup/withdrawByPosition.ts @@ -5,14 +5,14 @@ import { FallbackableOverrides, MutationOption, } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type CreateWithdrawByPositionCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => ( positionTokenId: string, amount: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise export const createWithdrawByPositionCaller: CreateWithdrawByPositionCaller = @@ -20,7 +20,7 @@ export const createWithdrawByPositionCaller: CreateWithdrawByPositionCaller = async ( positionTokenId: string, amount: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => execute({ contract, diff --git a/lib/ethereum/market-behavior/getId.ts b/lib/ethereum/market-behavior/getId.ts index d14eea327..9f6ebbbef 100644 --- a/lib/ethereum/market-behavior/getId.ts +++ b/lib/ethereum/market-behavior/getId.ts @@ -2,7 +2,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type CreateGetIdCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (metricsAddress: string) => Promise export const createGetIdCaller: CreateGetIdCaller = diff --git a/lib/ethereum/market-behavior/getMetrics.ts b/lib/ethereum/market-behavior/getMetrics.ts index 8ad66d714..90cabe608 100644 --- a/lib/ethereum/market-behavior/getMetrics.ts +++ b/lib/ethereum/market-behavior/getMetrics.ts @@ -2,7 +2,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type CreateGetMetricsCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (id: string) => Promise export const createGetMetricsCaller: CreateGetMetricsCaller = diff --git a/lib/ethereum/market-behavior/index.spec.ts b/lib/ethereum/market-behavior/index.spec.ts index 8f9db629d..20a146a5b 100644 --- a/lib/ethereum/market-behavior/index.spec.ts +++ b/lib/ethereum/market-behavior/index.spec.ts @@ -5,26 +5,29 @@ import { createGetMetricsCaller } from './getMetrics' import { marketBehaviorAbi } from './abi' jest.mock('./getId') +jest.mock('ethers') describe('getId/index.ts', () => { - ;(createGetIdCaller as jest.Mock).mockImplementation((contract) => contract) + ;(createGetIdCaller as jest.Mock).mockImplementation(() => 123) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) describe('createMarketBehaviorContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => CreateMarketBehaviorContract = ( - address: string + address: string, ) => { const contract = new ethers.Contract( address, [...marketBehaviorAbi], - provider + provider, ) return { getId: createGetIdCaller(contract), getMetrics: createGetMetricsCaller(contract), + contract: () => contract, } } @@ -32,7 +35,7 @@ describe('getId/index.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/ethereum/market-behavior/index.ts b/lib/ethereum/market-behavior/index.ts index 927201bb9..d4ff63d18 100644 --- a/lib/ethereum/market-behavior/index.ts +++ b/lib/ethereum/market-behavior/index.ts @@ -1,6 +1,4 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' import { marketBehaviorAbi } from './abi' import { createGetIdCaller } from './getId' import { createGetMetricsCaller } from './getMetrics' @@ -8,20 +6,22 @@ import { createGetMetricsCaller } from './getMetrics' export type CreateMarketBehaviorContract = { readonly getId: (metricsAddress: string) => Promise readonly getMetrics: (id: string) => Promise + readonly contract: () => ethers.Contract } // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types export const createMarketBehaviorContract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): CreateMarketBehaviorContract => { const contract = new ethers.Contract( address, [...marketBehaviorAbi], - provider + provider, ) return { getId: createGetIdCaller(contract), getMetrics: createGetMetricsCaller(contract), + contract: () => contract, } } diff --git a/lib/ethereum/market-factory/create.spec.ts b/lib/ethereum/market-factory/create.spec.ts index 1bcc494b5..f1c4ef70f 100644 --- a/lib/ethereum/market-factory/create.spec.ts +++ b/lib/ethereum/market-factory/create.spec.ts @@ -10,7 +10,7 @@ describe('create.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation( - async (marketBehaviorAddress: string) => expected + async (marketBehaviorAddress: string) => expected, ), } @@ -33,7 +33,7 @@ describe('create.spec.ts', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createCreateCaller(marketFactoryContract as any) const result = await caller( - '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5' + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', ).catch((err) => err) expect(result).toEqual(error) }) diff --git a/lib/ethereum/market-factory/create.ts b/lib/ethereum/market-factory/create.ts index 7c6829cb0..ab1eea330 100644 --- a/lib/ethereum/market-factory/create.ts +++ b/lib/ethereum/market-factory/create.ts @@ -4,13 +4,13 @@ import { FallbackableOverrides, MutationOption, } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type CreateCreateCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => ( marketBehaviorAddress: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise export const createCreateCaller: CreateCreateCaller = diff --git a/lib/ethereum/market-factory/index.spec.ts b/lib/ethereum/market-factory/index.spec.ts index b29c920a9..ac1215dcd 100644 --- a/lib/ethereum/market-factory/index.spec.ts +++ b/lib/ethereum/market-factory/index.spec.ts @@ -4,25 +4,28 @@ import { marketFactoryAbi } from './abi' import { createCreateCaller } from './create' jest.mock('./create') +jest.mock('ethers') describe('market-factory/index.ts', () => { - ;(createCreateCaller as jest.Mock).mockImplementation((contract) => contract) + ;(createCreateCaller as jest.Mock).mockImplementation(() => 123) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) describe('createMarketFactoryContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => MarketFactoryContract = ( - address: string + address: string, ) => { const contract = new ethers.Contract( address, [...marketFactoryAbi], - provider + provider, ) return { create: createCreateCaller(contract), + contract: () => contract, } } @@ -30,7 +33,7 @@ describe('market-factory/index.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/ethereum/market-factory/index.ts b/lib/ethereum/market-factory/index.ts index 7378a61e1..3683bbc59 100644 --- a/lib/ethereum/market-factory/index.ts +++ b/lib/ethereum/market-factory/index.ts @@ -1,27 +1,27 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' import { marketFactoryAbi } from './abi' import { createCreateCaller } from './create' import { FallbackableOverrides } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type MarketFactoryContract = { readonly create: ( marketBehaviorAddress: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise + readonly contract: () => ethers.Contract } export const createMarketFactoryContract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): MarketFactoryContract => { const contract = new ethers.Contract( address, [...marketFactoryAbi], - provider + provider, ) return { create: createCreateCaller(contract), + contract: () => contract, } } diff --git a/lib/ethereum/market/authenticate.ts b/lib/ethereum/market/authenticate.ts index eaef0b5ab..3a73707df 100644 --- a/lib/ethereum/market/authenticate.ts +++ b/lib/ethereum/market/authenticate.ts @@ -4,9 +4,7 @@ /* eslint-disable functional/no-loop-statement */ /* eslint-disable functional/no-expression-statement */ /* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */ -import { Signer } from '@ethersproject/abstract-signer' -import { Provider } from '@ethersproject/abstract-provider' -import { ethers } from 'ethers' +import { ContractRunner, ethers } from 'ethers' import { execute, FallbackableOverrides, @@ -17,7 +15,7 @@ import { metricsFactoryAbi } from '../metrics-factory/abi' export const getMetricsProperty = async ( address: string, - provider: Provider | Signer + provider: ContractRunner, ): Promise => execute({ contract: new ethers.Contract(address, metricsAbi, provider), @@ -31,21 +29,21 @@ export type WaitForEventOptions = { export type CreateAuthenticateCaller = ( contract: ethers.Contract, - provider: Provider | Signer + provider: ContractRunner, ) => ( propertyAddress: string, args: readonly string[], options: WaitForEventOptions, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise export const createAuthenticateCaller: CreateAuthenticateCaller = - (contract: ethers.Contract, provider: Provider | Signer) => + (contract: ethers.Contract, provider: ContractRunner) => async ( propertyAddress: string, args: readonly string[], { metricsFactoryAddress }: WaitForEventOptions, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ): Promise => { await execute({ contract, @@ -58,7 +56,7 @@ export const createAuthenticateCaller: CreateAuthenticateCaller = const metricsFactoryContract = new ethers.Contract( metricsFactoryAddress, metricsFactoryAbi, - provider + provider, ) return new Promise((resolve, reject) => { @@ -66,13 +64,13 @@ export const createAuthenticateCaller: CreateAuthenticateCaller = 'Create', async (_: string, metricsAddress: string) => getMetricsProperty(metricsAddress, provider) - .then((metricsProperty) => { + .then(async (metricsProperty) => { if (metricsProperty === propertyAddress) { - subscriberdContract.removeAllListeners() + ;(await subscriberdContract).removeAllListeners() resolve(metricsAddress) } }) - .catch(reject) + .catch(reject), ) }) } diff --git a/lib/ethereum/market/behavior.ts b/lib/ethereum/market/behavior.ts index 7e16b4925..a83ef230c 100644 --- a/lib/ethereum/market/behavior.ts +++ b/lib/ethereum/market/behavior.ts @@ -4,16 +4,16 @@ import { always } from 'ramda' import { ethers } from 'ethers' export type CreateBehaviorCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createBehaviorCaller: CreateBehaviorCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'behavior', mutation: false, - }) + }), ) diff --git a/lib/ethereum/market/index.ts b/lib/ethereum/market/index.ts index 880bfea35..8de16ce4f 100644 --- a/lib/ethereum/market/index.ts +++ b/lib/ethereum/market/index.ts @@ -1,7 +1,5 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import { ContractRunner, ethers } from 'ethers' +import type { TransactionResponse } from 'ethers' import { marketAbi } from './abi' import { createSchemaCaller } from './schema' import { createVoteCaller } from './vote' @@ -14,7 +12,7 @@ export type CreateMarketContract = { readonly vote: ( propertyAddress: string, agree: boolean, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly authenticate: ( address: string, @@ -22,14 +20,14 @@ export type CreateMarketContract = { options: { readonly metricsFactoryAddress: string }, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly behavior: () => Promise readonly contract: () => ethers.Contract } export const createMarketContract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): CreateMarketContract => { const contract = new ethers.Contract(address, [...marketAbi], provider) return { diff --git a/lib/ethereum/market/schema.ts b/lib/ethereum/market/schema.ts index 6a1820a93..182f47e5c 100644 --- a/lib/ethereum/market/schema.ts +++ b/lib/ethereum/market/schema.ts @@ -3,7 +3,7 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateSchemaCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise type ParsedValue = { readonly v: string @@ -11,7 +11,7 @@ type ParsedValue = { } export const createSchemaCaller: CreateSchemaCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ): (() => Promise) => always( execute({ contract, method: 'schema', mutation: false }).then( @@ -20,7 +20,7 @@ export const createSchemaCaller: CreateSchemaCaller = ( result .split(`'`) .map((v) => ({ v, s: /[[\],:]/.test(v) })) - .reduce((a, c) => `${a}${c.s ? c.v : `"${c.v}"`}`, '') - ) as readonly string[] - ) + .reduce((a, c) => `${a}${c.s ? c.v : `"${c.v}"`}`, ''), + ) as readonly string[], + ), ) diff --git a/lib/ethereum/market/vote.ts b/lib/ethereum/market/vote.ts index 5be3620d4..33ee3b0a4 100644 --- a/lib/ethereum/market/vote.ts +++ b/lib/ethereum/market/vote.ts @@ -1,5 +1,5 @@ import { ethers } from 'ethers' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' import { execute, FallbackableOverrides, @@ -7,25 +7,25 @@ import { } from '../../common/utils/execute' export type CreateVoteCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => ( propertyAddress: string, agree: boolean, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise export const createVoteCaller: CreateVoteCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ): (( propertyAddress: string, agree: boolean, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise) => async ( propertyAddress: string, agree: boolean, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ): Promise => execute({ contract, diff --git a/lib/ethereum/metrics-group/index.spec.ts b/lib/ethereum/metrics-group/index.spec.ts index 45255ed55..a9b690c0d 100644 --- a/lib/ethereum/metrics-group/index.spec.ts +++ b/lib/ethereum/metrics-group/index.spec.ts @@ -2,30 +2,37 @@ import { ethers } from 'ethers' import { createMetricsGroupContract, CreateMetricsGroupContract } from '.' import { metricsGroupAbi } from './abi' import { createTotalAuthenticatedPropertiesCaller } from './totalAuthenticatedProperties' +import { createTotalIssuedMetrics } from './totalIssuedMetrics' jest.mock('./totalAuthenticatedProperties') +jest.mock('./totalIssuedMetrics') +jest.mock('ethers') describe('metrics-group.ts', () => { ;(createTotalAuthenticatedPropertiesCaller as jest.Mock).mockImplementation( - (contract) => contract + () => 123, ) + ;(createTotalIssuedMetrics as jest.Mock).mockImplementation(() => 123) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) describe('createMetricsGroupContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => CreateMetricsGroupContract = ( - address: string + address: string, ) => { const contract = new ethers.Contract( address, [...metricsGroupAbi], - provider + provider, ) return { totalAuthenticatedProperties: createTotalAuthenticatedPropertiesCaller(contract), + totalIssuedMetrics: createTotalIssuedMetrics(contract), + contract: () => contract, } } @@ -33,7 +40,7 @@ describe('metrics-group.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/ethereum/metrics-group/index.ts b/lib/ethereum/metrics-group/index.ts index 2b366aa79..9e2c6fc3a 100644 --- a/lib/ethereum/metrics-group/index.ts +++ b/lib/ethereum/metrics-group/index.ts @@ -1,24 +1,27 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' import { metricsGroupAbi } from './abi' import { createTotalAuthenticatedPropertiesCaller } from './totalAuthenticatedProperties' +import { createTotalIssuedMetrics } from './totalIssuedMetrics' export type CreateMetricsGroupContract = { readonly totalAuthenticatedProperties: () => Promise + readonly totalIssuedMetrics: () => Promise + readonly contract: () => ethers.Contract } export const createMetricsGroupContract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): CreateMetricsGroupContract => { const contract = new ethers.Contract( address, [...metricsGroupAbi], - provider + provider, ) return { totalAuthenticatedProperties: createTotalAuthenticatedPropertiesCaller(contract), + totalIssuedMetrics: createTotalIssuedMetrics(contract), + contract: () => contract, } } diff --git a/lib/ethereum/metrics-group/totalAuthenticatedProperties.spec.ts b/lib/ethereum/metrics-group/totalAuthenticatedProperties.spec.ts index 1365635e3..a8872758a 100644 --- a/lib/ethereum/metrics-group/totalAuthenticatedProperties.spec.ts +++ b/lib/ethereum/metrics-group/totalAuthenticatedProperties.spec.ts @@ -15,7 +15,7 @@ describe('totalAuthenticatedProperties.spec.ts', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createTotalAuthenticatedPropertiesCaller( - metricsGroupContract as any + metricsGroupContract as any, ) const result = await caller() @@ -34,7 +34,7 @@ describe('totalAuthenticatedProperties.spec.ts', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createTotalAuthenticatedPropertiesCaller( - metricsGroupContract as any + metricsGroupContract as any, ) const result = await caller().catch((err) => err) diff --git a/lib/ethereum/metrics-group/totalAuthenticatedProperties.ts b/lib/ethereum/metrics-group/totalAuthenticatedProperties.ts index 6fdfcc172..bc25912c9 100644 --- a/lib/ethereum/metrics-group/totalAuthenticatedProperties.ts +++ b/lib/ethereum/metrics-group/totalAuthenticatedProperties.ts @@ -3,7 +3,7 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateTotalAuthenticatedPropertiesCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createTotalAuthenticatedPropertiesCaller: CreateTotalAuthenticatedPropertiesCaller = @@ -13,5 +13,5 @@ export const createTotalAuthenticatedPropertiesCaller: CreateTotalAuthenticatedP contract, method: 'totalAuthenticatedProperties', mutation: false, - }) + }), ) diff --git a/lib/ethereum/metrics-group/totalIssuedMetrics.spec.ts b/lib/ethereum/metrics-group/totalIssuedMetrics.spec.ts new file mode 100644 index 000000000..7b4cebc3d --- /dev/null +++ b/lib/ethereum/metrics-group/totalIssuedMetrics.spec.ts @@ -0,0 +1,41 @@ +import { createTotalIssuedMetrics } from './totalIssuedMetrics' + +describe('totalIssuedMetrics.spec.ts', () => { + describe('createTotalIssuedMetrics', () => { + it('call success', async () => { + const value = 'value' + + const metricsGroupContract = { + totalIssuedMetrics: jest + .fn() + .mockImplementation(async () => Promise.resolve(value)), + } + + const expected = value + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createTotalIssuedMetrics(metricsGroupContract as any) + + const result = await caller() + + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const error = 'error' + + const metricsGroupContract = { + totalIssuedMetrics: jest + .fn() + .mockImplementation(async () => Promise.reject(error)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createTotalIssuedMetrics(metricsGroupContract as any) + + const result = await caller().catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/ethereum/metrics-group/totalIssuedMetrics.ts b/lib/ethereum/metrics-group/totalIssuedMetrics.ts new file mode 100644 index 000000000..507d8565c --- /dev/null +++ b/lib/ethereum/metrics-group/totalIssuedMetrics.ts @@ -0,0 +1,18 @@ +import { ethers } from 'ethers' +import { execute, QueryOption } from '../../common/utils/execute' +import { always } from 'ramda' + +export type CreateTotalIssuedMetrics = ( + contract: ethers.Contract, +) => () => Promise + +export const createTotalIssuedMetrics: CreateTotalIssuedMetrics = ( + contract: ethers.Contract, +) => + always( + execute({ + contract, + method: 'totalIssuedMetrics', + mutation: false, + }), + ) diff --git a/lib/ethereum/metrics/index.spec.ts b/lib/ethereum/metrics/index.spec.ts index 5862e8ee3..cd0a0b659 100644 --- a/lib/ethereum/metrics/index.spec.ts +++ b/lib/ethereum/metrics/index.spec.ts @@ -6,25 +6,26 @@ import { metricsAbi } from './abi' jest.mock('./property') jest.mock('./market') +jest.mock('ethers') describe('metrics/index.ts', () => { - ;(createPropertyCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createMarketCaller as jest.Mock).mockImplementation((contract) => contract) + ;(createPropertyCaller as jest.Mock).mockImplementation(() => 123) + ;(createMarketCaller as jest.Mock).mockImplementation(() => 123) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) describe('createMetricsContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => CreateMetricsContract = ( - address: string + address: string, ) => { const contract = new ethers.Contract(address, [...metricsAbi], provider) return { property: createPropertyCaller(contract), market: createMarketCaller(contract), + contract: () => contract, } } @@ -32,7 +33,7 @@ describe('metrics/index.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/ethereum/metrics/index.ts b/lib/ethereum/metrics/index.ts index 647e32838..4b248ca24 100644 --- a/lib/ethereum/metrics/index.ts +++ b/lib/ethereum/metrics/index.ts @@ -1,6 +1,4 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' import { metricsAbi } from './abi' import { createPropertyCaller } from './property' import { createMarketCaller } from './market' @@ -8,16 +6,18 @@ import { createMarketCaller } from './market' export type CreateMetricsContract = { readonly property: () => Promise readonly market: () => Promise + readonly contract: () => ethers.Contract } // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types export const createMetricsContract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): CreateMetricsContract => { const contract = new ethers.Contract(address, [...metricsAbi], provider) return { property: createPropertyCaller(contract), market: createMarketCaller(contract), + contract: () => contract, } } diff --git a/lib/ethereum/metrics/market.ts b/lib/ethereum/metrics/market.ts index 1588c1e0d..a8f827062 100644 --- a/lib/ethereum/metrics/market.ts +++ b/lib/ethereum/metrics/market.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateMarketCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createMarketCaller: CreateMarketCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'market', mutation: false, - }) + }), ) diff --git a/lib/ethereum/metrics/property.ts b/lib/ethereum/metrics/property.ts index e8cd89454..2ba5d7e80 100644 --- a/lib/ethereum/metrics/property.ts +++ b/lib/ethereum/metrics/property.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreatePropertyCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createPropertyCaller: CreatePropertyCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'property', mutation: false, - }) + }), ) diff --git a/lib/ethereum/policy-factory/create.ts b/lib/ethereum/policy-factory/create.ts index e16ed1b85..6d3f9ddad 100644 --- a/lib/ethereum/policy-factory/create.ts +++ b/lib/ethereum/policy-factory/create.ts @@ -4,13 +4,13 @@ import { FallbackableOverrides, MutationOption, } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type CreateCreateCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => ( newPolicyAddress: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise export const createCreateCaller: CreateCreateCaller = diff --git a/lib/ethereum/policy-factory/forceAttach.ts b/lib/ethereum/policy-factory/forceAttach.ts index 9ab9d6e11..c128f6d59 100644 --- a/lib/ethereum/policy-factory/forceAttach.ts +++ b/lib/ethereum/policy-factory/forceAttach.ts @@ -4,13 +4,13 @@ import { FallbackableOverrides, MutationOption, } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type CreateForceAttachCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => ( policy: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise export const createForceAttachCaller: CreateForceAttachCaller = diff --git a/lib/ethereum/policy-factory/index.spec.ts b/lib/ethereum/policy-factory/index.spec.ts index f6dbc168c..a45489571 100644 --- a/lib/ethereum/policy-factory/index.spec.ts +++ b/lib/ethereum/policy-factory/index.spec.ts @@ -4,25 +4,34 @@ import { policyFactoryAbi } from './abi' import { createCreateCaller } from './create' import { createForceAttachCaller } from './forceAttach' +jest.mock('./create') +jest.mock('./forceAttach') +jest.mock('ethers') + describe('policy/index.ts', () => { + ;(createCreateCaller as jest.Mock).mockImplementation(() => 123) + ;(createForceAttachCaller as jest.Mock).mockImplementation(() => 123) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) + describe('createPolicyContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => PolicyFactoryContract = ( - address: string + address: string, ) => { const contract = new ethers.Contract( address, [...policyFactoryAbi], - provider + provider, ) return { create: createCreateCaller(contract), forceAttach: createForceAttachCaller(contract), + contract: () => contract, } } @@ -30,7 +39,7 @@ describe('policy/index.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/ethereum/policy-factory/index.ts b/lib/ethereum/policy-factory/index.ts index feac091d1..3e07b268c 100644 --- a/lib/ethereum/policy-factory/index.ts +++ b/lib/ethereum/policy-factory/index.ts @@ -1,37 +1,37 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' import { policyFactoryAbi } from './abi' import { createCreateCaller } from './create' import { createForceAttachCaller } from './forceAttach' import { FallbackableOverrides } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type PolicyFactoryContract = { readonly create: ( newPolicyAddress: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly forceAttach: ( policy: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise + readonly contract: () => ethers.Contract } export type CreatePolicyFactoryContract = ( - provider: Provider | Signer + provider: ContractRunner, ) => (address: string) => PolicyFactoryContract export const createPolicyFactoryContract: CreatePolicyFactoryContract = - (provider: Provider | Signer) => (address: string) => { + (provider: ContractRunner) => (address: string) => { const contract = new ethers.Contract( address, [...policyFactoryAbi], - provider + provider, ) return { create: createCreateCaller(contract), forceAttach: createForceAttachCaller(contract), + contract: () => contract, } } diff --git a/lib/ethereum/policy-group/index.spec.ts b/lib/ethereum/policy-group/index.spec.ts index 0e1ea2c04..3a255a6af 100644 --- a/lib/ethereum/policy-group/index.spec.ts +++ b/lib/ethereum/policy-group/index.spec.ts @@ -6,31 +6,32 @@ import { policyGroupAbi } from './abi' jest.mock('./isGroup') jest.mock('./isDuringVotingPeriod') +jest.mock('ethers') describe('policy-group/index.ts', () => { - ;(createIsGroupCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createIsDuringVotingPeriodCaller as jest.Mock).mockImplementation( - (contract) => contract - ) + ;(createIsGroupCaller as jest.Mock).mockImplementation(() => 123) + ;(createIsDuringVotingPeriodCaller as jest.Mock).mockImplementation(() => 123) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) describe('createPolicyGroupContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => PolicyGroupContract = ( - address: string + address: string, ) => { const contract = new ethers.Contract( address, [...policyGroupAbi], - provider + provider, ) return { isGroup: createIsGroupCaller(contract), isDuringVotingPeriod: createIsDuringVotingPeriodCaller(contract), + contract: () => contract, } } @@ -38,7 +39,7 @@ describe('policy-group/index.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/ethereum/policy-group/index.ts b/lib/ethereum/policy-group/index.ts index 65ba894f6..aea1627a5 100644 --- a/lib/ethereum/policy-group/index.ts +++ b/lib/ethereum/policy-group/index.ts @@ -1,23 +1,23 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' import { policyGroupAbi } from './abi' import { createIsGroupCaller } from './isGroup' export type PolicyGroupContract = { readonly isGroup: (policyAddress: string) => Promise readonly isDuringVotingPeriod: (policyAddress: string) => Promise + readonly contract: () => ethers.Contract } export type CreatePolicyGroupContract = ( - provider: Provider | Signer + provider: ContractRunner, ) => (address: string) => PolicyGroupContract export const createPolicyGroupContract: CreatePolicyGroupContract = - (provider: Provider | Signer) => (address: string) => { + (provider: ContractRunner) => (address: string) => { const contract = new ethers.Contract(address, [...policyGroupAbi], provider) return { isGroup: createIsGroupCaller(contract), isDuringVotingPeriod: createIsGroupCaller(contract), + contract: () => contract, } } diff --git a/lib/ethereum/policy-group/isDuringVotingPeriod.spec.ts b/lib/ethereum/policy-group/isDuringVotingPeriod.spec.ts index 3a487a8a9..c9d6ca458 100644 --- a/lib/ethereum/policy-group/isDuringVotingPeriod.spec.ts +++ b/lib/ethereum/policy-group/isDuringVotingPeriod.spec.ts @@ -16,7 +16,7 @@ describe('isDuringVotingPeriod.spec.ts', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createIsDuringVotingPeriodCaller( - policyGroupContract as any + policyGroupContract as any, ) const result = await caller('0x0') @@ -36,7 +36,7 @@ describe('isDuringVotingPeriod.spec.ts', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createIsDuringVotingPeriodCaller( - policyGroupContract as any + policyGroupContract as any, ) const result = await caller('0x0').catch((err) => err) diff --git a/lib/ethereum/policy-group/isDuringVotingPeriod.ts b/lib/ethereum/policy-group/isDuringVotingPeriod.ts index 716221d9a..39b1a4867 100644 --- a/lib/ethereum/policy-group/isDuringVotingPeriod.ts +++ b/lib/ethereum/policy-group/isDuringVotingPeriod.ts @@ -7,7 +7,7 @@ import { import { T } from 'ramda' export type CreateIsDuringVotingPeriodCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (policyAddress: string) => Promise export const createIsDuringVotingPeriodCaller: CreateIsDuringVotingPeriodCaller = diff --git a/lib/ethereum/policy-group/isGroup.ts b/lib/ethereum/policy-group/isGroup.ts index 6a3e0196d..724773f7b 100644 --- a/lib/ethereum/policy-group/isGroup.ts +++ b/lib/ethereum/policy-group/isGroup.ts @@ -3,7 +3,7 @@ import { execute, QueryOption } from '../../common/utils/execute' import { T } from 'ramda' export type CreateIsGroupCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (policyAddress: string) => Promise export const createIsGroupCaller: CreateIsGroupCaller = diff --git a/lib/ethereum/policy/authenticationFee.spec.ts b/lib/ethereum/policy/authenticationFee.spec.ts index 4be85913f..879c94524 100644 --- a/lib/ethereum/policy/authenticationFee.spec.ts +++ b/lib/ethereum/policy/authenticationFee.spec.ts @@ -8,7 +8,7 @@ describe('authenticationFee.spec.ts', () => { const policyContract = { authenticationFee: jest.fn().mockImplementation( // eslint-disable-next-line @typescript-eslint/no-unused-vars - async (assets: string, propertyAssets: string) => value + async (assets: string, propertyAssets: string) => value, ), } @@ -30,7 +30,7 @@ describe('authenticationFee.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (assets: string, propertyAssets: string) => - Promise.reject(error) + Promise.reject(error), ), } @@ -38,7 +38,7 @@ describe('authenticationFee.spec.ts', () => { const caller = createAuthenticationFeeCaller(policyContract as any) const result = await caller('111111111111', '2222222222').catch( - (err) => err + (err) => err, ) expect(result).toEqual(error) diff --git a/lib/ethereum/policy/authenticationFee.ts b/lib/ethereum/policy/authenticationFee.ts index c27e49d59..605bb0305 100644 --- a/lib/ethereum/policy/authenticationFee.ts +++ b/lib/ethereum/policy/authenticationFee.ts @@ -2,7 +2,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type CreateAuthenticationFeeCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (assets: string, propertyAssets: string) => Promise export const createAuthenticationFeeCaller: CreateAuthenticationFeeCaller = diff --git a/lib/ethereum/policy/capSetter.ts b/lib/ethereum/policy/capSetter.ts index cb345a799..11865ba14 100644 --- a/lib/ethereum/policy/capSetter.ts +++ b/lib/ethereum/policy/capSetter.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateCapSetterCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createCapSetterCaller: CreateCapSetterCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'capSetter', mutation: false, - }) + }), ) diff --git a/lib/ethereum/policy/holdersShare.spec.ts b/lib/ethereum/policy/holdersShare.spec.ts index 64e7df78a..cf995ba16 100644 --- a/lib/ethereum/policy/holdersShare.spec.ts +++ b/lib/ethereum/policy/holdersShare.spec.ts @@ -30,7 +30,7 @@ describe('holdersShare.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (amount: string, lockups: string) => - Promise.reject(error) + Promise.reject(error), ), } @@ -38,7 +38,7 @@ describe('holdersShare.spec.ts', () => { const caller = createHoldersShareCaller(policyContract as any) const result = await caller('111111111111', '2222222222').catch( - (err) => err + (err) => err, ) expect(result).toEqual(error) diff --git a/lib/ethereum/policy/holdersShare.ts b/lib/ethereum/policy/holdersShare.ts index dcce67024..8ac8b08ad 100644 --- a/lib/ethereum/policy/holdersShare.ts +++ b/lib/ethereum/policy/holdersShare.ts @@ -2,7 +2,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type CreateHoldersShareCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (amount: string, lockups: string) => Promise export const createHoldersShareCaller: CreateHoldersShareCaller = diff --git a/lib/ethereum/policy/index.spec.ts b/lib/ethereum/policy/index.spec.ts index a6431b253..26ff84563 100644 --- a/lib/ethereum/policy/index.spec.ts +++ b/lib/ethereum/policy/index.spec.ts @@ -18,38 +18,26 @@ jest.mock('./policyVotingBlocks') jest.mock('./shareOfTreasury') jest.mock('./treasury') jest.mock('./capSetter') +jest.mock('ethers') describe('policy/index.ts', () => { - ;(createHoldersShareCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createRewardsCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createAuthenticationFeeCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createMarketVotingBlocksCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createPolicyVotingBlocksCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createShareOfTreasuryCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createTreasuryCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createCapSetterCaller as jest.Mock).mockImplementation( - (contract) => contract - ) + ;(createHoldersShareCaller as jest.Mock).mockImplementation(() => 123) + ;(createRewardsCaller as jest.Mock).mockImplementation(() => 123) + ;(createAuthenticationFeeCaller as jest.Mock).mockImplementation(() => 123) + ;(createMarketVotingBlocksCaller as jest.Mock).mockImplementation(() => 123) + ;(createPolicyVotingBlocksCaller as jest.Mock).mockImplementation(() => 123) + ;(createShareOfTreasuryCaller as jest.Mock).mockImplementation(() => 123) + ;(createTreasuryCaller as jest.Mock).mockImplementation(() => 123) + ;(createCapSetterCaller as jest.Mock).mockImplementation(() => 123) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) describe('createPolicyContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => PolicyContract = ( - address: string + address: string, ) => { const contract = new ethers.Contract(address, [...policyAbi], provider) @@ -62,6 +50,7 @@ describe('policy/index.ts', () => { shareOfTreasury: createShareOfTreasuryCaller(contract), treasury: createTreasuryCaller(contract), capSetter: createCapSetterCaller(contract), + contract: () => contract, } } @@ -69,7 +58,7 @@ describe('policy/index.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/ethereum/policy/index.ts b/lib/ethereum/policy/index.ts index dd79fd5fb..2a697c055 100644 --- a/lib/ethereum/policy/index.ts +++ b/lib/ethereum/policy/index.ts @@ -1,6 +1,4 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' import { policyAbi } from './abi' import { createHoldersShareCaller } from './holdersShare' import { createRewardsCaller } from './rewards' @@ -16,17 +14,18 @@ export type PolicyContract = { readonly rewards: (lockups: string, assets: string) => Promise readonly authenticationFee: ( assets: string, - propertyAssets: string + propertyAssets: string, ) => Promise readonly marketVotingBlocks: () => Promise readonly policyVotingBlocks: () => Promise readonly shareOfTreasury: (supply: string) => Promise readonly treasury: () => Promise readonly capSetter: () => Promise + readonly contract: () => ethers.Contract } export const createPolicyContract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): PolicyContract => { const contract = new ethers.Contract(address, [...policyAbi], provider) @@ -39,5 +38,6 @@ export const createPolicyContract = shareOfTreasury: createShareOfTreasuryCaller(contract), treasury: createTreasuryCaller(contract), capSetter: createCapSetterCaller(contract), + contract: () => contract, } } diff --git a/lib/ethereum/policy/marketVotingBlocks.ts b/lib/ethereum/policy/marketVotingBlocks.ts index dd91c325b..db14e4619 100644 --- a/lib/ethereum/policy/marketVotingBlocks.ts +++ b/lib/ethereum/policy/marketVotingBlocks.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateMarketVotingBlocksCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createMarketVotingBlocksCaller: CreateMarketVotingBlocksCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'marketVotingBlocks', mutation: false, - }) + }), ) diff --git a/lib/ethereum/policy/policyVotingBlocks.ts b/lib/ethereum/policy/policyVotingBlocks.ts index 9753f1755..1863100c3 100644 --- a/lib/ethereum/policy/policyVotingBlocks.ts +++ b/lib/ethereum/policy/policyVotingBlocks.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreatePolicyVotingBlocksCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createPolicyVotingBlocksCaller: CreatePolicyVotingBlocksCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'policyVotingBlocks', mutation: false, - }) + }), ) diff --git a/lib/ethereum/policy/rewards.spec.ts b/lib/ethereum/policy/rewards.spec.ts index 7f71387da..b51b635de 100644 --- a/lib/ethereum/policy/rewards.spec.ts +++ b/lib/ethereum/policy/rewards.spec.ts @@ -30,7 +30,7 @@ describe('rewards.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (lockups: string, assets: string) => - Promise.reject(error) + Promise.reject(error), ), } @@ -38,7 +38,7 @@ describe('rewards.spec.ts', () => { const caller = createRewardsCaller(policyContract as any) const result = await caller('111111111111', '2222222222').catch( - (err) => err + (err) => err, ) expect(result).toEqual(error) diff --git a/lib/ethereum/policy/rewards.ts b/lib/ethereum/policy/rewards.ts index 444aa6b94..24fc50549 100644 --- a/lib/ethereum/policy/rewards.ts +++ b/lib/ethereum/policy/rewards.ts @@ -2,7 +2,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type CreateRewardsCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (lockups: string, assets: string) => Promise export const createRewardsCaller: CreateRewardsCaller = diff --git a/lib/ethereum/policy/shareOfTreasury.ts b/lib/ethereum/policy/shareOfTreasury.ts index 11bafcbbd..8ffc42970 100644 --- a/lib/ethereum/policy/shareOfTreasury.ts +++ b/lib/ethereum/policy/shareOfTreasury.ts @@ -2,7 +2,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type CreateShareOfTreasuryCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (supply: string) => Promise export const createShareOfTreasuryCaller: CreateShareOfTreasuryCaller = diff --git a/lib/ethereum/policy/treasury.ts b/lib/ethereum/policy/treasury.ts index 0926c1da7..45911e7c2 100644 --- a/lib/ethereum/policy/treasury.ts +++ b/lib/ethereum/policy/treasury.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateTreasuryCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createTreasuryCaller: CreateTreasuryCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'treasury', mutation: false, - }) + }), ) diff --git a/lib/ethereum/property-factory/create.ts b/lib/ethereum/property-factory/create.ts index 368d48661..062bc7b2b 100644 --- a/lib/ethereum/property-factory/create.ts +++ b/lib/ethereum/property-factory/create.ts @@ -8,12 +8,12 @@ import { } from '../../common/utils/execute' export type CreateCreatePropertyCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => ( name: string, symbol: string, author: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise export const createCreatePropertyCaller: CreateCreatePropertyCaller = @@ -22,7 +22,7 @@ export const createCreatePropertyCaller: CreateCreatePropertyCaller = name: string, symbol: string, author: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ): Promise => { await execute({ contract, @@ -36,9 +36,9 @@ export const createCreatePropertyCaller: CreateCreatePropertyCaller = const subscribedContract = contract.on( 'Create', async (_: string, propertyAddress: string) => { - subscribedContract.removeAllListeners() + ;(await subscribedContract).removeAllListeners() resolve(propertyAddress) - } + }, ) }) } diff --git a/lib/ethereum/property-factory/createAndAuthenticate.ts b/lib/ethereum/property-factory/createAndAuthenticate.ts index 80b6cd0e5..556334934 100644 --- a/lib/ethereum/property-factory/createAndAuthenticate.ts +++ b/lib/ethereum/property-factory/createAndAuthenticate.ts @@ -2,23 +2,22 @@ /* eslint-disable functional/no-expression-statement */ /* eslint-disable functional/no-conditional-statement */ /* eslint-disable functional/functional-parameters */ -import { Provider } from '@ethersproject/abstract-provider' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' import { execute, FallbackableOverrides } from '../../common/utils/execute' -import { ethers } from 'ethers' +import { ContractRunner, ethers } from 'ethers' import { getMetricsProperty, WaitForEventOptions } from '../market/authenticate' import { metricsFactoryAbi } from '../metrics-factory/abi' export type CreateCreateAndAuthenticateCaller = ( contract: ethers.Contract, - provider: Provider + provider: ContractRunner, ) => ( name: string, symbol: string, marketAddress: string, args: readonly string[], options: WaitForEventOptions, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise<{ readonly property: string readonly transaction: TransactionResponse @@ -27,14 +26,14 @@ export type CreateCreateAndAuthenticateCaller = ( export const createCreateAndAuthenticateCaller: CreateCreateAndAuthenticateCaller = - (contract: ethers.Contract, provider: Provider) => + (contract: ethers.Contract, provider: ContractRunner) => async ( name: string, symbol: string, marketAddress: string, args: readonly string[], { metricsFactoryAddress }: WaitForEventOptions, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ): Promise<{ readonly property: string readonly transaction: TransactionResponse @@ -52,7 +51,7 @@ export const createCreateAndAuthenticateCaller: CreateCreateAndAuthenticateCalle const metricsFactoryContract = new ethers.Contract( metricsFactoryAddress, metricsFactoryAbi, - provider + provider, ) const waitForAuthentication = (): Promise => @@ -61,13 +60,13 @@ export const createCreateAndAuthenticateCaller: CreateCreateAndAuthenticateCalle 'Create', async (_: string, metricsAddress: string) => getMetricsProperty(metricsAddress, provider) - .then((metricsProperty) => { + .then(async (metricsProperty) => { if (metricsProperty === marketAddress) { - subscriberdContract.removeAllListeners() + ;(await subscriberdContract).removeAllListeners() resolve(metricsAddress) } }) - .catch(reject) + .catch(reject), ) }) @@ -75,13 +74,13 @@ export const createCreateAndAuthenticateCaller: CreateCreateAndAuthenticateCalle const subscribedContract = contract.on( 'Create', async (_: string, propertyAddress: string) => { - subscribedContract.removeAllListeners() + ;(await subscribedContract).removeAllListeners() resolve({ property: propertyAddress, transaction, waitForAuthentication, }) - } + }, ) }) } diff --git a/lib/ethereum/property-factory/index.spec.ts b/lib/ethereum/property-factory/index.spec.ts index 863b3f909..1b551d01a 100644 --- a/lib/ethereum/property-factory/index.spec.ts +++ b/lib/ethereum/property-factory/index.spec.ts @@ -6,34 +6,35 @@ import { createCreateAndAuthenticateCaller } from './createAndAuthenticate' jest.mock('./create') jest.mock('./createAndAuthenticate') +jest.mock('ethers') describe('property/index.ts', () => { - ;(createCreatePropertyCaller as jest.Mock).mockImplementation( - (contract) => contract - ) + ;(createCreatePropertyCaller as jest.Mock).mockImplementation(() => 123) ;(createCreateAndAuthenticateCaller as jest.Mock).mockImplementation( - (contract) => contract + () => 123, ) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) describe('createPropertyFactoryContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => PropertyFactoryContract = ( - address: string + address: string, ) => { const contract = new ethers.Contract( address, [...propertyFactoryAbi], - provider + provider, ) return { create: createCreatePropertyCaller(contract), createAndAuthenticate: createCreateAndAuthenticateCaller( contract, - provider + provider, ), + contract: () => contract, } } @@ -41,7 +42,7 @@ describe('property/index.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/ethereum/property-factory/index.ts b/lib/ethereum/property-factory/index.ts index 674c27eba..5eacbb36d 100644 --- a/lib/ethereum/property-factory/index.ts +++ b/lib/ethereum/property-factory/index.ts @@ -1,6 +1,5 @@ -import { ethers } from 'ethers' -import { Provider, TransactionResponse } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' +import type { TransactionResponse } from 'ethers' import { propertyFactoryAbi } from './abi' import { createCreatePropertyCaller } from './create' import { WaitForEventOptions } from '../market/authenticate' @@ -12,7 +11,7 @@ export type PropertyFactoryContract = { name: string, symbol: string, author: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly createAndAuthenticate: ( name: string, @@ -20,28 +19,30 @@ export type PropertyFactoryContract = { marketAddress: string, args: readonly string[], options: WaitForEventOptions, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise<{ readonly property: string readonly transaction: TransactionResponse readonly waitForAuthentication: () => Promise }> + readonly contract: () => ethers.Contract } export const createPropertyFactoryContract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): PropertyFactoryContract => { const contract = new ethers.Contract( address, [...propertyFactoryAbi], - provider + provider, ) return { create: createCreatePropertyCaller(contract), createAndAuthenticate: createCreateAndAuthenticateCaller( contract, - provider as Provider + provider, ), + contract: () => contract, } } diff --git a/lib/ethereum/property/author.ts b/lib/ethereum/property/author.ts index 247752766..098bbc0e1 100644 --- a/lib/ethereum/property/author.ts +++ b/lib/ethereum/property/author.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateAuthorCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createAuthorCaller: CreateAuthorCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'author', mutation: false, - }) + }), ) diff --git a/lib/ethereum/property/changeAuthor.ts b/lib/ethereum/property/changeAuthor.ts index 287059e17..da6af6546 100644 --- a/lib/ethereum/property/changeAuthor.ts +++ b/lib/ethereum/property/changeAuthor.ts @@ -4,13 +4,13 @@ import { FallbackableOverrides, MutationOption, } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type CreateChangeAuthorCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => ( nextAuther: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise export const createChangeAuthorCaller: CreateChangeAuthorCaller = diff --git a/lib/ethereum/property/changeName.ts b/lib/ethereum/property/changeName.ts index b5aef9f83..b1c1d8bb4 100644 --- a/lib/ethereum/property/changeName.ts +++ b/lib/ethereum/property/changeName.ts @@ -4,13 +4,13 @@ import { FallbackableOverrides, MutationOption, } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type CreateChangeNameCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => ( nextAuther: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise export const createChangeNameCaller: CreateChangeNameCaller = diff --git a/lib/ethereum/property/changeSymbol.ts b/lib/ethereum/property/changeSymbol.ts index 54db1a217..43ea55504 100644 --- a/lib/ethereum/property/changeSymbol.ts +++ b/lib/ethereum/property/changeSymbol.ts @@ -4,13 +4,13 @@ import { FallbackableOverrides, MutationOption, } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type CreateChangeSymbolCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => ( nextAuther: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise export const createChangeSymbolCaller: CreateChangeSymbolCaller = diff --git a/lib/ethereum/property/index.spec.ts b/lib/ethereum/property/index.spec.ts index 9886618b4..01dd0495c 100644 --- a/lib/ethereum/property/index.spec.ts +++ b/lib/ethereum/property/index.spec.ts @@ -28,52 +28,36 @@ jest.mock('./../../common/erc20/transferFrom') jest.mock('./../../common/erc20/balanceOf') jest.mock('./../../common/erc20/approve') jest.mock('./../../common/erc20/allowance') +jest.mock('ethers') describe('property/index.ts', () => { - ;(createAuthorCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createChangeNameCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createChangeSymbolCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createChangeAuthorCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createTransferCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createNameCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createSymbolCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createTotalSupplyCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createDecimalsCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createTransferFromCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createBalanceOfCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createApproveCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createAllowanceCaller as jest.Mock).mockImplementation( - (contract) => contract - ) + ;(createAuthorCaller as jest.Mock).mockImplementation(() => 123) + ;(createChangeNameCaller as jest.Mock).mockImplementation(() => 123) + ;(createChangeSymbolCaller as jest.Mock).mockImplementation(() => 123) + ;(createChangeAuthorCaller as jest.Mock).mockImplementation(() => 123) + ;(createTransferCaller as jest.Mock).mockImplementation(() => 123) + ;(createNameCaller as jest.Mock).mockImplementation(() => 123) + ;(createSymbolCaller as jest.Mock).mockImplementation(() => 123) + ;(createTotalSupplyCaller as jest.Mock).mockImplementation(() => 123) + ;(createDecimalsCaller as jest.Mock).mockImplementation(() => 123) + ;(createTransferFromCaller as jest.Mock).mockImplementation(() => 123) + ;(createBalanceOfCaller as jest.Mock).mockImplementation(() => 123) + ;(createApproveCaller as jest.Mock).mockImplementation(() => 123) + ;(createAllowanceCaller as jest.Mock).mockImplementation(() => 123) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) describe('createPropertyContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => PropertyContract = ( - address: string + address: string, ) => { const contract = new ethers.Contract( address, [...propertyAbi], - provider + provider, ) return { totalSupply: createTotalSupplyCaller(contract), @@ -97,7 +81,7 @@ describe('property/index.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/ethereum/property/index.ts b/lib/ethereum/property/index.ts index da06b4e9d..1cccc875f 100644 --- a/lib/ethereum/property/index.ts +++ b/lib/ethereum/property/index.ts @@ -1,6 +1,4 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' import { propertyAbi } from './abi' import { createAuthorCaller } from './author' import { createChangeAuthorCaller } from './changeAuthor' @@ -16,7 +14,7 @@ import { createBalanceOfCaller } from '../../common/erc20/balanceOf' import { createApproveCaller } from '../../common/erc20/approve' import { createAllowanceCaller } from '../../common/erc20/allowance' import { FallbackableOverrides } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type PropertyContract = { readonly totalSupply: () => Promise @@ -24,19 +22,19 @@ export type PropertyContract = { readonly transfer: ( to: string, value: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly allowance: (from: string, to: string) => Promise readonly approve: ( to: string, value: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly transferFrom: ( from: string, to: string, value: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly name: () => Promise readonly symbol: () => Promise @@ -44,24 +42,25 @@ export type PropertyContract = { readonly author: () => Promise readonly changeAuthor: ( nextAuthor: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly changeName: ( nextName: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly changeSymbol: ( nextSymbol: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise + readonly contract: () => ethers.Contract } export type CreatePropertyContract = ( - provider: Provider | Signer + provider: ContractRunner, ) => (address: string) => PropertyContract export const createPropertyContract: CreatePropertyContract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): PropertyContract => { const contract = new ethers.Contract(address, [...propertyAbi], provider) @@ -79,5 +78,6 @@ export const createPropertyContract: CreatePropertyContract = changeAuthor: createChangeAuthorCaller(contract), changeName: createChangeNameCaller(contract), changeSymbol: createChangeSymbolCaller(contract), + contract: () => contract, } } diff --git a/lib/ethereum/registry/allocator.ts b/lib/ethereum/registry/allocator.ts index d7ca54e0c..25bc1366e 100644 --- a/lib/ethereum/registry/allocator.ts +++ b/lib/ethereum/registry/allocator.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateAllocatorCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createAllocatorCaller: CreateAllocatorCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'allocator', mutation: false, - }) + }), ) diff --git a/lib/ethereum/registry/allocatorStorage.ts b/lib/ethereum/registry/allocatorStorage.ts index 753959193..92ef18933 100644 --- a/lib/ethereum/registry/allocatorStorage.ts +++ b/lib/ethereum/registry/allocatorStorage.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateAllocatorStorageCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createAllocatorStorageCaller: CreateAllocatorStorageCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'allocatorStorage', mutation: false, - }) + }), ) diff --git a/lib/ethereum/registry/index.spec.ts b/lib/ethereum/registry/index.spec.ts index d444d20de..b7a8aeef9 100644 --- a/lib/ethereum/registry/index.spec.ts +++ b/lib/ethereum/registry/index.spec.ts @@ -36,66 +36,40 @@ jest.mock('./withdrawStorage') jest.mock('./policyFactory') jest.mock('./policySet') jest.mock('./policyGroup') +jest.mock('ethers') describe('registry/index.ts', () => { - ;(createTokenCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createAllocatorCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createAllocatorStorageCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createLockupCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createLockupStorageCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createMarketFactoryCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createMarketGroupCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createMetricsFactoryCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createMetricsGroupCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createPolicyCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createPropertyFactoryCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createPropertyGroupCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createWithdrawCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createWithdrawStorageCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createPolicyFactoryCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createPolicySetCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createPolicyGroupCaller as jest.Mock).mockImplementation( - (contract) => contract - ) + ;(createTokenCaller as jest.Mock).mockImplementation(() => 123) + ;(createAllocatorCaller as jest.Mock).mockImplementation(() => 123) + ;(createAllocatorStorageCaller as jest.Mock).mockImplementation(() => 123) + ;(createLockupCaller as jest.Mock).mockImplementation(() => 123) + ;(createLockupStorageCaller as jest.Mock).mockImplementation(() => 123) + ;(createMarketFactoryCaller as jest.Mock).mockImplementation(() => 123) + ;(createMarketGroupCaller as jest.Mock).mockImplementation(() => 123) + ;(createMetricsFactoryCaller as jest.Mock).mockImplementation(() => 123) + ;(createMetricsGroupCaller as jest.Mock).mockImplementation(() => 123) + ;(createPolicyCaller as jest.Mock).mockImplementation(() => 123) + ;(createPropertyFactoryCaller as jest.Mock).mockImplementation(() => 123) + ;(createPropertyGroupCaller as jest.Mock).mockImplementation(() => 123) + ;(createWithdrawCaller as jest.Mock).mockImplementation(() => 123) + ;(createWithdrawStorageCaller as jest.Mock).mockImplementation(() => 123) + ;(createPolicyFactoryCaller as jest.Mock).mockImplementation(() => 123) + ;(createPolicySetCaller as jest.Mock).mockImplementation(() => 123) + ;(createPolicyGroupCaller as jest.Mock).mockImplementation(() => 123) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) describe('createRegistryContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => RegistryContract = ( - address: string + address: string, ) => { const contract = new ethers.Contract( address, [...addressConfigAbi], - provider + provider, ) return { @@ -116,6 +90,7 @@ describe('registry/index.ts', () => { token: createTokenCaller(contract), withdraw: createWithdrawCaller(contract), withdrawStorage: createWithdrawStorageCaller(contract), + contract: () => contract, } } @@ -123,7 +98,7 @@ describe('registry/index.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/ethereum/registry/index.ts b/lib/ethereum/registry/index.ts index 3fc762869..0749222fc 100644 --- a/lib/ethereum/registry/index.ts +++ b/lib/ethereum/registry/index.ts @@ -1,6 +1,4 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' import { addressConfigAbi } from './abi' import { createTokenCaller } from './token' import { createAllocatorCaller } from './allocator' @@ -38,19 +36,20 @@ export type RegistryContract = { readonly token: () => Promise readonly withdraw: () => Promise readonly withdrawStorage: () => Promise + readonly contract: () => ethers.Contract } export type CreateRegistryContract = ( - provider: Provider | Signer + provider: ContractRunner, ) => (address: string) => RegistryContract export const createRegistryContract: CreateRegistryContract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): RegistryContract => { const contract = new ethers.Contract( address, [...addressConfigAbi], - provider + provider, ) return { @@ -71,5 +70,6 @@ export const createRegistryContract: CreateRegistryContract = token: createTokenCaller(contract), withdraw: createWithdrawCaller(contract), withdrawStorage: createWithdrawStorageCaller(contract), + contract: () => contract, } } diff --git a/lib/ethereum/registry/lockup.ts b/lib/ethereum/registry/lockup.ts index f234c006f..e9dd752e1 100644 --- a/lib/ethereum/registry/lockup.ts +++ b/lib/ethereum/registry/lockup.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateLockupCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createLockupCaller: CreateLockupCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'lockup', mutation: false, - }) + }), ) diff --git a/lib/ethereum/registry/lockupStorage.ts b/lib/ethereum/registry/lockupStorage.ts index c305669dd..4c0b9bbb7 100644 --- a/lib/ethereum/registry/lockupStorage.ts +++ b/lib/ethereum/registry/lockupStorage.ts @@ -3,12 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateLockupStorageCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createLockupStorageCaller: CreateLockupStorageCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( - execute({ contract, method: 'lockupStorage', mutation: false }) + execute({ + contract, + method: 'lockupStorage', + mutation: false, + }), ) diff --git a/lib/ethereum/registry/marketFactory.ts b/lib/ethereum/registry/marketFactory.ts index 56de9ad55..4653700e1 100644 --- a/lib/ethereum/registry/marketFactory.ts +++ b/lib/ethereum/registry/marketFactory.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateMarketFactoryCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createMarketFactoryCaller: CreateMarketFactoryCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'marketFactory', mutation: false, - }) + }), ) diff --git a/lib/ethereum/registry/marketGroup.ts b/lib/ethereum/registry/marketGroup.ts index 811821cf9..5d06ff477 100644 --- a/lib/ethereum/registry/marketGroup.ts +++ b/lib/ethereum/registry/marketGroup.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateMarketGroupCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createMarketGroupCaller: CreateMarketGroupCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'marketGroup', mutation: false, - }) + }), ) diff --git a/lib/ethereum/registry/metricsFactory.ts b/lib/ethereum/registry/metricsFactory.ts index b763e8f34..61a43f6cf 100644 --- a/lib/ethereum/registry/metricsFactory.ts +++ b/lib/ethereum/registry/metricsFactory.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateMetricsFactoryCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createMetricsFactoryCaller: CreateMetricsFactoryCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'metricsFactory', mutation: false, - }) + }), ) diff --git a/lib/ethereum/registry/metricsGroup.ts b/lib/ethereum/registry/metricsGroup.ts index 09fbb8fad..1d1639160 100644 --- a/lib/ethereum/registry/metricsGroup.ts +++ b/lib/ethereum/registry/metricsGroup.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateMetricsGroupCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createMetricsGroupCaller: CreateMetricsGroupCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'metricsGroup', mutation: false, - }) + }), ) diff --git a/lib/ethereum/registry/policy.ts b/lib/ethereum/registry/policy.ts index ae03e61f0..d3f2f8a8b 100644 --- a/lib/ethereum/registry/policy.ts +++ b/lib/ethereum/registry/policy.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreatePolicyCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createPolicyCaller: CreatePolicyCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'policy', mutation: false, - }) + }), ) diff --git a/lib/ethereum/registry/policyFactory.ts b/lib/ethereum/registry/policyFactory.ts index 484333bac..8e160f044 100644 --- a/lib/ethereum/registry/policyFactory.ts +++ b/lib/ethereum/registry/policyFactory.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreatePolicyFactoryCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createPolicyFactoryCaller: CreatePolicyFactoryCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'policyFactory', mutation: false, - }) + }), ) diff --git a/lib/ethereum/registry/policyGroup.ts b/lib/ethereum/registry/policyGroup.ts index 8302e9102..da3b422f7 100644 --- a/lib/ethereum/registry/policyGroup.ts +++ b/lib/ethereum/registry/policyGroup.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreatePolicyGroupCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createPolicyGroupCaller: CreatePolicyGroupCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'policyGroup', mutation: false, - }) + }), ) diff --git a/lib/ethereum/registry/policySet.ts b/lib/ethereum/registry/policySet.ts index a046d79a9..fa8729bb6 100644 --- a/lib/ethereum/registry/policySet.ts +++ b/lib/ethereum/registry/policySet.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreatePolicySetCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createPolicySetCaller: CreatePolicySetCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'policySet', mutation: false, - }) + }), ) diff --git a/lib/ethereum/registry/propertyFactory.ts b/lib/ethereum/registry/propertyFactory.ts index 5511fab02..0e02b3596 100644 --- a/lib/ethereum/registry/propertyFactory.ts +++ b/lib/ethereum/registry/propertyFactory.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreatePropertyFactoryCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createPropertyFactoryCaller: CreatePropertyFactoryCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'propertyFactory', mutation: false, - }) + }), ) diff --git a/lib/ethereum/registry/propertyGroup.ts b/lib/ethereum/registry/propertyGroup.ts index 940fcdf86..7dcf0c36b 100644 --- a/lib/ethereum/registry/propertyGroup.ts +++ b/lib/ethereum/registry/propertyGroup.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreatePropertyGroupCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createPropertyGroupCaller: CreatePropertyGroupCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'propertyGroup', mutation: false, - }) + }), ) diff --git a/lib/ethereum/registry/token.ts b/lib/ethereum/registry/token.ts index e36f1c09c..6b06c63cf 100644 --- a/lib/ethereum/registry/token.ts +++ b/lib/ethereum/registry/token.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateTokenCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createTokenCaller: CreateTokenCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'token', mutation: false, - }) + }), ) diff --git a/lib/ethereum/registry/withdraw.ts b/lib/ethereum/registry/withdraw.ts index 954d3cc11..f5511e93e 100644 --- a/lib/ethereum/registry/withdraw.ts +++ b/lib/ethereum/registry/withdraw.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateWithdrawCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createWithdrawCaller: CreateWithdrawCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'withdraw', mutation: false, - }) + }), ) diff --git a/lib/ethereum/registry/withdrawStorage.ts b/lib/ethereum/registry/withdrawStorage.ts index 450a169e7..269dc77f9 100644 --- a/lib/ethereum/registry/withdrawStorage.ts +++ b/lib/ethereum/registry/withdrawStorage.ts @@ -3,16 +3,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateWithdrawStorageCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createWithdrawStorageCaller: CreateWithdrawStorageCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'withdrawStorage', mutation: false, - }) + }), ) diff --git a/lib/ethereum/s-tokens/abi.ts b/lib/ethereum/s-tokens/abi.ts index 5b9487005..00e29ca5c 100644 --- a/lib/ethereum/s-tokens/abi.ts +++ b/lib/ethereum/s-tokens/abi.ts @@ -68,25 +68,6 @@ export const sTokensAbi = [ name: 'Freezed', type: 'event', }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - { - indexed: false, - internalType: 'address', - name: 'meltingUser', - type: 'address', - }, - ], - name: 'Melted', - type: 'event', - }, { anonymous: false, inputs: [ @@ -124,31 +105,6 @@ export const sTokensAbi = [ name: 'Minted', type: 'event', }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - { - indexed: false, - internalType: 'address', - name: 'author', - type: 'address', - }, - { - indexed: false, - internalType: 'string', - name: 'data', - type: 'string', - }, - ], - name: 'SetTokenUri', - type: 'event', - }, { anonymous: false, inputs: [ @@ -247,10 +203,17 @@ export const sTokensAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { - inputs: [], - name: 'config', + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'descriptorOf', outputs: [ { internalType: 'address', @@ -260,10 +223,22 @@ export const sTokensAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { - inputs: [], - name: 'descriptorAddress', + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + name: 'descriptorOfPropertyByPayload', outputs: [ { internalType: 'address', @@ -273,48 +248,86 @@ export const sTokensAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [ { internalType: 'uint256', - name: '_tokenId', + name: 'tokenId', type: 'uint256', }, ], - name: 'descriptors', + name: 'getApproved', outputs: [ { - internalType: 'bool', + internalType: 'address', name: '', - type: 'bool', + type: 'address', }, + ], + stateMutability: 'view', + type: 'function', + constant: true, + }, + { + inputs: [ { internalType: 'address', - name: '', + name: 'owner', type: 'address', }, { - internalType: 'string', + internalType: 'address', + name: 'operator', + type: 'address', + }, + ], + name: 'isApprovedForAll', + outputs: [ + { + internalType: 'bool', name: '', - type: 'string', + type: 'bool', }, ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [ { internalType: 'uint256', - name: '_tokenId', + name: '', type: 'uint256', }, ], - name: 'freezeTokenURI', - outputs: [], - stateMutability: 'nonpayable', + name: 'isFreezed', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + constant: true, + }, + { + inputs: [], + name: 'name', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [ @@ -324,7 +337,7 @@ export const sTokensAbi = [ type: 'uint256', }, ], - name: 'getApproved', + name: 'ownerOf', outputs: [ { internalType: 'address', @@ -334,53 +347,81 @@ export const sTokensAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [ { - internalType: 'address', - name: '_config', - type: 'address', + internalType: 'uint256', + name: '', + type: 'uint256', }, ], - name: 'initialize', - outputs: [], - stateMutability: 'nonpayable', + name: 'payloadOf', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', type: 'function', + constant: true, }, { - inputs: [ + inputs: [], + name: 'registryAddress', + outputs: [ { internalType: 'address', - name: 'owner', + name: '', type: 'address', }, + ], + stateMutability: 'view', + type: 'function', + constant: true, + }, + { + inputs: [ { internalType: 'address', - name: 'operator', + name: '', type: 'address', }, ], - name: 'isApprovedForAll', + name: 'royaltyOf', outputs: [ { - internalType: 'bool', + internalType: 'uint24', name: '', - type: 'bool', + type: 'uint24', }, ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [ + { + internalType: 'address', + name: 'from', + type: 'address', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, { internalType: 'uint256', - name: '_tokenId', + name: 'tokenId', type: 'uint256', }, ], - name: 'meltTokenURI', + name: 'safeTransferFrom', outputs: [], stateMutability: 'nonpayable', type: 'function', @@ -389,39 +430,51 @@ export const sTokensAbi = [ inputs: [ { internalType: 'address', - name: '_owner', + name: 'from', type: 'address', }, { internalType: 'address', - name: '_property', + name: 'to', type: 'address', }, { internalType: 'uint256', - name: '_amount', + name: 'tokenId', type: 'uint256', }, { - internalType: 'uint256', - name: '_price', - type: 'uint256', + internalType: 'bytes', + name: '_data', + type: 'bytes', }, ], - name: 'mint', - outputs: [ + name: 'safeTransferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ { - internalType: 'uint256', - name: 'tokenId_', - type: 'uint256', + internalType: 'address', + name: 'operator', + type: 'address', + }, + { + internalType: 'bool', + name: 'approved', + type: 'bool', }, ], + name: 'setApprovalForAll', + outputs: [], stateMutability: 'nonpayable', type: 'function', }, { inputs: [], - name: 'name', + name: 'symbol', outputs: [ { internalType: 'string', @@ -431,102 +484,169 @@ export const sTokensAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [ + { + internalType: 'address', + name: 'from', + type: 'address', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, { internalType: 'uint256', name: 'tokenId', type: 'uint256', }, ], - name: 'ownerOf', - outputs: [ + name: 'transferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ { internalType: 'address', - name: '', + name: '_registry', type: 'address', }, ], - stateMutability: 'view', + name: 'initialize', + outputs: [], + stateMutability: 'nonpayable', type: 'function', }, { inputs: [ + { + internalType: 'bytes4', + name: 'interfaceId', + type: 'bytes4', + }, + ], + name: 'supportsInterface', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + constant: true, + }, + { + inputs: [], + name: 'totalSupply', + outputs: [ { internalType: 'uint256', - name: '_tokenId', + name: '', type: 'uint256', }, ], - name: 'positions', - outputs: [ + stateMutability: 'view', + type: 'function', + constant: true, + }, + { + inputs: [ { internalType: 'address', - name: 'property_', + name: '_owner', type: 'address', }, { internalType: 'uint256', - name: 'amount_', + name: 'index', type: 'uint256', }, + ], + name: 'tokenOfOwnerByIndex', + outputs: [ { internalType: 'uint256', - name: 'price_', + name: '', type: 'uint256', }, + ], + stateMutability: 'view', + type: 'function', + constant: true, + }, + { + inputs: [ { internalType: 'uint256', - name: 'cumulativeReward_', + name: 'index', type: 'uint256', }, + ], + name: 'tokenByIndex', + outputs: [ { internalType: 'uint256', - name: 'pendingReward_', + name: '', type: 'uint256', }, ], stateMutability: 'view', type: 'function', + constant: true, }, { - inputs: [ - { - internalType: 'address', - name: '_owner', - type: 'address', - }, - ], - name: 'positionsOfOwner', + inputs: [], + name: 'owner', outputs: [ { - internalType: 'uint256[]', + internalType: 'address', name: '', - type: 'uint256[]', + type: 'address', }, ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [ { internalType: 'address', - name: '_property', + name: '_proxyAdmin', type: 'address', }, ], - name: 'positionsOfProperty', + name: 'setProxyAdmin', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + ], + name: 'tokenURI', outputs: [ { - internalType: 'uint256[]', + internalType: 'string', name: '', - type: 'uint256[]', + type: 'string', }, ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [ @@ -535,75 +655,189 @@ export const sTokensAbi = [ name: '_tokenId', type: 'uint256', }, - ], - name: 'rewards', - outputs: [ { - internalType: 'uint256', - name: 'entireReward_', - type: 'uint256', + internalType: 'address', + name: '_owner', + type: 'address', }, { - internalType: 'uint256', - name: 'cumulativeReward_', - type: 'uint256', + components: [ + { + internalType: 'address', + name: 'property', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'price', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'cumulativeReward', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'pendingReward', + type: 'uint256', + }, + ], + internalType: 'struct ISTokensManager.StakingPositions', + name: '_positions', + type: 'tuple', + }, + { + components: [ + { + internalType: 'uint256', + name: 'entireReward', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'cumulativeReward', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'withdrawableReward', + type: 'uint256', + }, + ], + internalType: 'struct ISTokensManager.Rewards', + name: '_rewardsArg', + type: 'tuple', + }, + { + internalType: 'bytes32', + name: '_payload', + type: 'bytes32', }, + ], + name: 'tokenURISim', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + constant: true, + }, + { + inputs: [], + name: 'currentIndex', + outputs: [ { internalType: 'uint256', - name: 'withdrawableReward_', + name: '', type: 'uint256', }, ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [ { internalType: 'address', - name: 'from', + name: '_owner', type: 'address', }, { internalType: 'address', - name: 'to', + name: '_property', type: 'address', }, { internalType: 'uint256', - name: 'tokenId', + name: '_amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_price', + type: 'uint256', + }, + { + internalType: 'bytes32', + name: '_payload', + type: 'bytes32', + }, + ], + name: 'mint', + outputs: [ + { + internalType: 'uint256', + name: 'tokenId_', type: 'uint256', }, ], - name: 'safeTransferFrom', - outputs: [], stateMutability: 'nonpayable', type: 'function', }, { inputs: [ { - internalType: 'address', - name: 'from', - type: 'address', + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', }, { - internalType: 'address', - name: 'to', - type: 'address', + internalType: 'uint256', + name: '_amount', + type: 'uint256', }, { internalType: 'uint256', - name: 'tokenId', + name: '_price', type: 'uint256', }, { - internalType: 'bytes', + internalType: 'uint256', + name: '_cumulativeReward', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_pendingReward', + type: 'uint256', + }, + ], + name: 'update', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + { + internalType: 'string', name: '_data', - type: 'bytes', + type: 'string', }, ], - name: 'safeTransferFrom', + name: 'setTokenURIImage', outputs: [], stateMutability: 'nonpayable', type: 'function', @@ -612,29 +846,39 @@ export const sTokensAbi = [ inputs: [ { internalType: 'address', - name: 'operator', + name: '_property', type: 'address', }, { - internalType: 'bool', - name: 'approved', - type: 'bool', + internalType: 'address', + name: '_descriptor', + type: 'address', + }, + { + internalType: 'bytes32[]', + name: '_keys', + type: 'bytes32[]', }, ], - name: 'setApprovalForAll', + name: 'setTokenURIDescriptor', outputs: [], stateMutability: 'nonpayable', type: 'function', }, { inputs: [ + { + internalType: 'address', + name: '_property', + type: 'address', + }, { internalType: 'address', name: '_descriptor', type: 'address', }, ], - name: 'setDescriptor', + name: 'setTokenURIDescriptor', outputs: [], stateMutability: 'nonpayable', type: 'function', @@ -646,13 +890,8 @@ export const sTokensAbi = [ name: '_tokenId', type: 'uint256', }, - { - internalType: 'string', - name: '_data', - type: 'string', - }, ], - name: 'setTokenURIImage', + name: 'freezeTokenURI', outputs: [], stateMutability: 'nonpayable', type: 'function', @@ -660,73 +899,141 @@ export const sTokensAbi = [ { inputs: [ { - internalType: 'bytes4', - name: 'interfaceId', - type: 'bytes4', + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', }, ], - name: 'supportsInterface', + name: 'positions', outputs: [ { - internalType: 'bool', + components: [ + { + internalType: 'address', + name: 'property', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'price', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'cumulativeReward', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'pendingReward', + type: 'uint256', + }, + ], + internalType: 'struct ISTokensManager.StakingPositions', name: '', - type: 'bool', + type: 'tuple', }, ], stateMutability: 'view', type: 'function', + constant: true, }, { - inputs: [], - name: 'symbol', + inputs: [ + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + ], + name: 'rewards', outputs: [ { - internalType: 'string', + components: [ + { + internalType: 'uint256', + name: 'entireReward', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'cumulativeReward', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'withdrawableReward', + type: 'uint256', + }, + ], + internalType: 'struct ISTokensManager.Rewards', name: '', - type: 'string', + type: 'tuple', }, ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [ { - internalType: 'uint256', - name: '_tokenId', - type: 'uint256', + internalType: 'address', + name: '_property', + type: 'address', }, ], - name: 'tokenURI', + name: 'positionsOfProperty', outputs: [ { - internalType: 'string', + internalType: 'uint256[]', name: '', - type: 'string', + type: 'uint256[]', }, ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [ { internalType: 'address', - name: 'from', + name: '_owner', type: 'address', }, + ], + name: 'positionsOfOwner', + outputs: [ + { + internalType: 'uint256[]', + name: '', + type: 'uint256[]', + }, + ], + stateMutability: 'view', + type: 'function', + constant: true, + }, + { + inputs: [ { internalType: 'address', - name: 'to', + name: '_property', type: 'address', }, { internalType: 'uint256', - name: 'tokenId', + name: '_percentage', type: 'uint256', }, ], - name: 'transferFrom', + name: 'setSTokenRoyaltyForProperty', outputs: [], stateMutability: 'nonpayable', type: 'function', @@ -735,39 +1042,30 @@ export const sTokensAbi = [ inputs: [ { internalType: 'uint256', - name: '_tokenId', - type: 'uint256', - }, - { - internalType: 'uint256', - name: '_amount', + name: 'tokenId', type: 'uint256', }, { internalType: 'uint256', - name: '_price', + name: 'value', type: 'uint256', }, + ], + name: 'royaltyInfo', + outputs: [ { - internalType: 'uint256', - name: '_cumulativeReward', - type: 'uint256', + internalType: 'address', + name: 'receiver', + type: 'address', }, { internalType: 'uint256', - name: '_pendingReward', + name: 'royaltyAmount', type: 'uint256', }, ], - name: 'update', - outputs: [ - { - internalType: 'bool', - name: '', - type: 'bool', - }, - ], - stateMutability: 'nonpayable', + stateMutability: 'view', type: 'function', + constant: true, }, ] diff --git a/lib/ethereum/s-tokens/descriptorOf.spec.ts b/lib/ethereum/s-tokens/descriptorOf.spec.ts new file mode 100644 index 000000000..047cbf0d3 --- /dev/null +++ b/lib/ethereum/s-tokens/descriptorOf.spec.ts @@ -0,0 +1,44 @@ +import { ZeroAddress } from 'ethers' +import { createDescriptorOfCaller } from './descriptorOf' + +describe('descriptorOf.spec.ts', () => { + describe('createDescriptorOfCaller', () => { + it('call success', async () => { + const value = '0x74657374696e67' + const propertyAddress = ZeroAddress + + const devContract = { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + descriptorOf: jest.fn().mockImplementation(async () => value), + } + + const expected = value + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createDescriptorOfCaller(devContract as any) + + const result = await caller(propertyAddress) + + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const propertyAddress = ZeroAddress + const error = 'error' + + const devContract = { + descriptorOf: jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation(async () => Promise.reject(error)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createDescriptorOfCaller(devContract as any) + + const result = await caller(propertyAddress).catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/ethereum/s-tokens/descriptorOf.ts b/lib/ethereum/s-tokens/descriptorOf.ts new file mode 100644 index 000000000..9e9d7c698 --- /dev/null +++ b/lib/ethereum/s-tokens/descriptorOf.ts @@ -0,0 +1,19 @@ +/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */ +import { ethers } from 'ethers' +import { execute, QueryOption } from '../../common/utils/execute' + +export type CreateDescriptorOfCaller = ( + contract: ethers.Contract, +) => (propertyAddress: string) => Promise + +export const createDescriptorOfCaller: CreateDescriptorOfCaller = + (contract: ethers.Contract) => + async (propertyAddress: string): Promise => { + const res = execute({ + contract, + method: 'descriptorOf', + args: [propertyAddress], + mutation: false, + }) + return res + } diff --git a/lib/ethereum/s-tokens/descriptorOfPropertyByPayload.spec.ts b/lib/ethereum/s-tokens/descriptorOfPropertyByPayload.spec.ts new file mode 100644 index 000000000..a55fbd883 --- /dev/null +++ b/lib/ethereum/s-tokens/descriptorOfPropertyByPayload.spec.ts @@ -0,0 +1,52 @@ +import { ZeroAddress, keccak256, toUtf8Bytes, toUtf8String } from 'ethers' +import { createDescriptorOfPropertyByPayloadCaller } from './descriptorOfPropertyByPayload' + +describe('descriptorOfPropertyByPayload.spec.ts', () => { + describe('createDescriptorOfPropertyByPayloadCaller', () => { + it('call success', async () => { + const value = '0x74657374696e67' + const propertyAddress = ZeroAddress + const payload = toUtf8Bytes('x') + + const devContract = { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + descriptorOfPropertyByPayload: jest + .fn() + .mockImplementation(async () => value), + } + + const expected = value + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createDescriptorOfPropertyByPayloadCaller( + devContract as any, + ) + + const result = await caller(propertyAddress, payload) + + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const propertyAddress = ZeroAddress + const payload = toUtf8Bytes('x') + const error = 'error' + + const devContract = { + descriptorOfPropertyByPayload: jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation(async () => Promise.reject(error)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createDescriptorOfPropertyByPayloadCaller( + devContract as any, + ) + + const result = await caller(propertyAddress, payload).catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/ethereum/s-tokens/descriptorOfPropertyByPayload.ts b/lib/ethereum/s-tokens/descriptorOfPropertyByPayload.ts new file mode 100644 index 000000000..e7415d1b4 --- /dev/null +++ b/lib/ethereum/s-tokens/descriptorOfPropertyByPayload.ts @@ -0,0 +1,23 @@ +/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */ +import { ethers } from 'ethers' +import { execute, QueryOption } from '../../common/utils/execute' + +export type CreateDescriptorOfPropertyByPayloadCaller = ( + contract: ethers.Contract, +) => (propertyAddress: string, payload: string | Uint8Array) => Promise + +export const createDescriptorOfPropertyByPayloadCaller: CreateDescriptorOfPropertyByPayloadCaller = + + (contract: ethers.Contract) => + async ( + propertyAddress: string, + payload: string | Uint8Array, + ): Promise => { + const res = execute({ + contract, + method: 'descriptorOfPropertyByPayload', + args: [propertyAddress, payload], + mutation: false, + }) + return res + } diff --git a/lib/ethereum/s-tokens/freezeTokenURI.ts b/lib/ethereum/s-tokens/freezeTokenURI.ts index a2259ed27..a527054db 100644 --- a/lib/ethereum/s-tokens/freezeTokenURI.ts +++ b/lib/ethereum/s-tokens/freezeTokenURI.ts @@ -4,13 +4,13 @@ import { FallbackableOverrides, MutationOption, } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type CreateFreezeTokenURICaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => ( tokenId: number, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise export const createFreezeTokenURICaller: CreateFreezeTokenURICaller = diff --git a/lib/ethereum/s-tokens/index.spec.ts b/lib/ethereum/s-tokens/index.spec.ts index b07619852..b06ed754a 100644 --- a/lib/ethereum/s-tokens/index.spec.ts +++ b/lib/ethereum/s-tokens/index.spec.ts @@ -5,11 +5,18 @@ import { createPositionsCaller } from './positions' import { createOwnerOfCaller } from './ownerOf' import { createRewardsCaller } from './rewards' import { createTokenURICaller } from './tokenURI' +import { createTokenURISimCaller } from './tokenURISim' import { createPositionsOfPropertyCaller } from './positionsOfProperty' import { createPositionsOfOwnerCaller } from './positionsOfOwner' import { createIsFreezedCaller } from './isFreezed' import { createFreezeTokenURICaller } from './freezeTokenURI' import { createSetTokenURIImageCaller } from './setTokenURIImage' +import { createSetSTokenRoyaltyForPropertyCaller } from './setSTokenRoyaltyForProperty' +import { createRoyaltyOfCaller } from './royaltyOf' +import { createSetTokenURIDescriptorCaller } from './setTokenURIDescriptor' +import { createPayloadOfCaller } from './payloadOf' +import { createDescriptorOfCaller } from './descriptorOf' +import { createDescriptorOfPropertyByPayloadCaller } from './descriptorOfPropertyByPayload' jest.mock('./positions') jest.mock('./isFreezed') @@ -18,41 +25,48 @@ jest.mock('./setTokenURIImage') jest.mock('./ownerOf') jest.mock('./rewards') jest.mock('./tokenURI') +jest.mock('./tokenURISim') jest.mock('./positionsOfProperty') jest.mock('./positionsOfOwner') +jest.mock('./setSTokenRoyaltyForProperty') +jest.mock('./royaltyOf') +jest.mock('./setTokenURIDescriptor') +jest.mock('./descriptorOf') +jest.mock('./descriptorOfPropertyByPayload') +jest.mock('ethers') describe('s-tokens/index.ts', () => { - ;(createPositionsCaller as jest.Mock).mockImplementation( - (contract) => contract + ;(createPositionsCaller as jest.Mock).mockImplementation(() => 123) + ;(createOwnerOfCaller as jest.Mock).mockImplementation(() => 123) + ;(createRewardsCaller as jest.Mock).mockImplementation(() => 123) + ;(createTokenURICaller as jest.Mock).mockImplementation(() => 123) + ;(createPositionsOfPropertyCaller as jest.Mock).mockImplementation(() => 123) + ;(createPositionsOfOwnerCaller as jest.Mock).mockImplementation(() => 123) + ;(createIsFreezedCaller as jest.Mock).mockImplementation(() => 123) + ;(createFreezeTokenURICaller as jest.Mock).mockImplementation(() => 123) + ;(createSetTokenURIImageCaller as jest.Mock).mockImplementation(() => 123) + ;(createSetSTokenRoyaltyForPropertyCaller as jest.Mock).mockImplementation( + () => 123, ) - ;(createOwnerOfCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createRewardsCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createTokenURICaller as jest.Mock).mockImplementation( - (contract) => contract + ;(createRoyaltyOfCaller as jest.Mock).mockImplementation(() => 123) + ;(createSetTokenURIDescriptorCaller as jest.Mock).mockImplementation( + () => 123, ) - ;(createPositionsOfPropertyCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createPositionsOfOwnerCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createIsFreezedCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createFreezeTokenURICaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createSetTokenURIImageCaller as jest.Mock).mockImplementation( - (contract) => contract + ;(createTokenURISimCaller as jest.Mock).mockImplementation(() => 123) + ;(createDescriptorOfCaller as jest.Mock).mockImplementation(() => 123) + ;(createDescriptorOfPropertyByPayloadCaller as jest.Mock).mockImplementation( + () => 123, ) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) + describe('createSTokensContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => STokensContract = ( - address: string + address: string, ) => { const contract = new ethers.Contract(address, [...sTokensAbi], provider) return { @@ -60,11 +74,21 @@ describe('s-tokens/index.ts', () => { isFreezed: createIsFreezedCaller(contract), freezeTokenURI: createFreezeTokenURICaller(contract), setTokenURIImage: createSetTokenURIImageCaller(contract), + setSTokenRoyaltyForProperty: + createSetSTokenRoyaltyForPropertyCaller(contract), + royaltyOf: createRoyaltyOfCaller(contract), + setTokenURIDescriptor: createSetTokenURIDescriptorCaller(contract), ownerOf: createOwnerOfCaller(contract), rewards: createRewardsCaller(contract), tokenURI: createTokenURICaller(contract), + tokenURISim: createTokenURISimCaller(contract), positionsOfProperty: createPositionsOfPropertyCaller(contract), positionsOfOwner: createPositionsOfOwnerCaller(contract), + payloadOf: createPayloadOfCaller(contract), + descriptorOf: createDescriptorOfCaller(contract), + descriptorOfPropertyByPayload: + createDescriptorOfPropertyByPayloadCaller(contract), + contract: () => contract, } } @@ -72,7 +96,7 @@ describe('s-tokens/index.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/ethereum/s-tokens/index.ts b/lib/ethereum/s-tokens/index.ts index 88d70cacb..228232bad 100644 --- a/lib/ethereum/s-tokens/index.ts +++ b/lib/ethereum/s-tokens/index.ts @@ -1,6 +1,4 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' import { sTokensAbi } from './abi' import { createPositionsCaller, Positions } from './positions' import { createIsFreezedCaller } from './isFreezed' @@ -9,37 +7,69 @@ import { createSetTokenURIImageCaller } from './setTokenURIImage' import { createOwnerOfCaller } from './ownerOf' import { createRewardsCaller, Rewards } from './rewards' import { createTokenURICaller, TokenURI } from './tokenURI' +import { createPayloadOfCaller } from './payloadOf' import { createPositionsOfPropertyCaller } from './positionsOfProperty' import { createPositionsOfOwnerCaller } from './positionsOfOwner' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import { createSetSTokenRoyaltyForPropertyCaller } from './setSTokenRoyaltyForProperty' +import { createRoyaltyOfCaller } from './royaltyOf' +import { createSetTokenURIDescriptorCaller } from './setTokenURIDescriptor' +import type { TransactionResponse } from 'ethers' +import { createTokenURISimCaller, TokenURISimProps } from './tokenURISim' +import { FallbackableOverrides } from '../../common/utils/execute' +import { createDescriptorOfCaller } from './descriptorOf' +import { createDescriptorOfPropertyByPayloadCaller } from './descriptorOfPropertyByPayload' export type STokensContract = { readonly positions: (tokenId: number) => Promise readonly isFreezed: (tokenId: number) => Promise - readonly freezeTokenURI: (tokenId: number) => Promise + readonly freezeTokenURI: ( + tokenId: number, + overrides?: FallbackableOverrides, + ) => Promise readonly setTokenURIImage: ( tokenId: number, - data: string + data: string, + overrides?: FallbackableOverrides, + ) => Promise + readonly setSTokenRoyaltyForProperty: ( + propertyAddress: string, + royalty: number, + overrides?: FallbackableOverrides, + ) => Promise + readonly royaltyOf: (propertyAddress: string) => Promise + readonly setTokenURIDescriptor: ( + propertyAddress: string, + descriptorAddress: string, + payloads?: ReadonlyArray, + overrides?: FallbackableOverrides, ) => Promise readonly ownerOf: (tokenId: number) => Promise readonly rewards: (tokenId: number) => Promise readonly tokenURI: (tokenId: number) => Promise + readonly tokenURISim: (props?: TokenURISimProps) => Promise readonly positionsOfProperty: ( - propertyAddress: string + propertyAddress: string, ) => Promise readonly positionsOfOwner: ( - accountAddress: string + accountAddress: string, ) => Promise + readonly contract: () => ethers.Contract + readonly payloadOf: (tokenId: number) => Promise + readonly descriptorOf: (propertyAddress: string) => Promise + readonly descriptorOfPropertyByPayload: ( + propertyAddress: string, + payload: string | Uint8Array, + ) => Promise } // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types export const createSTokensContract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): STokensContract => { const contractClient: ethers.Contract = new ethers.Contract( address, [...sTokensAbi], - provider + provider, ) return { @@ -47,10 +77,22 @@ export const createSTokensContract = isFreezed: createIsFreezedCaller(contractClient), freezeTokenURI: createFreezeTokenURICaller(contractClient), setTokenURIImage: createSetTokenURIImageCaller(contractClient), + setSTokenRoyaltyForProperty: + createSetSTokenRoyaltyForPropertyCaller(contractClient), + royaltyOf: createRoyaltyOfCaller(contractClient), + setTokenURIDescriptor: createSetTokenURIDescriptorCaller(contractClient), ownerOf: createOwnerOfCaller(contractClient), rewards: createRewardsCaller(contractClient), tokenURI: createTokenURICaller(contractClient), + tokenURISim: createTokenURISimCaller(contractClient), + payloadOf: createPayloadOfCaller(contractClient), positionsOfProperty: createPositionsOfPropertyCaller(contractClient), positionsOfOwner: createPositionsOfOwnerCaller(contractClient), + descriptorOf: createDescriptorOfCaller(contractClient), + descriptorOfPropertyByPayload: + createDescriptorOfPropertyByPayloadCaller(contractClient), + contract: () => contractClient, } } + +export { Positions } from './positions' diff --git a/lib/ethereum/s-tokens/isFreezed.ts b/lib/ethereum/s-tokens/isFreezed.ts index eb0e53f22..4e4183344 100644 --- a/lib/ethereum/s-tokens/isFreezed.ts +++ b/lib/ethereum/s-tokens/isFreezed.ts @@ -4,7 +4,7 @@ import { execute, QueryOption } from '../../common/utils/execute' import { T } from 'ramda' export type CreateIsFreezedCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (tokenId: number) => Promise export const createIsFreezedCaller: CreateIsFreezedCaller = diff --git a/lib/ethereum/s-tokens/ownerOf.ts b/lib/ethereum/s-tokens/ownerOf.ts index 49e40785c..255d6a736 100644 --- a/lib/ethereum/s-tokens/ownerOf.ts +++ b/lib/ethereum/s-tokens/ownerOf.ts @@ -3,7 +3,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type CreateOwnerOfCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (tokenId: number) => Promise export const createOwnerOfCaller: CreateOwnerOfCaller = diff --git a/lib/ethereum/s-tokens/payloadOf.spec.ts b/lib/ethereum/s-tokens/payloadOf.spec.ts new file mode 100644 index 000000000..5e3563861 --- /dev/null +++ b/lib/ethereum/s-tokens/payloadOf.spec.ts @@ -0,0 +1,45 @@ +import { createPayloadOfCaller } from './payloadOf' + +describe('payloadOf.spec.ts', () => { + describe('createPayloadOfCaller', () => { + it('call success', async () => { + const value = '0x74657374696e67' + const tokenId = 1 + + const devContract = { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + payloadOf: jest + .fn() + .mockImplementation(async (tokenId: string) => value), + } + + const expected = value + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createPayloadOfCaller(devContract as any) + + const result = await caller(tokenId) + + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const tokenId = 1 + const error = 'error' + + const devContract = { + payloadOf: jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation(async (tokenId: string) => Promise.reject(error)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createPayloadOfCaller(devContract as any) + + const result = await caller(tokenId).catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/ethereum/s-tokens/payloadOf.ts b/lib/ethereum/s-tokens/payloadOf.ts new file mode 100644 index 000000000..dafc31cfe --- /dev/null +++ b/lib/ethereum/s-tokens/payloadOf.ts @@ -0,0 +1,19 @@ +/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */ +import { ethers } from 'ethers' +import { execute, QueryOption } from '../../common/utils/execute' + +export type CreatePayloadOfCaller = ( + contract: ethers.Contract, +) => (tokenId: number) => Promise + +export const createPayloadOfCaller: CreatePayloadOfCaller = + (contract: ethers.Contract) => + async (tokenId: number): Promise => { + const res = execute({ + contract, + method: 'payloadOf', + args: [String(tokenId)], + mutation: false, + }) + return res + } diff --git a/lib/ethereum/s-tokens/positions.ts b/lib/ethereum/s-tokens/positions.ts index e239ad71f..1345c9b9f 100644 --- a/lib/ethereum/s-tokens/positions.ts +++ b/lib/ethereum/s-tokens/positions.ts @@ -12,7 +12,7 @@ export type Positions = { } export type CreatePositionsCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (tokenId: number) => Promise export const createPositionsCaller: CreatePositionsCaller = diff --git a/lib/ethereum/s-tokens/positionsOfOwner.ts b/lib/ethereum/s-tokens/positionsOfOwner.ts index f1de17b69..031b2e2a4 100644 --- a/lib/ethereum/s-tokens/positionsOfOwner.ts +++ b/lib/ethereum/s-tokens/positionsOfOwner.ts @@ -3,7 +3,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type CreatePositionsOfOwnerCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (accountAddress: string) => Promise export const createPositionsOfOwnerCaller: CreatePositionsOfOwnerCaller = diff --git a/lib/ethereum/s-tokens/positionsOfProperty.ts b/lib/ethereum/s-tokens/positionsOfProperty.ts index 9c105b93f..b835b2c91 100644 --- a/lib/ethereum/s-tokens/positionsOfProperty.ts +++ b/lib/ethereum/s-tokens/positionsOfProperty.ts @@ -3,7 +3,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type CreatePositionsOfPropertyCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (propertyAddress: string) => Promise export const createPositionsOfPropertyCaller: CreatePositionsOfPropertyCaller = diff --git a/lib/ethereum/s-tokens/rewards.ts b/lib/ethereum/s-tokens/rewards.ts index fd758834c..33b61e272 100644 --- a/lib/ethereum/s-tokens/rewards.ts +++ b/lib/ethereum/s-tokens/rewards.ts @@ -10,7 +10,7 @@ export type Rewards = { } export type CreateRewardsCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (tokenId: number) => Promise export const createRewardsCaller: CreateRewardsCaller = diff --git a/lib/ethereum/s-tokens/royaltyOf.spec.ts b/lib/ethereum/s-tokens/royaltyOf.spec.ts new file mode 100644 index 000000000..5c4b2290a --- /dev/null +++ b/lib/ethereum/s-tokens/royaltyOf.spec.ts @@ -0,0 +1,47 @@ +import { createRoyaltyOfCaller } from './royaltyOf' + +describe('royaltyOf.spec.ts', () => { + describe('createRoyaltyOfCaller', () => { + it('call success', async () => { + const propertyAddress = '0x541F7914ED2A4a8B477edc711FA349A77983F3AD' + const royalty = 10 + + const devContract = { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + royaltyOf: jest + .fn() + .mockImplementation(async (propertyAddress: string) => royalty), + } + + const expected = royalty + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createRoyaltyOfCaller(devContract as any) + + const result = await caller(propertyAddress) + + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const propertyAddress = '0x541F7914ED2A4a8B477edc711FA349A77983F3AD' + const error = 'error' + + const devContract = { + royaltyOf: jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation(async (propertyAddress: string) => + Promise.reject(error), + ), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createRoyaltyOfCaller(devContract as any) + + const result = await caller(propertyAddress).catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/ethereum/s-tokens/royaltyOf.ts b/lib/ethereum/s-tokens/royaltyOf.ts new file mode 100644 index 000000000..d800136b3 --- /dev/null +++ b/lib/ethereum/s-tokens/royaltyOf.ts @@ -0,0 +1,18 @@ +/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */ +import { ethers } from 'ethers' +import { execute, QueryOption } from '../../common/utils/execute' + +export type CreateRoyaltyOfCaller = ( + contract: ethers.Contract, +) => (propertyAddress: string) => Promise + +export const createRoyaltyOfCaller: CreateRoyaltyOfCaller = + (contract: ethers.Contract) => async (propertyAddress: string) => { + const res = execute({ + contract, + method: 'royaltyOf', + args: [propertyAddress], + mutation: false, + }) + return res + } diff --git a/lib/ethereum/s-tokens/setSTokenRoyaltyForProperty.spec.ts b/lib/ethereum/s-tokens/setSTokenRoyaltyForProperty.spec.ts new file mode 100644 index 000000000..a7a9dd19b --- /dev/null +++ b/lib/ethereum/s-tokens/setSTokenRoyaltyForProperty.spec.ts @@ -0,0 +1,53 @@ +import { createSetSTokenRoyaltyForPropertyCaller } from './setSTokenRoyaltyForProperty' +import { stubTransactionResposeFactory } from '../../common/utils/for-test' + +describe('setSTokenRoyaltyForProperty.spec.ts', () => { + describe('createSetSTokenRoyaltyForPropertyCaller', () => { + it('call success', async () => { + const success = stubTransactionResposeFactory({}) + const propertyAddress = '0x541F7914ED2A4a8B477edc711FA349A77983F3AD' + const royalty = 10 + + const devContract = { + setSTokenRoyaltyForProperty: jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation( + async (propertyAddress: string, royalty: number) => success, + ), + } + + const expected = success + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createSetSTokenRoyaltyForPropertyCaller(devContract as any) + + const result = await caller(propertyAddress, royalty) + + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const propertyAddress = '0x541F7914ED2A4a8B477edc711FA349A77983F3AD' + const royalty = 10 + const error = 'error' + + const devContract = { + setSTokenRoyaltyForProperty: jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation( + async (propertyAddress: string, descriptorAddress: string) => + Promise.reject(error), + ), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createSetSTokenRoyaltyForPropertyCaller(devContract as any) + + const result = await caller(propertyAddress, royalty).catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/ethereum/s-tokens/setSTokenRoyaltyForProperty.ts b/lib/ethereum/s-tokens/setSTokenRoyaltyForProperty.ts new file mode 100644 index 000000000..93a1750de --- /dev/null +++ b/lib/ethereum/s-tokens/setSTokenRoyaltyForProperty.ts @@ -0,0 +1,18 @@ +import { ethers } from 'ethers' +import { execute, MutationOption } from '../../common/utils/execute' +import type { TransactionResponse } from 'ethers' + +export type CreateSetSTokenRoyaltyForPropertyCaller = ( + contract: ethers.Contract, +) => (propertyAddress: string, royalty: number) => Promise + +export const createSetSTokenRoyaltyForPropertyCaller: CreateSetSTokenRoyaltyForPropertyCaller = + + (contract: ethers.Contract) => + async (propertyAddress: string, royalty: number) => + execute({ + contract, + method: 'setSTokenRoyaltyForProperty', + mutation: true, + args: [propertyAddress, String(royalty)], + }) diff --git a/lib/ethereum/s-tokens/setTokenURIDescriptor.spec.ts b/lib/ethereum/s-tokens/setTokenURIDescriptor.spec.ts new file mode 100644 index 000000000..1d075b067 --- /dev/null +++ b/lib/ethereum/s-tokens/setTokenURIDescriptor.spec.ts @@ -0,0 +1,119 @@ +import { createSetTokenURIDescriptorCaller } from './setTokenURIDescriptor' +import { stubTransactionResposeFactory } from '../../common/utils/for-test' +import { keccak256, randomBytes } from 'ethers' + +describe('setTokenURIDescriptor.spec.ts', () => { + describe('createSetTokenURIDescriptorCaller', () => { + it('call success', async () => { + const success = stubTransactionResposeFactory({}) + const propertyAddress = '0x541F7914ED2A4a8B477edc711FA349A77983F3AD' + const descriptorAddress = '0x88EF51355B34f7Bb4874a731916841702cAeF2C7' + + const devContract = { + 'setTokenURIDescriptor(address,address)': jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation( + async (propertyAddress: string, descriptorAddress: string) => + success, + ), + } + + const expected = success + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createSetTokenURIDescriptorCaller(devContract as any) + + const result = await caller(propertyAddress, descriptorAddress) + + expect(result).toEqual(expected) + }) + + it('call success with optional payloads (Uint8Array[])', async () => { + const success = stubTransactionResposeFactory({}) + const propertyAddress = '0x541F7914ED2A4a8B477edc711FA349A77983F3AD' + const descriptorAddress = '0x88EF51355B34f7Bb4874a731916841702cAeF2C7' + + const devContract = { + 'setTokenURIDescriptor(address,address,bytes32[])': jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation( + async ( + propertyAddress: string, + descriptorAddress: string, + payloads: readonly Uint8Array[], + ) => success, + ), + } + + const expected = success + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createSetTokenURIDescriptorCaller(devContract as any) + + const result = await caller(propertyAddress, descriptorAddress, [ + new Uint8Array([1, 2, 3]), + new Uint8Array([4, 5, 6]), + ]) + + expect(result).toEqual(expected) + }) + + it('call success with optional payloads (string[])', async () => { + const success = stubTransactionResposeFactory({}) + const propertyAddress = '0x541F7914ED2A4a8B477edc711FA349A77983F3AD' + const descriptorAddress = '0x88EF51355B34f7Bb4874a731916841702cAeF2C7' + + const devContract = { + 'setTokenURIDescriptor(address,address,bytes32[])': jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation( + async ( + propertyAddress: string, + descriptorAddress: string, + payloads: readonly string[], + ) => success, + ), + } + + const expected = success + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createSetTokenURIDescriptorCaller(devContract as any) + + const result = await caller(propertyAddress, descriptorAddress, [ + keccak256(randomBytes(3)), + keccak256(randomBytes(3)), + ]) + + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const propertyAddress = '0x541F7914ED2A4a8B477edc711FA349A77983F3AD' + const descriptorAddress = '0x88EF51355B34f7Bb4874a731916841702cAeF2C7' + const error = 'error' + + const devContract = { + 'setTokenURIDescriptor(address,address)': jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation( + async (propertyAddress: string, descriptorAddress: string) => + Promise.reject(error), + ), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createSetTokenURIDescriptorCaller(devContract as any) + + const result = await caller(propertyAddress, descriptorAddress).catch( + (err) => err, + ) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/ethereum/s-tokens/setTokenURIDescriptor.ts b/lib/ethereum/s-tokens/setTokenURIDescriptor.ts new file mode 100644 index 000000000..996c51a1c --- /dev/null +++ b/lib/ethereum/s-tokens/setTokenURIDescriptor.ts @@ -0,0 +1,40 @@ +import { ethers, keccak256 } from 'ethers' +import { + execute, + FallbackableOverrides, + MutationOption, +} from '../../common/utils/execute' +import type { TransactionResponse } from 'ethers' + +export type CreateSetTokenURIDescriptorCaller = ( + contract: ethers.Contract, +) => ( + propertyAddress: string, + descriptorAddress: string, + payloads?: ReadonlyArray, + overrides?: FallbackableOverrides, +) => Promise + +export const createSetTokenURIDescriptorCaller: CreateSetTokenURIDescriptorCaller = + + (contract: ethers.Contract) => + async ( + propertyAddress: string, + descriptorAddress: string, + payloads?: ReadonlyArray, + overrides?: FallbackableOverrides, + ) => + execute({ + contract, + method: 'setTokenURIDescriptor', + mutation: true, + args: payloads + ? [ + propertyAddress, + descriptorAddress, + payloads.map((p) => (p instanceof Uint8Array ? keccak256(p) : p)), + ] + : [propertyAddress, descriptorAddress], + overrides, + interface: payloads ? 'address,address,bytes32[]' : 'address,address', + }) diff --git a/lib/ethereum/s-tokens/setTokenURIImage.spec.ts b/lib/ethereum/s-tokens/setTokenURIImage.spec.ts index e54b92b95..c4c6fd6fe 100644 --- a/lib/ethereum/s-tokens/setTokenURIImage.spec.ts +++ b/lib/ethereum/s-tokens/setTokenURIImage.spec.ts @@ -35,7 +35,7 @@ describe('setTokenURIImage.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (tokenId: string, data: string) => - Promise.reject(error) + Promise.reject(error), ), } diff --git a/lib/ethereum/s-tokens/setTokenURIImage.ts b/lib/ethereum/s-tokens/setTokenURIImage.ts index e71242474..97abd9df1 100644 --- a/lib/ethereum/s-tokens/setTokenURIImage.ts +++ b/lib/ethereum/s-tokens/setTokenURIImage.ts @@ -4,14 +4,14 @@ import { FallbackableOverrides, MutationOption, } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type CreateSetTokenURIImageCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => ( tokenId: number, data: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise export const createSetTokenURIImageCaller: CreateSetTokenURIImageCaller = diff --git a/lib/ethereum/s-tokens/tokenURI.spec.ts b/lib/ethereum/s-tokens/tokenURI.spec.ts index fe81cebcd..78c551377 100644 --- a/lib/ethereum/s-tokens/tokenURI.spec.ts +++ b/lib/ethereum/s-tokens/tokenURI.spec.ts @@ -5,10 +5,27 @@ describe('tokenURI.spec.ts', () => { it('call success', async () => { const data = { name: 'NAME', - description: 'DESCRIPTION', + description: 'DESCRIPTION_1\n\nDESCRIPTION_2', image: 'data:image/svg+xml;base64,', + attributes: [ + { + trait_type: 'Destination', + value: '0x0', + }, + { + trait_type: 'Locked Amount', + display_type: 'number', + value: 123.456, + }, + { + trait_type: 'Payload', + value: '0x1', + }, + ], } - const value = `data:application/json;base64,eyJuYW1lIjoiTkFNRSIsICJkZXNjcmlwdGlvbiI6IkRFU0NSSVBUSU9OIiwgImltYWdlIjogImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsPHN2Zz48L3N2Zz4ifQ==` + const value = `data:application/json;base64,${Buffer.from( + JSON.stringify(data), + ).toString('base64')}` const contract = { tokenURI: jest diff --git a/lib/ethereum/s-tokens/tokenURI.ts b/lib/ethereum/s-tokens/tokenURI.ts index 7dff392b3..242dfd13d 100644 --- a/lib/ethereum/s-tokens/tokenURI.ts +++ b/lib/ethereum/s-tokens/tokenURI.ts @@ -7,10 +7,25 @@ export type TokenURI = { readonly name: string readonly description: string readonly image: string + readonly attributes: readonly [ + { + readonly trait_type: 'Destination' + readonly value: string + }, + { + readonly trait_type: 'Locked Amount' + readonly display_type: 'number' + readonly value: number + }, + { + readonly trait_type: 'Payload' + readonly value: string + }, + ] } export type CreateTokenURICaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (tokenId: number) => Promise export const createTokenURICaller: CreateTokenURICaller = @@ -22,7 +37,7 @@ export const createTokenURICaller: CreateTokenURICaller = mutation: false, }) const decoded = decode( - res.replace(/^data:application\/json;base64,(.*)/, '$1') - ) + res.replace(/^data:application\/json;base64,(.*)/, '$1'), + ).replace(/\n/g, '\\n') return JSON.parse(decoded) } diff --git a/lib/ethereum/s-tokens/tokenURISim.spec.ts b/lib/ethereum/s-tokens/tokenURISim.spec.ts new file mode 100644 index 000000000..fccc55a64 --- /dev/null +++ b/lib/ethereum/s-tokens/tokenURISim.spec.ts @@ -0,0 +1,118 @@ +import { ZeroAddress, ZeroHash, keccak256, toUtf8Bytes } from 'ethers' +import { createTokenURISimCaller } from './tokenURISim' + +describe('tokenURISim.spec.ts', () => { + describe('createTokenURICaller', () => { + it('call success', async () => { + const data = { + name: 'NAME', + description: 'DESCRIPTION_1\n\nDESCRIPTION_2', + image: 'data:image/svg+xml;base64,', + attributes: [ + { + trait_type: 'Destination', + value: '0x0', + }, + { + trait_type: 'Locked Amount', + display_type: 'number', + value: 123.456, + }, + ], + } + const value = `data:application/json;base64,eyJuYW1lIjoiTkFNRSIsImRlc2NyaXB0aW9uIjoiREVTQ1JJUFRJT05fMVxuXG5ERVNDUklQVElPTl8yIiwiaW1hZ2UiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LDxzdmc+PC9zdmc+IiwiYXR0cmlidXRlcyI6W3sidHJhaXRfdHlwZSI6IkRlc3RpbmF0aW9uIiwidmFsdWUiOiIweDAifSx7InRyYWl0X3R5cGUiOiJMb2NrZWQgQW1vdW50IiwiZGlzcGxheV90eXBlIjoibnVtYmVyIiwidmFsdWUiOjEyMy40NTZ9XX0=` + + const contract = { + tokenURISim: jest + .fn() + .mockImplementation(async () => Promise.resolve(value)), + } + + const expected = data + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createTokenURISimCaller(contract as any) + + expect(await caller()).toEqual(expected) + }) + + it('apply defaut values', async () => { + const value = `data:application/json;base64,eyJuYW1lIjoiTkFNRSIsICJkZXNjcmlwdGlvbiI6IkRFU0NSSVBUSU9OIiwgImltYWdlIjogImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsPHN2Zz48L3N2Zz4ifQ==` + + const contract = { + tokenURISim: jest + .fn() + .mockImplementation(async () => Promise.resolve(value)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createTokenURISimCaller(contract as any) + + await caller() + await caller({ tokenId: 1 }) + await caller({ owner: '0xABC' }) + await caller({ positions: { pendingReward: '1', property: '0xXYZ' } }) + await caller({ rewards: { cumulativeReward: '2' } }) + await caller({ payload: toUtf8Bytes('ADDITIONAL_BYTES') }) + expect(contract.tokenURISim.mock.calls[0]).toEqual([ + '0', + ZeroAddress, + [ZeroAddress, '0', '0', '0', '0'], + ['0', '0', '0'], + ZeroHash, + ]) + expect(contract.tokenURISim.mock.calls[1]).toEqual([ + '1', + ZeroAddress, + [ZeroAddress, '0', '0', '0', '0'], + ['0', '0', '0'], + ZeroHash, + ]) + expect(contract.tokenURISim.mock.calls[2]).toEqual([ + '0', + '0xABC', + [ZeroAddress, '0', '0', '0', '0'], + ['0', '0', '0'], + ZeroHash, + ]) + expect(contract.tokenURISim.mock.calls[3]).toEqual([ + '0', + ZeroAddress, + ['0xXYZ', '0', '0', '0', '1'], + ['0', '0', '0'], + ZeroHash, + ]) + expect(contract.tokenURISim.mock.calls[4]).toEqual([ + '0', + ZeroAddress, + [ZeroAddress, '0', '0', '0', '0'], + ['0', '2', '0'], + ZeroHash, + ]) + expect(contract.tokenURISim.mock.calls[5]).toEqual([ + '0', + ZeroAddress, + [ZeroAddress, '0', '0', '0', '0'], + ['0', '0', '0'], + keccak256(toUtf8Bytes('ADDITIONAL_BYTES')), + ]) + }) + + it('call failure', async () => { + const error = 'error' + + const contract = { + tokenURISim: jest + .fn() + .mockImplementation(async () => Promise.reject(error)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createTokenURISimCaller(contract as any) + + const result = await caller().catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/ethereum/s-tokens/tokenURISim.ts b/lib/ethereum/s-tokens/tokenURISim.ts new file mode 100644 index 000000000..dbddef389 --- /dev/null +++ b/lib/ethereum/s-tokens/tokenURISim.ts @@ -0,0 +1,64 @@ +/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */ +import { decode } from 'js-base64' +import { ethers, ZeroAddress, ZeroHash } from 'ethers' +import { execute, QueryOption } from '../../common/utils/execute' +import { values } from 'ramda' +import { TokenURI } from './tokenURI' + +export type TokenURISimProps = { + readonly tokenId?: number + readonly owner?: string + readonly positions?: { + readonly property?: string + readonly amount?: string + readonly price?: string + readonly cumulativeReward?: string + readonly pendingReward?: string + } + readonly rewards?: { + readonly entireReward?: string + readonly cumulativeReward?: string + readonly withdrawableReward?: string + } + readonly payload?: string | Uint8Array +} + +export type CreateTokenURISimCaller = ( + contract: ethers.Contract, +) => (props?: TokenURISimProps) => Promise + +type DeepNonNullable = { + readonly [P in keyof T]-?: NonNullable +} +const defaultPositions: DeepNonNullable = { + property: ZeroAddress, + amount: '0', + price: '0', + cumulativeReward: '0', + pendingReward: '0', +} +const defaultRewards: DeepNonNullable = { + entireReward: '0', + cumulativeReward: '0', + withdrawableReward: '0', +} + +export const createTokenURISimCaller: CreateTokenURISimCaller = + (contract: ethers.Contract) => + async (props: TokenURISimProps = {}) => { + const tokenId = String(props.tokenId ?? 0) + const owner = props.owner ?? ZeroAddress + const positions = { ...defaultPositions, ...props.positions } + const rewards = { ...defaultRewards, ...props.rewards } + const payload = props.payload ? props.payload : ZeroHash + const res = await execute({ + contract, + method: 'tokenURISim', + args: [tokenId, owner, values(positions), values(rewards), payload], + mutation: false, + }) + const decoded = decode( + res.replace(/^data:application\/json;base64,(.*)/, '$1'), + ).replace(/\n/g, '\\n') + return JSON.parse(decoded) + } diff --git a/lib/ethereum/simpleCollection/abi.ts b/lib/ethereum/simpleCollection/abi.ts new file mode 100644 index 000000000..58ce30f97 --- /dev/null +++ b/lib/ethereum/simpleCollection/abi.ts @@ -0,0 +1,562 @@ +export const simpleCollectionsAbi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint8', + name: 'version', + type: 'uint8', + }, + ], + name: 'Initialized', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'previousOwner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'newOwner', + type: 'address', + }, + ], + name: 'OwnershipTransferred', + type: 'event', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'id', + type: 'uint256', + }, + { + internalType: 'address', + name: '', + type: 'address', + }, + { + components: [ + { + internalType: 'address', + name: 'property', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'price', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'cumulativeReward', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'pendingReward', + type: 'uint256', + }, + ], + internalType: 'struct ISTokensManagerStruct.StakingPositions', + name: '_positions', + type: 'tuple', + }, + { + components: [ + { + internalType: 'uint256', + name: 'entireReward', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'cumulativeReward', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'withdrawableReward', + type: 'uint256', + }, + ], + internalType: 'struct ISTokensManagerStruct.Rewards', + name: '', + type: 'tuple', + }, + { + internalType: 'bytes32', + name: 'key', + type: 'bytes32', + }, + ], + name: 'description', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'id', + type: 'uint256', + }, + { + internalType: 'address', + name: '', + type: 'address', + }, + { + components: [ + { + internalType: 'address', + name: 'property', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'price', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'cumulativeReward', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'pendingReward', + type: 'uint256', + }, + ], + internalType: 'struct ISTokensManagerStruct.StakingPositions', + name: '_positions', + type: 'tuple', + }, + { + components: [ + { + internalType: 'uint256', + name: 'entireReward', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'cumulativeReward', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'withdrawableReward', + type: 'uint256', + }, + ], + internalType: 'struct ISTokensManagerStruct.Rewards', + name: '', + type: 'tuple', + }, + { + internalType: 'bytes32', + name: 'key', + type: 'bytes32', + }, + ], + name: 'image', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_contract', + type: 'address', + }, + ], + name: 'initialize', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'id', + type: 'uint256', + }, + { + internalType: 'address', + name: '', + type: 'address', + }, + { + components: [ + { + internalType: 'address', + name: 'property', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'price', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'cumulativeReward', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'pendingReward', + type: 'uint256', + }, + ], + internalType: 'struct ISTokensManagerStruct.StakingPositions', + name: '_positions', + type: 'tuple', + }, + { + components: [ + { + internalType: 'uint256', + name: 'entireReward', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'cumulativeReward', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'withdrawableReward', + type: 'uint256', + }, + ], + internalType: 'struct ISTokensManagerStruct.Rewards', + name: '', + type: 'tuple', + }, + { + internalType: 'bytes32', + name: 'key', + type: 'bytes32', + }, + ], + name: 'name', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'id', + type: 'uint256', + }, + { + internalType: 'address', + name: '', + type: 'address', + }, + { + components: [ + { + internalType: 'address', + name: 'property', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'price', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'cumulativeReward', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'pendingReward', + type: 'uint256', + }, + ], + internalType: 'struct ISTokensManagerStruct.StakingPositions', + name: '_positions', + type: 'tuple', + }, + { + internalType: 'bytes32', + name: 'key', + type: 'bytes32', + }, + ], + name: 'onBeforeMint', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'owner', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + name: 'propertyImages', + outputs: [ + { + internalType: 'string', + name: 'src', + type: 'string', + }, + { + internalType: 'string', + name: 'name', + type: 'string', + }, + { + internalType: 'string', + name: 'description', + type: 'string', + }, + { + internalType: 'uint256', + name: 'requiredETHAmount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'requiredETHFee', + type: 'uint256', + }, + { + internalType: 'address', + name: 'gateway', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_propertyAddress', + type: 'address', + }, + { + internalType: 'bytes32', + name: '_key', + type: 'bytes32', + }, + ], + name: 'removeImage', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'renounceOwnership', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_propertyAddress', + type: 'address', + }, + { + components: [ + { + internalType: 'string', + name: 'src', + type: 'string', + }, + { + internalType: 'string', + name: 'name', + type: 'string', + }, + { + internalType: 'string', + name: 'description', + type: 'string', + }, + { + internalType: 'uint256', + name: 'requiredETHAmount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'requiredETHFee', + type: 'uint256', + }, + { + internalType: 'address', + name: 'gateway', + type: 'address', + }, + ], + internalType: 'struct SimpleCollections.Image[]', + name: '_images', + type: 'tuple[]', + }, + { + internalType: 'bytes32[]', + name: '_keys', + type: 'bytes32[]', + }, + ], + name: 'setImages', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_contract', + type: 'address', + }, + ], + name: 'setSwapAndStake', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'stakedAmountAtMinted', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'swapAndStake', + outputs: [ + { + internalType: 'contract ISwapAndStake', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'newOwner', + type: 'address', + }, + ], + name: 'transferOwnership', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, +] diff --git a/lib/ethereum/simpleCollection/description.spec.ts b/lib/ethereum/simpleCollection/description.spec.ts new file mode 100644 index 000000000..a30068b5a --- /dev/null +++ b/lib/ethereum/simpleCollection/description.spec.ts @@ -0,0 +1,93 @@ +import { Rewards } from '../s-tokens/rewards' +import { createQueryCaller } from './queryCaller' +import { Positions as StakingPosition } from '../s-tokens' + +describe('description.spec.ts', () => { + describe('createQueryCaller:description', () => { + it('call success', async () => { + const value = 'This is image description' + + const id = 1 + const address = '' + const stakingPositions = { + property: '0x0000000000000000000000000000000000000000', + amount: '0', + price: '0', + cumulativeReward: '0', + pendingReward: '0', + } + const rewards = { + entireReward: '0', + cumulativeReward: '0', + withdrawableReward: '0', + } + const keys = ['0x000'] + const devContract = { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + description: jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation( + async ( + id: number, + address: string, + stakingPositions: StakingPosition, + rewards: Rewards, + keys: readonly string[], + ) => value, + ), + } + const expected = value + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createQueryCaller(devContract as any, 'description') + const result = await caller(id, address, stakingPositions, rewards, keys) + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const error = 'error' + + const id = 1 + const address = '' + const stakingPositions = { + property: '0x0000000000000000000000000000000000000000', + amount: '0', + price: '0', + cumulativeReward: '0', + pendingReward: '0', + } + const rewards = { + entireReward: '0', + cumulativeReward: '0', + withdrawableReward: '0', + } + const keys = ['0x000'] + const devContract = { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + description: jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation( + async ( + id: number, + address: string, + stakingPositions: StakingPosition, + rewards: Rewards, + keys: readonly string[], + ) => Promise.reject(error), + ), + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createQueryCaller(devContract as any, 'description') + const result = await caller( + id, + address, + stakingPositions, + rewards, + keys, + ).catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/ethereum/simpleCollection/image.spec.ts b/lib/ethereum/simpleCollection/image.spec.ts new file mode 100644 index 000000000..af5f32de5 --- /dev/null +++ b/lib/ethereum/simpleCollection/image.spec.ts @@ -0,0 +1,93 @@ +import { Rewards } from '../s-tokens/rewards' +import { createQueryCaller } from './queryCaller' +import { Positions as StakingPosition } from '../s-tokens' + +describe('image.spec.ts', () => { + describe('createQueryCaller:image', () => { + it('call success', async () => { + const value = 'This is image url' + + const id = 1 + const address = '' + const stakingPositions = { + property: '0x0000000000000000000000000000000000000000', + amount: '0', + price: '0', + cumulativeReward: '0', + pendingReward: '0', + } + const rewards = { + entireReward: '0', + cumulativeReward: '0', + withdrawableReward: '0', + } + const keys = ['0x000'] + const devContract = { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + image: jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation( + async ( + id: number, + address: string, + stakingPositions: StakingPosition, + rewards: Rewards, + keys: readonly string[], + ) => value, + ), + } + const expected = value + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createQueryCaller(devContract as any, 'image') + const result = await caller(id, address, stakingPositions, rewards, keys) + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const error = 'error' + + const id = 1 + const address = '' + const stakingPositions = { + property: '0x0000000000000000000000000000000000000000', + amount: '0', + price: '0', + cumulativeReward: '0', + pendingReward: '0', + } + const rewards = { + entireReward: '0', + cumulativeReward: '0', + withdrawableReward: '0', + } + const keys = ['0x000'] + const devContract = { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + image: jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation( + async ( + id: number, + address: string, + stakingPositions: StakingPosition, + rewards: Rewards, + keys: readonly string[], + ) => Promise.reject(error), + ), + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createQueryCaller(devContract as any, 'image') + const result = await caller( + id, + address, + stakingPositions, + rewards, + keys, + ).catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/ethereum/simpleCollection/index.ts b/lib/ethereum/simpleCollection/index.ts new file mode 100644 index 000000000..11443a6ea --- /dev/null +++ b/lib/ethereum/simpleCollection/index.ts @@ -0,0 +1,25 @@ +import { ContractRunner, ethers } from 'ethers' + +import { createQueryCaller } from './queryCaller' +import { simpleCollectionsAbi } from './abi' +import { createSetImagesCaller } from './setImages' +import { createRemoveImageCaller } from './removeImage' + +export const createSimpleCollectionsContract = + (provider: ContractRunner) => (address: string) => { + const contractClient: ethers.Contract = new ethers.Contract( + address, + [...simpleCollectionsAbi], + provider, + ) + + return { + image: createQueryCaller(contractClient, 'image'), + name: createQueryCaller(contractClient, 'name'), + description: createQueryCaller(contractClient, 'description'), + setImages: createSetImagesCaller(contractClient), + removeImage: createRemoveImageCaller(contractClient), + } + } + +export { Image } from './types' diff --git a/lib/ethereum/simpleCollection/name.spec.ts b/lib/ethereum/simpleCollection/name.spec.ts new file mode 100644 index 000000000..5dd85b293 --- /dev/null +++ b/lib/ethereum/simpleCollection/name.spec.ts @@ -0,0 +1,93 @@ +import { Rewards } from '../s-tokens/rewards' +import { createQueryCaller } from './queryCaller' +import { Positions as StakingPosition } from '../s-tokens' + +describe('name.spec.ts', () => { + describe('createQueryCaller:name', () => { + it('call success', async () => { + const value = 'This is image name' + + const id = 1 + const address = '' + const stakingPositions = { + property: '0x0000000000000000000000000000000000000000', + amount: '0', + price: '0', + cumulativeReward: '0', + pendingReward: '0', + } + const rewards = { + entireReward: '0', + cumulativeReward: '0', + withdrawableReward: '0', + } + const keys = ['0x000'] + const devContract = { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + name: jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation( + async ( + id: number, + address: string, + stakingPositions: StakingPosition, + rewards: Rewards, + keys: readonly string[], + ) => value, + ), + } + const expected = value + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createQueryCaller(devContract as any, 'name') + const result = await caller(id, address, stakingPositions, rewards, keys) + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const error = 'error' + + const id = 1 + const address = '' + const stakingPositions = { + property: '0x0000000000000000000000000000000000000000', + amount: '0', + price: '0', + cumulativeReward: '0', + pendingReward: '0', + } + const rewards = { + entireReward: '0', + cumulativeReward: '0', + withdrawableReward: '0', + } + const keys = ['0x000'] + const devContract = { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + name: jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation( + async ( + id: number, + address: string, + stakingPositions: StakingPosition, + rewards: Rewards, + keys: readonly string[], + ) => Promise.reject(error), + ), + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createQueryCaller(devContract as any, 'name') + const result = await caller( + id, + address, + stakingPositions, + rewards, + keys, + ).catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/ethereum/simpleCollection/queryCaller.ts b/lib/ethereum/simpleCollection/queryCaller.ts new file mode 100644 index 000000000..a8edc96c2 --- /dev/null +++ b/lib/ethereum/simpleCollection/queryCaller.ts @@ -0,0 +1,34 @@ +import { ethers } from 'ethers' + +import { Rewards } from '../s-tokens/rewards' +import { execute, QueryOption } from '../../common/utils/execute' +import { Positions as StakingPosition } from '../s-tokens/positions' + +type QueryMethods = 'image' | 'name' | 'description' + +export type CreateQueryCaller = ( + contract: ethers.Contract, + method: QueryMethods, +) => ( + id: number, + address: string, + stakingPositions: StakingPosition, + rewards: Rewards, + keys: readonly string[], +) => Promise + +export const createQueryCaller: CreateQueryCaller = + (contract: ethers.Contract, method: QueryMethods) => + async ( + id: number, + address: string, + stakingPositions: StakingPosition, + rewards: Rewards, + keys: readonly string[], + ) => + execute({ + contract, + method: method, + args: [String(id), address, stakingPositions, rewards, keys], + mutation: false, + }) diff --git a/lib/ethereum/simpleCollection/removeImage.spec.ts b/lib/ethereum/simpleCollection/removeImage.spec.ts new file mode 100644 index 000000000..db24ec7b7 --- /dev/null +++ b/lib/ethereum/simpleCollection/removeImage.spec.ts @@ -0,0 +1,47 @@ +import { createRemoveImageCaller } from './removeImage' +import { stubTransactionResposeFactory } from '../../common/utils/for-test' + +describe('removeImage.spec.ts', () => { + describe('createRemoveImage', () => { + it('call success', async () => { + const propertyAddress = '0x0000000000000000000000000000000000000000' + const keys = ['0x000'] + + const success = stubTransactionResposeFactory({}) + const devContract = { + removeImage: jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation( + async (propertyAddress: string, keys: readonly string[]) => success, + ), + } + const expected = success + const caller = createRemoveImageCaller(devContract as any) + const result = await caller(propertyAddress, keys) + + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const propertyAddress = '0x0000000000000000000000000000000000000000' + const keys = ['0x000'] + + const error = 'error' + const devContract = { + removeImage: jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation( + async (propertyAddress: string, keys: readonly string[]) => + Promise.reject(error), + ), + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createRemoveImageCaller(devContract as any) + const result = await caller(propertyAddress, keys).catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/ethereum/simpleCollection/removeImage.ts b/lib/ethereum/simpleCollection/removeImage.ts new file mode 100644 index 000000000..f1d65311a --- /dev/null +++ b/lib/ethereum/simpleCollection/removeImage.ts @@ -0,0 +1,30 @@ +import { ethers } from 'ethers' +import { + execute, + FallbackableOverrides, + MutationOption, +} from '../../common/utils/execute' +import type { TransactionResponse } from 'ethers' + +export type RemoveImage = ( + contract: ethers.Contract, +) => ( + propertyAddress: string, + keys: readonly string[], + overrides?: FallbackableOverrides, +) => Promise + +export const createRemoveImageCaller: RemoveImage = + (contract: ethers.Contract) => + async ( + propertyAddress: string, + keys: readonly string[], + overrides?: FallbackableOverrides, + ) => + execute({ + contract, + method: 'removeImage', + mutation: true, + args: [propertyAddress, keys], + overrides, + }) diff --git a/lib/ethereum/simpleCollection/setImages.spec.ts b/lib/ethereum/simpleCollection/setImages.spec.ts new file mode 100644 index 000000000..2d3ca4c8d --- /dev/null +++ b/lib/ethereum/simpleCollection/setImages.spec.ts @@ -0,0 +1,73 @@ +import { Image } from './types' +import { createSetImagesCaller } from './setImages' +import { stubTransactionResposeFactory } from '../../common/utils/for-test' + +describe('setImages.spec.ts', () => { + describe('createSetImages', () => { + it('call success', async () => { + const propertyAddress = '0x0000000000000000000000000000000000000000' + const images = [ + { + src: 'https://example.com', + requiredETHAmount: 0, + requiredETHFee: 0, + gateway: '0x0000000000000000000000000000000000000000', + }, + ] + const keys = ['0x000'] + + const success = stubTransactionResposeFactory({}) + const devContract = { + setImages: jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation( + async ( + propertyAddress: string, + images: readonly Image[], + keys: readonly string[], + ) => success, + ), + } + const expected = success + const caller = createSetImagesCaller(devContract as any) + const result = await caller(propertyAddress, images, keys) + + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const propertyAddress = '0x0000000000000000000000000000000000000000' + const images = [ + { + src: 'https://example.com', + requiredETHAmount: 0, + requiredETHFee: 0, + gateway: '0x0000000000000000000000000000000000000000', + }, + ] + const keys = ['0x000'] + + const error = 'error' + const devContract = { + setImages: jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation( + async ( + propertyAddress: string, + images: readonly Image[], + keys: readonly string[], + ) => Promise.reject(error), + ), + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createSetImagesCaller(devContract as any) + const result = await caller(propertyAddress, images, keys).catch( + (err) => err, + ) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/ethereum/simpleCollection/setImages.ts b/lib/ethereum/simpleCollection/setImages.ts new file mode 100644 index 000000000..45158cb8f --- /dev/null +++ b/lib/ethereum/simpleCollection/setImages.ts @@ -0,0 +1,34 @@ +import { ethers } from 'ethers' +import { + execute, + FallbackableOverrides, + MutationOption, +} from '../../common/utils/execute' +import type { TransactionResponse } from 'ethers' + +import { Image } from './types' + +export type SetImages = ( + contract: ethers.Contract, +) => ( + propertyAddress: string, + images: readonly Image[], + keys: readonly string[], + overrides?: FallbackableOverrides, +) => Promise + +export const createSetImagesCaller: SetImages = + (contract: ethers.Contract) => + async ( + propertyAddress: string, + images: readonly Image[], + keys: readonly string[], + overrides?: FallbackableOverrides, + ) => + execute({ + contract, + method: 'setImages', + mutation: true, + args: [propertyAddress, images, keys], + overrides, + }) diff --git a/lib/ethereum/simpleCollection/types.ts b/lib/ethereum/simpleCollection/types.ts new file mode 100644 index 000000000..34898731d --- /dev/null +++ b/lib/ethereum/simpleCollection/types.ts @@ -0,0 +1,8 @@ +export type Image = { + readonly src?: string + readonly name?: string + readonly description?: string + readonly requiredETHAmount?: number | string + readonly requiredETHFee?: number | string + readonly gateway?: string +} diff --git a/lib/ethereum/withdraw/bulkWithdraw.spec.ts b/lib/ethereum/withdraw/bulkWithdraw.spec.ts index af0ab9afc..56bd06d26 100644 --- a/lib/ethereum/withdraw/bulkWithdraw.spec.ts +++ b/lib/ethereum/withdraw/bulkWithdraw.spec.ts @@ -11,7 +11,7 @@ describe('bulkWithdraw.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (properties: readonly string[]) => - Promise.resolve(stubTx) + Promise.resolve(stubTx), ), } @@ -31,7 +31,7 @@ describe('bulkWithdraw.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (properties: readonly string[]) => - Promise.reject(err) + Promise.reject(err), ), } diff --git a/lib/ethereum/withdraw/bulkWithdraw.ts b/lib/ethereum/withdraw/bulkWithdraw.ts index c9a3f7c71..061d0200a 100644 --- a/lib/ethereum/withdraw/bulkWithdraw.ts +++ b/lib/ethereum/withdraw/bulkWithdraw.ts @@ -1,9 +1,9 @@ import { ethers } from 'ethers' import { execute, MutationOption } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type CreateBulkWithdrawCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (propertyAddresses: readonly string[]) => Promise export const createBulkWithdrawCaller: CreateBulkWithdrawCaller = diff --git a/lib/ethereum/withdraw/calculateRewardAmount.spec.ts b/lib/ethereum/withdraw/calculateRewardAmount.spec.ts index 25e268ef6..76d584362 100644 --- a/lib/ethereum/withdraw/calculateRewardAmount.spec.ts +++ b/lib/ethereum/withdraw/calculateRewardAmount.spec.ts @@ -10,7 +10,7 @@ describe('calculateRewardAmount.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (address: string) => - Promise.resolve(value) + Promise.resolve(value), ), } @@ -21,7 +21,7 @@ describe('calculateRewardAmount.spec.ts', () => { const result = await caller( '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', - '0xC7b8B28E498233113b270B1E1e0f91049a31467a' + '0xC7b8B28E498233113b270B1E1e0f91049a31467a', ) expect(result).toEqual(expected) @@ -42,7 +42,7 @@ describe('calculateRewardAmount.spec.ts', () => { const result = await caller( '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', - '0xC7b8B28E498233113b270B1E1e0f91049a31467a' + '0xC7b8B28E498233113b270B1E1e0f91049a31467a', ).catch((err) => err) expect(result).toEqual(error) diff --git a/lib/ethereum/withdraw/calculateRewardAmount.ts b/lib/ethereum/withdraw/calculateRewardAmount.ts index 0e775792e..c19baa4b4 100644 --- a/lib/ethereum/withdraw/calculateRewardAmount.ts +++ b/lib/ethereum/withdraw/calculateRewardAmount.ts @@ -2,7 +2,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type calculateRewardAmountCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (propertyAddress: string, accountAddress: string) => Promise export const calculateRewardAmountCaller: calculateRewardAmountCaller = diff --git a/lib/ethereum/withdraw/calculateWithdrawableAmount.spec.ts b/lib/ethereum/withdraw/calculateWithdrawableAmount.spec.ts index e6b719216..013f39faa 100644 --- a/lib/ethereum/withdraw/calculateWithdrawableAmount.spec.ts +++ b/lib/ethereum/withdraw/calculateWithdrawableAmount.spec.ts @@ -10,7 +10,7 @@ describe('calculateWithdrawableAmount.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (address: string) => - Promise.resolve(value) + Promise.resolve(value), ), } @@ -18,12 +18,12 @@ describe('calculateWithdrawableAmount.spec.ts', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createCalculateWithdrawableAmountCaller( - withdrawContract as any + withdrawContract as any, ) const result = await caller( '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', - '0xC7b8B28E498233113b270B1E1e0f91049a31467a' + '0xC7b8B28E498233113b270B1E1e0f91049a31467a', ) expect(result).toEqual(expected) @@ -41,12 +41,12 @@ describe('calculateWithdrawableAmount.spec.ts', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createCalculateWithdrawableAmountCaller( - withdrawContract as any + withdrawContract as any, ) const result = await caller( '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', - '0xC7b8B28E498233113b270B1E1e0f91049a31467a' + '0xC7b8B28E498233113b270B1E1e0f91049a31467a', ).catch((err) => err) expect(result).toEqual(error) diff --git a/lib/ethereum/withdraw/calculateWithdrawableAmount.ts b/lib/ethereum/withdraw/calculateWithdrawableAmount.ts index c7010ce1b..8e0b0da6e 100644 --- a/lib/ethereum/withdraw/calculateWithdrawableAmount.ts +++ b/lib/ethereum/withdraw/calculateWithdrawableAmount.ts @@ -2,7 +2,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type CreateCalculateWithdrawableAmountCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (propertyAddress: string, accountAddress: string) => Promise export const createCalculateWithdrawableAmountCaller: CreateCalculateWithdrawableAmountCaller = diff --git a/lib/ethereum/withdraw/getRewardsAmount.spec.ts b/lib/ethereum/withdraw/getRewardsAmount.spec.ts index b572e43e1..a2b9f2d6b 100644 --- a/lib/ethereum/withdraw/getRewardsAmount.spec.ts +++ b/lib/ethereum/withdraw/getRewardsAmount.spec.ts @@ -10,7 +10,7 @@ describe('getRewardsAmount.spec.ts', () => { .fn() // eslint-disable-next-line @typescript-eslint/no-unused-vars .mockImplementation(async (address: string) => - Promise.resolve(value) + Promise.resolve(value), ), } @@ -38,7 +38,7 @@ describe('getRewardsAmount.spec.ts', () => { const caller = createGetRewardsAmountCaller(withdrawContract as any) const result = await caller( - '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5' + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', ).catch((err) => err) expect(result).toEqual(error) diff --git a/lib/ethereum/withdraw/getRewardsAmount.ts b/lib/ethereum/withdraw/getRewardsAmount.ts index db05a2398..2f1ebae0d 100644 --- a/lib/ethereum/withdraw/getRewardsAmount.ts +++ b/lib/ethereum/withdraw/getRewardsAmount.ts @@ -2,7 +2,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type CreateGetRewardsAmountCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (address: string) => Promise export const createGetRewardsAmountCaller: CreateGetRewardsAmountCaller = diff --git a/lib/ethereum/withdraw/index.spec.ts b/lib/ethereum/withdraw/index.spec.ts index 1b66c090f..49a00137b 100644 --- a/lib/ethereum/withdraw/index.spec.ts +++ b/lib/ethereum/withdraw/index.spec.ts @@ -12,36 +12,30 @@ jest.mock('./bulkWithdraw') jest.mock('./getRewardsAmount') jest.mock('./calculateWithdrawableAmount') jest.mock('./calculateRewardAmount') +jest.mock('ethers') describe('lockup/index.ts', () => { - ;(createWithdrawCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createBulkWithdrawCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createGetRewardsAmountCaller as jest.Mock).mockImplementation( - (contract) => contract - ) + ;(createWithdrawCaller as jest.Mock).mockImplementation(() => 123) + ;(createBulkWithdrawCaller as jest.Mock).mockImplementation(() => 123) + ;(createGetRewardsAmountCaller as jest.Mock).mockImplementation(() => 123) ;(createCalculateWithdrawableAmountCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(calculateRewardAmountCaller as jest.Mock).mockImplementation( - (contract) => contract + () => 123, ) + ;(calculateRewardAmountCaller as jest.Mock).mockImplementation(() => 123) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) describe('createLockupContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => WithdrawContract = ( - address: string + address: string, ) => { const contract = new ethers.Contract( address, [...withdrawAbi], - provider + provider, ) return { withdraw: createWithdrawCaller(contract), @@ -50,6 +44,7 @@ describe('lockup/index.ts', () => { calculateWithdrawableAmount: createCalculateWithdrawableAmountCaller(contract), calculateRewardAmount: calculateRewardAmountCaller(contract), + contract: () => contract, } } @@ -57,7 +52,7 @@ describe('lockup/index.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/ethereum/withdraw/index.ts b/lib/ethereum/withdraw/index.ts index f0fa5739d..93d8e3bc4 100644 --- a/lib/ethereum/withdraw/index.ts +++ b/lib/ethereum/withdraw/index.ts @@ -1,36 +1,35 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' import { withdrawAbi } from './abi' import { createWithdrawCaller } from './withdraw' import { createGetRewardsAmountCaller } from './getRewardsAmount' import { createCalculateWithdrawableAmountCaller } from './calculateWithdrawableAmount' import { createBulkWithdrawCaller } from './bulkWithdraw' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' import { calculateRewardAmountCaller } from './calculateRewardAmount' import { FallbackableOverrides } from '../../common/utils/execute' export type WithdrawContract = { readonly withdraw: ( propertyAddress: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly bulkWithdraw: ( - propertyAddresses: readonly string[] + propertyAddresses: readonly string[], ) => Promise readonly getRewardsAmount: (propertyAddress: string) => Promise readonly calculateWithdrawableAmount: ( propertyAddress: string, - accountAddress: string + accountAddress: string, ) => Promise readonly calculateRewardAmount: ( propertyAddress: string, - accountAddress: string + accountAddress: string, ) => Promise + readonly contract: () => ethers.Contract } export const createWithdrawContract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): WithdrawContract => { const contract = new ethers.Contract(address, [...withdrawAbi], provider) @@ -41,5 +40,6 @@ export const createWithdrawContract = calculateWithdrawableAmount: createCalculateWithdrawableAmountCaller(contract), calculateRewardAmount: calculateRewardAmountCaller(contract), + contract: () => contract, } } diff --git a/lib/ethereum/withdraw/withdraw.ts b/lib/ethereum/withdraw/withdraw.ts index ee7a4bd05..9e1442451 100644 --- a/lib/ethereum/withdraw/withdraw.ts +++ b/lib/ethereum/withdraw/withdraw.ts @@ -4,13 +4,13 @@ import { FallbackableOverrides, MutationOption, } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type CreateWithdrawCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => ( propertyAddress: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise export const createWithdrawCaller: CreateWithdrawCaller = diff --git a/lib/index.ts b/lib/index.ts index 93e8e6c9d..cbe259aa0 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -1,6 +1,47 @@ -import { contractFactory } from './ethereum/contract' -import { addresses } from './addresses' -import { utils } from './common/utils' -import { client } from './ethereum/client' +export * from './addresses' +export * from './common/erc20' +export * from './common/utils' +export * from './common/option' +export * from './marketAddresses' +export * from './ethereum/contract' +export * from './ethereum/client' +export * from './ethereum/allocator' +export * from './ethereum/dev' +export * from './ethereum/lockup' +export * from './ethereum/market' +export * from './ethereum/market-behavior' +export * from './ethereum/market-factory' +export * from './ethereum/metrics' +// export * from './ethereum/metrics-factory' +export * from './ethereum/metrics-group' +export * from './ethereum/policy' +export * from './ethereum/policy-factory' +export * from './ethereum/policy-group' +export * from './ethereum/property' +export * from './ethereum/property-factory' +export * from './ethereum/registry' +export * from './ethereum/s-tokens' +export * from './ethereum/simpleCollection' +export * from './ethereum/withdraw' -export default { contractFactory, addresses, utils, client } +export * from './common/erc20/abi' +export * from './ethereum/allocator/abi' +export * from './ethereum/dev/abi' +export * from './ethereum/lockup/abi' +export * from './ethereum/market/abi' +export * from './ethereum/market-behavior/abi' +export * from './ethereum/market-factory/abi' +export * from './ethereum/metrics/abi' +export * from './ethereum/metrics-factory/abi' +export * from './ethereum/metrics-group/abi' +export * from './ethereum/policy/abi' +export * from './ethereum/policy-factory/abi' +export * from './ethereum/policy-group/abi' +export * from './ethereum/property/abi' +export * from './ethereum/property-factory/abi' +export * from './ethereum/registry/abi' +export * from './ethereum/s-tokens/abi' +export * from './ethereum/simpleCollection/abi' +export * from './ethereum/withdraw/abi' + +export * from './agent' diff --git a/lib/l2/client/index.ts b/lib/l2/client/index.ts index 594d89fa7..14b6b0909 100644 --- a/lib/l2/client/index.ts +++ b/lib/l2/client/index.ts @@ -7,3 +7,5 @@ export type DevkitClient = { export const client: DevkitClient = { createDetectSTokens, } + +export { createDetectSTokens } diff --git a/lib/l2/contract.spec.ts b/lib/l2/contract.spec.ts index 11c5c6f8f..6aabc737b 100644 --- a/lib/l2/contract.spec.ts +++ b/lib/l2/contract.spec.ts @@ -23,7 +23,7 @@ describe('contract.ts', () => { describe('createDevkitContract', () => { it('check return object', () => { const host = 'localhost' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: DevkitContract = { market: createMarketContract(provider), @@ -51,7 +51,7 @@ describe('contract.ts', () => { describe('contractFactory', () => { it('check return object', () => { const host = 'localhost' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected = createDevkitContract(provider) const result = contractFactory(provider) diff --git a/lib/l2/contract.ts b/lib/l2/contract.ts index f34a790df..424671cc0 100644 --- a/lib/l2/contract.ts +++ b/lib/l2/contract.ts @@ -1,7 +1,5 @@ /* eslint-disable functional/no-throw-statement */ /* eslint-disable functional/no-conditional-statement */ -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' import { createMarketContract } from './market/index' import { createMarketBehaviorContract } from './market-behavior/index' import { createPropertyContract } from './property/index' @@ -16,6 +14,7 @@ import { createPolicyFactoryContract } from './policy-factory' import { createSTokensContract } from './s-tokens' import { createMarketFactoryContract } from './market-factory' import { createMetricsFactoryContract } from './metrics-factory' +import { ContractRunner } from 'ethers' export type DevkitContract = { readonly market: ReturnType @@ -33,15 +32,11 @@ export type DevkitContract = { readonly policyFactory: ReturnType readonly sTokens: ReturnType } -export type ContractFactory = ( - ethersProvider: Provider | Signer -) => DevkitContract -export type CreateDevkitContract = ( - provider: Provider | Signer -) => DevkitContract +export type ContractFactory = (ethersProvider: ContractRunner) => DevkitContract +export type CreateDevkitContract = (provider: ContractRunner) => DevkitContract export const createDevkitContract: CreateDevkitContract = ( - provider: Provider | Signer + provider: ContractRunner, ): DevkitContract => ({ market: createMarketContract(provider), marketBehavior: createMarketBehaviorContract(provider), diff --git a/lib/l2/dev/abi.ts b/lib/l2/dev/abi.ts new file mode 100644 index 000000000..88aaa6a48 --- /dev/null +++ b/lib/l2/dev/abi.ts @@ -0,0 +1 @@ +export * from '../../ethereum/dev/abi' diff --git a/lib/l2/erc20/abi.ts b/lib/l2/erc20/abi.ts new file mode 100644 index 000000000..a0f5ac211 --- /dev/null +++ b/lib/l2/erc20/abi.ts @@ -0,0 +1 @@ +export * from '../../common/erc20/abi' diff --git a/lib/l2/index.ts b/lib/l2/index.ts new file mode 100644 index 000000000..0897989ec --- /dev/null +++ b/lib/l2/index.ts @@ -0,0 +1,33 @@ +export * from './contract' +export * from './client' +export * from './dev' +export * from './erc20' +export * from './lockup' +export * from './market' +export * from './market-behavior' +export * from './market-factory' +export * from './metrics' +export * from './metrics-factory' +export * from './policy' +export * from './policy-factory' +export * from './property' +export * from './property-factory' +export * from './registry' +export * from './s-tokens' +export * from './withdraw' + +export * from './dev/abi' +export * from './erc20/abi' +export * from './lockup/abi' +export * from './market/abi' +export * from './market-behavior/abi' +export * from './market-factory/abi' +export * from './metrics/abi' +export * from './metrics-factory/abi' +export * from './policy/abi' +export * from './policy-factory/abi' +export * from './property/abi' +export * from './property-factory/abi' +export * from './registry/abi' +export * from './s-tokens/abi' +export * from './withdraw/abi' diff --git a/lib/l2/lockup/abi.ts b/lib/l2/lockup/abi.ts index 9951f6981..5f1e41b97 100644 --- a/lib/l2/lockup/abi.ts +++ b/lib/l2/lockup/abi.ts @@ -92,6 +92,7 @@ export const lockupAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [], @@ -105,6 +106,7 @@ export const lockupAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [], @@ -118,6 +120,7 @@ export const lockupAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [ @@ -137,6 +140,7 @@ export const lockupAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [], @@ -150,6 +154,7 @@ export const lockupAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [ @@ -169,6 +174,7 @@ export const lockupAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [], @@ -182,6 +188,7 @@ export const lockupAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [ @@ -201,6 +208,7 @@ export const lockupAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [], @@ -214,6 +222,7 @@ export const lockupAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [], @@ -227,6 +236,7 @@ export const lockupAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [], @@ -240,6 +250,7 @@ export const lockupAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [], @@ -253,6 +264,7 @@ export const lockupAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [], @@ -266,6 +278,7 @@ export const lockupAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [], @@ -279,6 +292,7 @@ export const lockupAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [ @@ -298,6 +312,7 @@ export const lockupAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [ @@ -336,6 +351,35 @@ export const lockupAbi = [ stateMutability: 'nonpayable', type: 'function', }, + { + inputs: [ + { + internalType: 'address', + name: '_property', + type: 'address', + }, + { + internalType: 'uint256', + name: '_amount', + type: 'uint256', + }, + { + internalType: 'bytes32', + name: '_payload', + type: 'bytes32', + }, + ], + name: 'depositToProperty', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, { inputs: [ { @@ -408,6 +452,7 @@ export const lockupAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [ @@ -449,6 +494,7 @@ export const lockupAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [ @@ -473,6 +519,7 @@ export const lockupAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, { inputs: [], @@ -499,5 +546,6 @@ export const lockupAbi = [ ], stateMutability: 'view', type: 'function', + constant: true, }, ] diff --git a/lib/l2/lockup/getLockedupProperties.spec.ts b/lib/l2/lockup/getLockedupProperties.spec.ts index e52a4e13e..420c617fd 100644 --- a/lib/l2/lockup/getLockedupProperties.spec.ts +++ b/lib/l2/lockup/getLockedupProperties.spec.ts @@ -1,13 +1,12 @@ -import { BigNumber } from 'ethers' import { createGetLockedupPropertiesCaller } from './getLockedupProperties' describe('getLockedupProperties.spec.ts', () => { describe('createGetLockedupPropertiesCaller', () => { it('call success', async () => { const value = [ - { property: '0x0', value: BigNumber.from(1) }, - { property: '0x1', value: BigNumber.from(2) }, - { property: '0x2', value: BigNumber.from(3) }, + { property: '0x0', value: 1n }, + { property: '0x1', value: 2n }, + { property: '0x2', value: 3n }, ] const lockupContract = { diff --git a/lib/l2/lockup/getLockedupProperties.ts b/lib/l2/lockup/getLockedupProperties.ts index 3fee30e74..a1bac662e 100644 --- a/lib/l2/lockup/getLockedupProperties.ts +++ b/lib/l2/lockup/getLockedupProperties.ts @@ -8,7 +8,7 @@ export type LockedupProperty = Readonly<{ }> export type CreateGetLockedupPropertiesCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createGetLockedupPropertiesCaller: CreateGetLockedupPropertiesCaller = @@ -18,5 +18,5 @@ export const createGetLockedupPropertiesCaller: CreateGetLockedupPropertiesCalle contract, method: 'getLockedupProperties', mutation: false, - }) + }), ) diff --git a/lib/l2/lockup/index.spec.ts b/lib/l2/lockup/index.spec.ts index f29c708cd..ffd3b36f6 100644 --- a/lib/l2/lockup/index.spec.ts +++ b/lib/l2/lockup/index.spec.ts @@ -24,47 +24,41 @@ jest.mock('../../ethereum/lockup/calculateWithdrawableInterestAmountByPosition') jest.mock('./totalLocked') jest.mock('./totalLockedForProperty') jest.mock('./getLockedupProperties') +jest.mock('ethers') describe('lockup/index.ts', () => { ;( createCalculateCumulativeHoldersRewardAmountCaller as jest.Mock - ).mockImplementation((contract) => contract) + ).mockImplementation(() => 123) ;( createCalculateCumulativeRewardPricesCaller as jest.Mock - ).mockImplementation((contract) => contract) + ).mockImplementation(() => 123) ;(createCalculateRewardAmountCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createDepositToPropertyCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createDepositToPositionCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createWithdrawByPositionCaller as jest.Mock).mockImplementation( - (contract) => contract + () => 123, ) + ;(createDepositToPropertyCaller as jest.Mock).mockImplementation(() => 123) + ;(createDepositToPositionCaller as jest.Mock).mockImplementation(() => 123) + ;(createWithdrawByPositionCaller as jest.Mock).mockImplementation(() => 123) ;( createcalculateWithdrawableInterestAmountByPositionCaller as jest.Mock - ).mockImplementation((contract) => contract) - ;(createTotalLockedCaller as jest.Mock).mockImplementation( - (contract) => contract - ) + ).mockImplementation(() => 123) + ;(createTotalLockedCaller as jest.Mock).mockImplementation(() => 123) ;(createTotalLockedForPropertyCaller as jest.Mock).mockImplementation( - (contract) => contract + () => 123, ) ;(createGetLockedupPropertiesCaller as jest.Mock).mockImplementation( - (contract) => contract + () => 123, ) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) describe('createLockupContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => LockupContract = ( - address: string + address: string, ) => { const contract = new ethers.Contract(address, [...lockupAbi], provider) return { @@ -82,6 +76,7 @@ describe('lockup/index.ts', () => { totalLocked: createTotalLockedCaller(contract), totalLockedForProperty: createTotalLockedForPropertyCaller(contract), getLockedupProperties: createGetLockedupPropertiesCaller(contract), + contract: () => contract, } } @@ -89,7 +84,7 @@ describe('lockup/index.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/l2/lockup/index.ts b/lib/l2/lockup/index.ts index 3de78a760..4900bab36 100644 --- a/lib/l2/lockup/index.ts +++ b/lib/l2/lockup/index.ts @@ -1,6 +1,4 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' import { lockupAbi } from './abi' import { createTotalLockedCaller } from './totalLocked' import { createTotalLockedForPropertyCaller } from './totalLockedForProperty' @@ -16,41 +14,47 @@ import { createGetLockedupPropertiesCaller, LockedupProperty, } from './getLockedupProperties' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' +import { FallbackableOverrides } from '../../common/utils/execute' export type LockupContract = { readonly withdrawByPosition: ( positionTokenId: string, - amount: string + amount: string, + overrides?: FallbackableOverrides, ) => Promise readonly calculateWithdrawableInterestAmountByPosition: ( - positionTokenId: string + positionTokenId: string, ) => Promise readonly calculateCumulativeHoldersRewardAmount: ( - propertyAddress: string + propertyAddress: string, ) => Promise readonly calculateCumulativeRewardPrices: () => Promise< readonly [string, string, string, string] > readonly calculateRewardAmount: ( - propertyAddress: string + propertyAddress: string, ) => Promise readonly cap: () => Promise readonly depositToProperty: ( propertyAddress: string, - amount: string + amount: string, + payload?: string | Uint8Array, + overrides?: FallbackableOverrides, ) => Promise readonly depositToPosition: ( positionTokenId: string, - amount: string + amount: string, + overrides?: FallbackableOverrides, ) => Promise readonly totalLocked: () => Promise readonly totalLockedForProperty: (address: string) => Promise readonly getLockedupProperties: () => Promise + readonly contract: () => ethers.Contract } export const createLockupContract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): LockupContract => { const contract = new ethers.Contract(address, [...lockupAbi], provider) @@ -69,5 +73,6 @@ export const createLockupContract = totalLocked: createTotalLockedCaller(contract), totalLockedForProperty: createTotalLockedForPropertyCaller(contract), getLockedupProperties: createGetLockedupPropertiesCaller(contract), + contract: () => contract, } } diff --git a/lib/l2/lockup/totalLocked.ts b/lib/l2/lockup/totalLocked.ts index dd6ddc9b0..dc01c2407 100644 --- a/lib/l2/lockup/totalLocked.ts +++ b/lib/l2/lockup/totalLocked.ts @@ -4,12 +4,12 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateTotalLockedCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createTotalLockedCaller: CreateTotalLockedCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( - execute({ contract, method: 'totalLocked', mutation: false }) + execute({ contract, method: 'totalLocked', mutation: false }), ) diff --git a/lib/l2/lockup/totalLockedForProperty.spec.ts b/lib/l2/lockup/totalLockedForProperty.spec.ts index 3ea6d81d3..5eb35b0a9 100644 --- a/lib/l2/lockup/totalLockedForProperty.spec.ts +++ b/lib/l2/lockup/totalLockedForProperty.spec.ts @@ -34,7 +34,7 @@ describe('totalLockedForProperty.spec.ts', () => { const caller = createTotalLockedForPropertyCaller(lockupContract as any) const result = await caller( - '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5' + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', ).catch((err) => err) expect(result).toEqual(error) diff --git a/lib/l2/lockup/totalLockedForProperty.ts b/lib/l2/lockup/totalLockedForProperty.ts index 6643149df..6898d19c4 100644 --- a/lib/l2/lockup/totalLockedForProperty.ts +++ b/lib/l2/lockup/totalLockedForProperty.ts @@ -3,7 +3,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type CreateTotalLockedForPropertyCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (address: string) => Promise export const createTotalLockedForPropertyCaller: CreateTotalLockedForPropertyCaller = diff --git a/lib/l2/market-behavior/abi.ts b/lib/l2/market-behavior/abi.ts new file mode 100644 index 000000000..940bfd505 --- /dev/null +++ b/lib/l2/market-behavior/abi.ts @@ -0,0 +1 @@ +export * from '../../ethereum/market-behavior/abi' diff --git a/lib/l2/market-factory/getEnabledMarkets.ts b/lib/l2/market-factory/getEnabledMarkets.ts index ca68cb79b..89adcaa98 100644 --- a/lib/l2/market-factory/getEnabledMarkets.ts +++ b/lib/l2/market-factory/getEnabledMarkets.ts @@ -3,16 +3,16 @@ import { always } from 'ramda' import { execute, QueryOption } from '../../common/utils/execute' export type CreateGetEnabledMarketsCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createGetEnabledMarketsCaller: CreateGetEnabledMarketsCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'getEnabledMarkets', mutation: false, - }) + }), ) diff --git a/lib/l2/market-factory/index.spec.ts b/lib/l2/market-factory/index.spec.ts index 14ad9bc98..4dba0cbfa 100644 --- a/lib/l2/market-factory/index.spec.ts +++ b/lib/l2/market-factory/index.spec.ts @@ -6,26 +6,29 @@ import { createGetEnabledMarketsCaller } from './getEnabledMarkets' jest.mock('../../ethereum/market-factory/create') jest.mock('./getEnabledMarkets') +jest.mock('ethers') describe('market-factory/index.ts', () => { - ;(createCreateCaller as jest.Mock).mockImplementation((contract) => contract) + ;(createCreateCaller as jest.Mock).mockImplementation(() => 123) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) describe('createMarketFactoryContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => MarketFactoryContract = ( - address: string + address: string, ) => { const contract = new ethers.Contract( address, [...marketFactoryAbi], - provider + provider, ) return { create: createCreateCaller(contract), getEnabledMarkets: createGetEnabledMarketsCaller(contract), + contract: () => contract, } } @@ -33,7 +36,7 @@ describe('market-factory/index.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/l2/market-factory/index.ts b/lib/l2/market-factory/index.ts index 570759d51..011f25017 100644 --- a/lib/l2/market-factory/index.ts +++ b/lib/l2/market-factory/index.ts @@ -1,28 +1,28 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' import { marketFactoryAbi } from './abi' import { createCreateCaller } from '../../ethereum/market-factory/create' import { createGetEnabledMarketsCaller } from './getEnabledMarkets' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type MarketFactoryContract = { readonly create: ( - marketBehaviorAddress: string + marketBehaviorAddress: string, ) => Promise readonly getEnabledMarkets: () => Promise + readonly contract: () => ethers.Contract } export const createMarketFactoryContract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): MarketFactoryContract => { const contract = new ethers.Contract( address, [...marketFactoryAbi], - provider + provider, ) return { create: createCreateCaller(contract), getEnabledMarkets: createGetEnabledMarketsCaller(contract), + contract: () => contract, } } diff --git a/lib/l2/market/authenticate.ts b/lib/l2/market/authenticate.ts index e0dae23eb..74f801e48 100644 --- a/lib/l2/market/authenticate.ts +++ b/lib/l2/market/authenticate.ts @@ -4,9 +4,7 @@ /* eslint-disable functional/no-loop-statement */ /* eslint-disable functional/no-expression-statement */ /* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */ -import { Signer } from '@ethersproject/abstract-signer' -import { Provider } from '@ethersproject/abstract-provider' -import { ethers } from 'ethers' +import { ContractRunner, ethers } from 'ethers' import { execute, FallbackableOverrides, @@ -17,7 +15,7 @@ import { metricsFactoryAbi } from '../metrics-factory/abi' export const getMetricsProperty = async ( address: string, - provider: Provider | Signer + provider: ContractRunner, ): Promise => execute({ contract: new ethers.Contract(address, metricsAbi, provider), @@ -31,21 +29,21 @@ export type WaitForEventOptions = { export type CreateAuthenticateCaller = ( contract: ethers.Contract, - provider: Provider | Signer + provider: ContractRunner, ) => ( propertyAddress: string, args: readonly string[], options: WaitForEventOptions, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise export const createAuthenticateCaller: CreateAuthenticateCaller = - (contract: ethers.Contract, provider: Provider | Signer) => + (contract: ethers.Contract, provider: ContractRunner) => async ( propertyAddress: string, args: readonly string[], { metricsFactoryAddress }: WaitForEventOptions, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ): Promise => { await execute({ contract, @@ -57,7 +55,7 @@ export const createAuthenticateCaller: CreateAuthenticateCaller = const metricsFactoryContract = new ethers.Contract( metricsFactoryAddress, metricsFactoryAbi, - provider + provider, ) return new Promise((resolve, reject) => { @@ -65,13 +63,13 @@ export const createAuthenticateCaller: CreateAuthenticateCaller = 'Create', async (_: string, metricsAddress: string) => getMetricsProperty(metricsAddress, provider) - .then((metricsProperty) => { + .then(async (metricsProperty) => { if (metricsProperty === propertyAddress) { - subscriberdContract.removeAllListeners() + ;(await subscriberdContract).removeAllListeners() resolve(metricsAddress) } }) - .catch(reject) + .catch(reject), ) }) } diff --git a/lib/l2/market/getAuthenticatedProperties.spec.ts b/lib/l2/market/getAuthenticatedProperties.spec.ts index 2cf9fa69c..19faf1b1e 100644 --- a/lib/l2/market/getAuthenticatedProperties.spec.ts +++ b/lib/l2/market/getAuthenticatedProperties.spec.ts @@ -15,7 +15,7 @@ describe('getAuthenticatedProperties.spec.ts', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createGetAuthenticatedPropertiesCaller( - marketContract as any + marketContract as any, ) const result = await caller() @@ -34,7 +34,7 @@ describe('getAuthenticatedProperties.spec.ts', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createGetAuthenticatedPropertiesCaller( - marketContract as any + marketContract as any, ) const result = await caller().catch((err) => err) diff --git a/lib/l2/market/getAuthenticatedProperties.ts b/lib/l2/market/getAuthenticatedProperties.ts index c8cc11ca9..5119528b5 100644 --- a/lib/l2/market/getAuthenticatedProperties.ts +++ b/lib/l2/market/getAuthenticatedProperties.ts @@ -3,7 +3,7 @@ import { always } from 'ramda' import { execute, QueryOption } from '../../common/utils/execute' export type CreateGetAuthenticatedPropertiesCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createGetAuthenticatedPropertiesCaller: CreateGetAuthenticatedPropertiesCaller = @@ -13,5 +13,5 @@ export const createGetAuthenticatedPropertiesCaller: CreateGetAuthenticatedPrope contract, method: 'getAuthenticatedProperties', mutation: false, - }) + }), ) diff --git a/lib/l2/market/index.spec.ts b/lib/l2/market/index.spec.ts index 6c920db60..d881973d6 100644 --- a/lib/l2/market/index.spec.ts +++ b/lib/l2/market/index.spec.ts @@ -14,30 +14,26 @@ jest.mock('./authenticate') jest.mock('./name') jest.mock('../../ethereum/market/behavior') jest.mock('./getAuthenticatedProperties') +jest.mock('ethers') describe('market/index.ts', () => { - ;(createSchemaCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createVoteCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createAuthenticateCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createBehaviorCaller as jest.Mock).mockImplementation( - (contract) => contract - ) + ;(createSchemaCaller as jest.Mock).mockImplementation(() => 123) + ;(createVoteCaller as jest.Mock).mockImplementation(() => 123) + ;(createAuthenticateCaller as jest.Mock).mockImplementation(() => 123) + ;(createBehaviorCaller as jest.Mock).mockImplementation(() => 123) ;(createGetAuthenticatedPropertiesCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createNameCaller as jest.Mock).mockImplementation( - (contract) => contract + () => 123, ) + ;(createNameCaller as jest.Mock).mockImplementation(() => 123) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) describe('createMarketContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => MarketContract = ( - address: string + address: string, ) => { const contract = new ethers.Contract(address, [...marketAbi], provider) return { @@ -48,6 +44,7 @@ describe('market/index.ts', () => { name: createNameCaller(contract), getAuthenticatedProperties: createGetAuthenticatedPropertiesCaller(contract), + contract: () => contract, } } @@ -55,7 +52,7 @@ describe('market/index.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/l2/market/index.ts b/lib/l2/market/index.ts index a652b4428..a8b501a64 100644 --- a/lib/l2/market/index.ts +++ b/lib/l2/market/index.ts @@ -1,7 +1,5 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import { ContractRunner, ethers } from 'ethers' +import type { TransactionResponse } from 'ethers' import { marketAbi } from './abi' import { createSchemaCaller } from '../../ethereum/market/schema' import { createVoteCaller } from '../../ethereum/market/vote' @@ -16,7 +14,7 @@ export type MarketContract = { readonly vote: ( propertyAddress: string, agree: boolean, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly authenticate: ( address: string, @@ -24,15 +22,16 @@ export type MarketContract = { options: { readonly metricsFactoryAddress: string }, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly behavior: () => Promise readonly name: () => Promise readonly getAuthenticatedProperties: () => Promise + readonly contract: () => ethers.Contract } export const createMarketContract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): MarketContract => { const contract = new ethers.Contract(address, [...marketAbi], provider) return { @@ -43,5 +42,6 @@ export const createMarketContract = name: createNameCaller(contract), getAuthenticatedProperties: createGetAuthenticatedPropertiesCaller(contract), + contract: () => contract, } } diff --git a/lib/l2/market/name.ts b/lib/l2/market/name.ts index d2575056f..802373888 100644 --- a/lib/l2/market/name.ts +++ b/lib/l2/market/name.ts @@ -3,7 +3,7 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateNameCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createNameCaller: CreateNameCaller = (contract: ethers.Contract) => @@ -12,5 +12,5 @@ export const createNameCaller: CreateNameCaller = (contract: ethers.Contract) => contract, method: 'name', mutation: false, - }) + }), ) diff --git a/lib/l2/metrics-factory/authenticatedPropertiesCount.spec.ts b/lib/l2/metrics-factory/authenticatedPropertiesCount.spec.ts index 7445035ff..64ef3781f 100644 --- a/lib/l2/metrics-factory/authenticatedPropertiesCount.spec.ts +++ b/lib/l2/metrics-factory/authenticatedPropertiesCount.spec.ts @@ -15,7 +15,7 @@ describe('authenticatedPropertiesCount.spec.ts', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createAuthenticatedPropertiesCountCaller( - metricsFactoryContract as any + metricsFactoryContract as any, ) const result = await caller() @@ -34,7 +34,7 @@ describe('authenticatedPropertiesCount.spec.ts', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createAuthenticatedPropertiesCountCaller( - metricsGroupContract as any + metricsGroupContract as any, ) const result = await caller().catch((err) => err) diff --git a/lib/l2/metrics-factory/authenticatedPropertiesCount.ts b/lib/l2/metrics-factory/authenticatedPropertiesCount.ts index 44f7256bb..aba8e9ade 100644 --- a/lib/l2/metrics-factory/authenticatedPropertiesCount.ts +++ b/lib/l2/metrics-factory/authenticatedPropertiesCount.ts @@ -4,7 +4,7 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateAuthenticatedPropertiesCountCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createAuthenticatedPropertiesCountCaller: CreateAuthenticatedPropertiesCountCaller = @@ -14,5 +14,5 @@ export const createAuthenticatedPropertiesCountCaller: CreateAuthenticatedProper contract, method: 'authenticatedPropertiesCount', mutation: false, - }) + }), ) diff --git a/lib/l2/metrics-factory/index.spec.ts b/lib/l2/metrics-factory/index.spec.ts index 27c448593..1aa156b06 100644 --- a/lib/l2/metrics-factory/index.spec.ts +++ b/lib/l2/metrics-factory/index.spec.ts @@ -1,5 +1,5 @@ import { ethers } from 'ethers' -import { createMetricsFactoryContract, CreateMetricsFactoryContract } from '.' +import { createMetricsFactoryContract, MetricsFactoryContract } from '.' import { metricsFactoryAbi } from './abi' import { createAuthenticatedPropertiesCountCaller } from './authenticatedPropertiesCount' import { createMetricsOfPropertyCaller } from './metricsOfProperty' @@ -8,36 +8,35 @@ import { createMetricsCountCaller } from './metricsCount' jest.mock('./authenticatedPropertiesCount') jest.mock('./metricsOfProperty') jest.mock('./metricsCount') +jest.mock('ethers') describe('metrics-factory.ts', () => { ;(createAuthenticatedPropertiesCountCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createMetricsOfPropertyCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createMetricsCountCaller as jest.Mock).mockImplementation( - (contract) => contract + () => 123, ) + ;(createMetricsOfPropertyCaller as jest.Mock).mockImplementation(() => 123) + ;(createMetricsCountCaller as jest.Mock).mockImplementation(() => 123) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) describe('createMetricsFactoryContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) - const expected: (address: string) => CreateMetricsFactoryContract = ( - address: string + const expected: (address: string) => MetricsFactoryContract = ( + address: string, ) => { const contract = new ethers.Contract( address, [...metricsFactoryAbi], - provider + provider, ) return { authenticatedPropertiesCount: createAuthenticatedPropertiesCountCaller(contract), metricsCount: createMetricsCountCaller(contract), metricsOfProperty: createMetricsOfPropertyCaller(contract), + contract: () => contract, } } @@ -45,7 +44,7 @@ describe('metrics-factory.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/l2/metrics-factory/index.ts b/lib/l2/metrics-factory/index.ts index 67a7de37b..5a380b583 100644 --- a/lib/l2/metrics-factory/index.ts +++ b/lib/l2/metrics-factory/index.ts @@ -1,27 +1,26 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' import { metricsFactoryAbi } from './abi' import { createAuthenticatedPropertiesCountCaller } from './authenticatedPropertiesCount' import { createMetricsOfPropertyCaller } from './metricsOfProperty' import { createMetricsCountCaller } from './metricsCount' -export type CreateMetricsFactoryContract = { +export type MetricsFactoryContract = { readonly authenticatedPropertiesCount: () => Promise readonly metricsCount: () => Promise readonly metricsOfProperty: ( - propertyAddress: string + propertyAddress: string, ) => Promise + readonly contract: () => ethers.Contract } // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types export const createMetricsFactoryContract = - (provider: Provider | Signer) => - (address: string): CreateMetricsFactoryContract => { + (provider: ContractRunner) => + (address: string): MetricsFactoryContract => { const contract = new ethers.Contract( address, [...metricsFactoryAbi], - provider + provider, ) return { @@ -29,5 +28,6 @@ export const createMetricsFactoryContract = createAuthenticatedPropertiesCountCaller(contract), metricsCount: createMetricsCountCaller(contract), metricsOfProperty: createMetricsOfPropertyCaller(contract), + contract: () => contract, } } diff --git a/lib/l2/metrics-factory/metricsCount.spec.ts b/lib/l2/metrics-factory/metricsCount.spec.ts index 2ed86e973..dca160232 100644 --- a/lib/l2/metrics-factory/metricsCount.spec.ts +++ b/lib/l2/metrics-factory/metricsCount.spec.ts @@ -1,10 +1,9 @@ -import { BigNumber } from '@ethersproject/bignumber' import { createMetricsCountCaller } from './metricsCount' describe('metricsCount.spec.ts', () => { describe('createMetricsCountCaller', () => { it('call success', async () => { - const value = BigNumber.from('123456') + const value = 123456n const metricsFactoryContract = { metricsCount: jest diff --git a/lib/l2/metrics-factory/metricsCount.ts b/lib/l2/metrics-factory/metricsCount.ts index 24fa8baa8..fac20f436 100644 --- a/lib/l2/metrics-factory/metricsCount.ts +++ b/lib/l2/metrics-factory/metricsCount.ts @@ -4,16 +4,16 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateMetricsCountCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createMetricsCountCaller: CreateMetricsCountCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => always( execute({ contract, method: 'metricsCount', mutation: false, - }).then(Number) + }).then(Number), ) diff --git a/lib/l2/metrics-factory/metricsOfProperty.spec.ts b/lib/l2/metrics-factory/metricsOfProperty.spec.ts index 04fec0234..bf1785524 100644 --- a/lib/l2/metrics-factory/metricsOfProperty.spec.ts +++ b/lib/l2/metrics-factory/metricsOfProperty.spec.ts @@ -15,7 +15,7 @@ describe('metricsOfProperty.spec.ts', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const caller = createMetricsOfPropertyCaller( - metricsFactoryContract as any + metricsFactoryContract as any, ) const result = await caller('property') diff --git a/lib/l2/metrics-factory/metricsOfProperty.ts b/lib/l2/metrics-factory/metricsOfProperty.ts index bd100dfbc..bf37b4531 100644 --- a/lib/l2/metrics-factory/metricsOfProperty.ts +++ b/lib/l2/metrics-factory/metricsOfProperty.ts @@ -3,7 +3,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type CreateMetricsOfPropertyCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (propertyAddress: string) => Promise export const createMetricsOfPropertyCaller: CreateMetricsOfPropertyCaller = diff --git a/lib/l2/metrics/abi.ts b/lib/l2/metrics/abi.ts new file mode 100644 index 000000000..15574ca39 --- /dev/null +++ b/lib/l2/metrics/abi.ts @@ -0,0 +1 @@ +export * from '../../ethereum/metrics/abi' diff --git a/lib/l2/policy-factory/abi.ts b/lib/l2/policy-factory/abi.ts new file mode 100644 index 000000000..5cb658463 --- /dev/null +++ b/lib/l2/policy-factory/abi.ts @@ -0,0 +1 @@ +export * from '../../ethereum/policy-factory/abi' diff --git a/lib/l2/policy/index.spec.ts b/lib/l2/policy/index.spec.ts index 9db1e1963..b069932e4 100644 --- a/lib/l2/policy/index.spec.ts +++ b/lib/l2/policy/index.spec.ts @@ -14,32 +14,24 @@ jest.mock('../../ethereum/policy/authenticationFee') jest.mock('./marketVotingSeconds') jest.mock('./policyVotingSeconds') jest.mock('../../ethereum/policy/shareOfTreasury') +jest.mock('ethers') describe('policy/index.ts', () => { - ;(createHoldersShareCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createRewardsCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createAuthenticationFeeCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createMarketVotingSecondsCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createPolicyVotingSecondsCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createShareOfTreasuryCaller as jest.Mock).mockImplementation( - (contract) => contract - ) + ;(createHoldersShareCaller as jest.Mock).mockImplementation(() => 123) + ;(createRewardsCaller as jest.Mock).mockImplementation(() => 123) + ;(createAuthenticationFeeCaller as jest.Mock).mockImplementation(() => 123) + ;(createMarketVotingSecondsCaller as jest.Mock).mockImplementation(() => 123) + ;(createPolicyVotingSecondsCaller as jest.Mock).mockImplementation(() => 123) + ;(createShareOfTreasuryCaller as jest.Mock).mockImplementation(() => 123) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) describe('createPolicyContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => PolicyContract = ( - address: string + address: string, ) => { const contract = new ethers.Contract(address, [...policyAbi], provider) @@ -50,6 +42,7 @@ describe('policy/index.ts', () => { marketVotingSeconds: createMarketVotingSecondsCaller(contract), policyVotingSeconds: createPolicyVotingSecondsCaller(contract), shareOfTreasury: createShareOfTreasuryCaller(contract), + contract: () => contract, } } @@ -57,7 +50,7 @@ describe('policy/index.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/l2/policy/index.ts b/lib/l2/policy/index.ts index b47a31f92..aa81a5a72 100644 --- a/lib/l2/policy/index.ts +++ b/lib/l2/policy/index.ts @@ -1,6 +1,4 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' import { policyAbi } from './abi' import { createRewardsCaller } from '../../ethereum/policy/rewards' import { createHoldersShareCaller } from '../../ethereum/policy/holdersShare' @@ -14,15 +12,16 @@ export type PolicyContract = { readonly rewards: (lockups: string, assets: string) => Promise readonly authenticationFee: ( assets: string, - propertyAssets: string + propertyAssets: string, ) => Promise readonly marketVotingSeconds: () => Promise readonly policyVotingSeconds: () => Promise readonly shareOfTreasury: (supply: string) => Promise + readonly contract: () => ethers.Contract } export const createPolicyContract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): PolicyContract => { const contract = new ethers.Contract(address, [...policyAbi], provider) @@ -33,5 +32,6 @@ export const createPolicyContract = marketVotingSeconds: createMarketVotingSecondsCaller(contract), policyVotingSeconds: createPolicyVotingSecondsCaller(contract), shareOfTreasury: createShareOfTreasuryCaller(contract), + contract: () => contract, } } diff --git a/lib/l2/policy/marketVotingSeconds.ts b/lib/l2/policy/marketVotingSeconds.ts index 4477b577b..b927653b7 100644 --- a/lib/l2/policy/marketVotingSeconds.ts +++ b/lib/l2/policy/marketVotingSeconds.ts @@ -3,7 +3,7 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreateMarketVotingSecondsCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createMarketVotingSecondsCaller: CreateMarketVotingSecondsCaller = @@ -13,5 +13,5 @@ export const createMarketVotingSecondsCaller: CreateMarketVotingSecondsCaller = contract, method: 'marketVotingSeconds', mutation: false, - }) + }), ) diff --git a/lib/l2/policy/policyVotingSeconds.ts b/lib/l2/policy/policyVotingSeconds.ts index 7a959a538..f4f519450 100644 --- a/lib/l2/policy/policyVotingSeconds.ts +++ b/lib/l2/policy/policyVotingSeconds.ts @@ -3,7 +3,7 @@ import { execute, QueryOption } from '../../common/utils/execute' import { always } from 'ramda' export type CreatePolicyVotingSecondsCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => () => Promise export const createPolicyVotingSecondsCaller: CreatePolicyVotingSecondsCaller = @@ -13,5 +13,5 @@ export const createPolicyVotingSecondsCaller: CreatePolicyVotingSecondsCaller = contract, method: 'policyVotingSeconds', mutation: false, - }) + }), ) diff --git a/lib/l2/property-factory/createAndAuthenticate.ts b/lib/l2/property-factory/createAndAuthenticate.ts index c00667d09..78d386016 100644 --- a/lib/l2/property-factory/createAndAuthenticate.ts +++ b/lib/l2/property-factory/createAndAuthenticate.ts @@ -2,23 +2,22 @@ /* eslint-disable functional/no-expression-statement */ /* eslint-disable functional/no-conditional-statement */ /* eslint-disable functional/functional-parameters */ -import { Provider } from '@ethersproject/abstract-provider' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' import { execute, FallbackableOverrides } from '../../common/utils/execute' -import { ethers } from 'ethers' +import { ContractRunner, ethers } from 'ethers' import { WaitForEventOptions } from '../../ethereum/market/authenticate' import { metricsFactoryAbi } from '../metrics-factory/abi' export type CreateCreateAndAuthenticateCaller = ( contract: ethers.Contract, - provider: Provider + provider: ContractRunner, ) => ( name: string, symbol: string, marketAddress: string, args: readonly string[], options: WaitForEventOptions, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise<{ readonly property: string readonly transaction: TransactionResponse @@ -27,14 +26,14 @@ export type CreateCreateAndAuthenticateCaller = ( export const createCreateAndAuthenticateCaller: CreateCreateAndAuthenticateCaller = - (contract: ethers.Contract, provider: Provider) => + (contract: ethers.Contract, provider: ContractRunner) => async ( name: string, symbol: string, marketAddress: string, args: readonly string[], { metricsFactoryAddress }: WaitForEventOptions, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ): Promise<{ readonly property: string readonly transaction: TransactionResponse @@ -51,7 +50,7 @@ export const createCreateAndAuthenticateCaller: CreateCreateAndAuthenticateCalle const metricsFactoryContract = new ethers.Contract( metricsFactoryAddress, metricsFactoryAbi, - provider + provider, ) const createWaitForAuthentication = @@ -62,16 +61,16 @@ export const createCreateAndAuthenticateCaller: CreateCreateAndAuthenticateCalle async ( _: string, receiptPropertyAddress: string, - metricsAddress: string + metricsAddress: string, ) => { if ( propertyAddress.toLowerCase() === receiptPropertyAddress.toLocaleLowerCase() ) { - subscriberdContract.removeAllListeners() + ;(await subscriberdContract).removeAllListeners() resolve(metricsAddress) } - } + }, ) }) @@ -79,14 +78,14 @@ export const createCreateAndAuthenticateCaller: CreateCreateAndAuthenticateCalle const subscribedContract = contract.on( 'Create', async (_: string, propertyAddress: string) => { - subscribedContract.removeAllListeners() + ;(await subscribedContract).removeAllListeners() resolve({ property: propertyAddress, transaction, waitForAuthentication: createWaitForAuthentication(propertyAddress), }) - } + }, ) }) } diff --git a/lib/l2/property-factory/getPropertiesOfAuthor.ts b/lib/l2/property-factory/getPropertiesOfAuthor.ts index e18358450..d309e20e5 100644 --- a/lib/l2/property-factory/getPropertiesOfAuthor.ts +++ b/lib/l2/property-factory/getPropertiesOfAuthor.ts @@ -3,7 +3,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type CreateGetPropertiesOfAuthorCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (authorAddress: string) => Promise export const createGetPropertiesOfAuthorCaller: CreateGetPropertiesOfAuthorCaller = diff --git a/lib/l2/property-factory/index.spec.ts b/lib/l2/property-factory/index.spec.ts index d81239d8b..73f2b1b25 100644 --- a/lib/l2/property-factory/index.spec.ts +++ b/lib/l2/property-factory/index.spec.ts @@ -8,38 +8,39 @@ import { createGetPropertiesOfAuthorCaller } from './getPropertiesOfAuthor' jest.mock('../../ethereum/property-factory/create') jest.mock('./createAndAuthenticate') jest.mock('./getPropertiesOfAuthor') +jest.mock('ethers') describe('property-factory/index.ts', () => { - ;(createCreatePropertyCaller as jest.Mock).mockImplementation( - (contract) => contract - ) + ;(createCreatePropertyCaller as jest.Mock).mockImplementation(() => 123) ;(createCreateAndAuthenticateCaller as jest.Mock).mockImplementation( - (contract) => contract + () => 123, ) ;(createGetPropertiesOfAuthorCaller as jest.Mock).mockImplementation( - (contract) => contract + () => 123, ) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) describe('createPropertyFactoryContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => PropertyFactoryContract = ( - address: string + address: string, ) => { const contract = new ethers.Contract( address, [...propertyFactoryAbi], - provider + provider, ) return { create: createCreatePropertyCaller(contract), createAndAuthenticate: createCreateAndAuthenticateCaller( contract, - provider + provider, ), getPropertiesOfAuthor: createGetPropertiesOfAuthorCaller(contract), + contract: () => contract, } } @@ -47,7 +48,7 @@ describe('property-factory/index.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/l2/property-factory/index.ts b/lib/l2/property-factory/index.ts index 4c39a2be2..1c2503503 100644 --- a/lib/l2/property-factory/index.ts +++ b/lib/l2/property-factory/index.ts @@ -1,6 +1,5 @@ -import { ethers } from 'ethers' -import { Provider, TransactionResponse } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' +import type { TransactionResponse } from 'ethers' import { propertyFactoryAbi } from './abi' import { createCreatePropertyCaller } from '../../ethereum/property-factory/create' import { WaitForEventOptions } from '../../ethereum/market/authenticate' @@ -13,7 +12,7 @@ export type PropertyFactoryContract = { name: string, symbol: string, author: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly createAndAuthenticate: ( name: string, @@ -21,30 +20,32 @@ export type PropertyFactoryContract = { marketAddress: string, args: readonly string[], options: WaitForEventOptions, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise<{ readonly property: string readonly transaction: TransactionResponse readonly waitForAuthentication: () => Promise }> readonly getPropertiesOfAuthor: (author: string) => Promise + readonly contract: () => ethers.Contract } export const createPropertyFactoryContract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): PropertyFactoryContract => { const contract = new ethers.Contract( address, [...propertyFactoryAbi], - provider + provider, ) return { create: createCreatePropertyCaller(contract), createAndAuthenticate: createCreateAndAuthenticateCaller( contract, - provider as Provider + provider, ), getPropertiesOfAuthor: createGetPropertiesOfAuthorCaller(contract), + contract: () => contract, } } diff --git a/lib/l2/property/getBalances.spec.ts b/lib/l2/property/getBalances.spec.ts new file mode 100644 index 000000000..69900fdc9 --- /dev/null +++ b/lib/l2/property/getBalances.spec.ts @@ -0,0 +1,49 @@ +import { createGetBalancesCaller } from './getBalances' + +describe('GetBalances.spec.ts', () => { + describe('createGetBalancesCaller', () => { + it('call success', async () => { + const value = [ + { account: '0x0', balance: 1n }, + { account: '0x1', balance: 2n }, + { account: '0x2', balance: 3n }, + ] + + const propertyContract = { + getBalances: jest + .fn() + .mockImplementation(async () => Promise.resolve(value)), + } + + const expected = [ + { account: '0x0', balance: '1' }, + { account: '0x1', balance: '2' }, + { account: '0x2', balance: '3' }, + ] + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createGetBalancesCaller(propertyContract as any) + + const result = await caller() + + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const error = 'error' + + const propertyContract = { + getBalances: jest + .fn() + .mockImplementation(async () => Promise.reject(error)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = createGetBalancesCaller(propertyContract as any) + + const result = await caller().catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/l2/property/getBalances.ts b/lib/l2/property/getBalances.ts new file mode 100644 index 000000000..9e3c4f1de --- /dev/null +++ b/lib/l2/property/getBalances.ts @@ -0,0 +1,23 @@ +import { ethers } from 'ethers' +import { always } from 'ramda' +import { execute, QueryOption } from '../../common/utils/execute' + +export type PropertyBalance = Readonly<{ + readonly account: string + readonly balance: string +}> + +export type CreateGetBalancesCaller = ( + contract: ethers.Contract, +) => () => Promise + +export const createGetBalancesCaller: CreateGetBalancesCaller = ( + contract: ethers.Contract, +) => + always( + execute({ + contract, + method: 'getBalances', + mutation: false, + }), + ) diff --git a/lib/l2/property/index.spec.ts b/lib/l2/property/index.spec.ts index 2c9e74577..c055d3abf 100644 --- a/lib/l2/property/index.spec.ts +++ b/lib/l2/property/index.spec.ts @@ -13,6 +13,7 @@ import { createTransferFromCaller } from '../../common/erc20/transferFrom' import { createBalanceOfCaller } from './../../common/erc20/balanceOf' import { createApproveCaller } from './../../common/erc20/approve' import { createAllowanceCaller } from './../../common/erc20/allowance' +import { createGetBalancesCaller } from './getBalances' jest.mock('./../../ethereum/property/author') jest.mock('./../../ethereum/property/changeName') @@ -26,49 +27,37 @@ jest.mock('../../common/erc20/transferFrom') jest.mock('./../../common/erc20/balanceOf') jest.mock('./../../common/erc20/approve') jest.mock('./../../common/erc20/allowance') +jest.mock('./getBalances') +jest.mock('ethers') describe('property/index.ts', () => { - ;(createAuthorCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createChangeNameCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createChangeSymbolCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createTransferCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createNameCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createSymbolCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createTotalSupplyCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createDecimalsCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createTransferFromCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createBalanceOfCaller as jest.Mock).mockImplementation( - (contract) => contract - ) - ;(createApproveCaller as jest.Mock).mockImplementation((contract) => contract) - ;(createAllowanceCaller as jest.Mock).mockImplementation( - (contract) => contract - ) + ;(createAuthorCaller as jest.Mock).mockImplementation(() => 123) + ;(createChangeNameCaller as jest.Mock).mockImplementation(() => 123) + ;(createChangeSymbolCaller as jest.Mock).mockImplementation(() => 123) + ;(createTransferCaller as jest.Mock).mockImplementation(() => 123) + ;(createNameCaller as jest.Mock).mockImplementation(() => 123) + ;(createSymbolCaller as jest.Mock).mockImplementation(() => 123) + ;(createTotalSupplyCaller as jest.Mock).mockImplementation(() => 123) + ;(createDecimalsCaller as jest.Mock).mockImplementation(() => 123) + ;(createTransferFromCaller as jest.Mock).mockImplementation(() => 123) + ;(createBalanceOfCaller as jest.Mock).mockImplementation(() => 123) + ;(createApproveCaller as jest.Mock).mockImplementation(() => 123) + ;(createAllowanceCaller as jest.Mock).mockImplementation(() => 123) + ;(createGetBalancesCaller as jest.Mock).mockImplementation(() => 123) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) describe('createPropertyContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => PropertyContract = ( - address: string + address: string, ) => { const contract = new ethers.Contract( address, [...propertyAbi], - provider + provider, ) return { totalSupply: createTotalSupplyCaller(contract), @@ -83,6 +72,7 @@ describe('property/index.ts', () => { author: createAuthorCaller(contract), changeName: createChangeNameCaller(contract), changeSymbol: createChangeSymbolCaller(contract), + getBalances: createGetBalancesCaller(contract), contract: () => contract, } } @@ -91,7 +81,7 @@ describe('property/index.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/l2/property/index.ts b/lib/l2/property/index.ts index 29453ad8b..bd3c612de 100644 --- a/lib/l2/property/index.ts +++ b/lib/l2/property/index.ts @@ -1,10 +1,9 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' import { propertyAbi } from './abi' import { createAuthorCaller } from './../../ethereum/property/author' import { createChangeNameCaller } from './../../ethereum/property/changeName' import { createChangeSymbolCaller } from './../../ethereum/property/changeSymbol' +import { createGetBalancesCaller, PropertyBalance } from './getBalances' import { createTransferCaller } from './../../common/erc20/transfer' import { createNameCaller } from './../../common/erc20/name' import { createSymbolCaller } from './../../common/erc20/symbol' @@ -15,7 +14,7 @@ import { createBalanceOfCaller } from './../../common/erc20/balanceOf' import { createApproveCaller } from './../../common/erc20/approve' import { createAllowanceCaller } from './../../common/erc20/allowance' import { FallbackableOverrides } from '../../common/utils/execute' -import { TransactionResponse } from '@ethersproject/abstract-provider' +import type { TransactionResponse } from 'ethers' export type PropertyContract = { readonly totalSupply: () => Promise @@ -23,19 +22,19 @@ export type PropertyContract = { readonly transfer: ( to: string, value: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly allowance: (from: string, to: string) => Promise readonly approve: ( to: string, value: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly transferFrom: ( from: string, to: string, value: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly name: () => Promise readonly symbol: () => Promise @@ -43,20 +42,22 @@ export type PropertyContract = { readonly author: () => Promise readonly changeName: ( nextName: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise readonly changeSymbol: ( nextSymbol: string, - overrides?: FallbackableOverrides + overrides?: FallbackableOverrides, ) => Promise + readonly getBalances: () => Promise + readonly contract: () => ethers.Contract } export type CreatePropertyContract = ( - provider: Provider | Signer + provider: ContractRunner, ) => (address: string) => PropertyContract export const createPropertyContract: CreatePropertyContract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): PropertyContract => { const contract = new ethers.Contract(address, [...propertyAbi], provider) @@ -73,5 +74,7 @@ export const createPropertyContract: CreatePropertyContract = author: createAuthorCaller(contract), changeName: createChangeNameCaller(contract), changeSymbol: createChangeSymbolCaller(contract), + getBalances: createGetBalancesCaller(contract), + contract: () => contract, } } diff --git a/lib/l2/registry/index.spec.ts b/lib/l2/registry/index.spec.ts index 8f6beedb3..cd2bc32c3 100644 --- a/lib/l2/registry/index.spec.ts +++ b/lib/l2/registry/index.spec.ts @@ -4,29 +4,30 @@ import { addressRegistryAbi } from './abi' import { createRegistriesCaller } from './registries' jest.mock('./registries') +jest.mock('ethers') describe('registry/index.ts', () => { - ;(createRegistriesCaller as jest.Mock).mockImplementation( - (contract) => contract - ) + ;(createRegistriesCaller as jest.Mock).mockImplementation(() => 123) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) describe('createRegistryContract', () => { it('check return object', () => { const host = 'localhost' const address = '0x0000000000000000000000000000000000000000' - const provider = new ethers.providers.JsonRpcProvider(host) + const provider = new ethers.JsonRpcProvider(host) const expected: (address: string) => RegistryContract = ( - address: string + address: string, ) => { const contract = new ethers.Contract( address, [...addressRegistryAbi], - provider + provider, ) return { registries: createRegistriesCaller(contract), + contract: () => contract, } } @@ -34,7 +35,7 @@ describe('registry/index.ts', () => { expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) expect(JSON.stringify(result(address))).toEqual( - JSON.stringify(expected(address)) + JSON.stringify(expected(address)), ) }) }) diff --git a/lib/l2/registry/index.ts b/lib/l2/registry/index.ts index f9f246292..94eba1e08 100644 --- a/lib/l2/registry/index.ts +++ b/lib/l2/registry/index.ts @@ -1,27 +1,27 @@ -import { ethers } from 'ethers' -import { Provider } from '@ethersproject/abstract-provider' -import { Signer } from '@ethersproject/abstract-signer' +import { ContractRunner, ethers } from 'ethers' import { addressRegistryAbi } from './abi' import { createRegistriesCaller } from './registries' export type RegistryContract = { readonly registries: (key: string) => Promise + readonly contract: () => ethers.Contract } export type CreateRegistryContract = ( - provider: Provider | Signer + provider: ContractRunner, ) => (address: string) => RegistryContract export const createRegistryContract: CreateRegistryContract = - (provider: Provider | Signer) => + (provider: ContractRunner) => (address: string): RegistryContract => { const contract = new ethers.Contract( address, [...addressRegistryAbi], - provider + provider, ) return { registries: createRegistriesCaller(contract), + contract: () => contract, } } diff --git a/lib/l2/registry/registries.spec.ts b/lib/l2/registry/registries.spec.ts index 75fda449d..1c05e0aff 100644 --- a/lib/l2/registry/registries.spec.ts +++ b/lib/l2/registry/registries.spec.ts @@ -9,7 +9,7 @@ describe('registries.spec.ts', () => { registries: jest .fn() .mockImplementation(async (key: string) => - Promise.resolve(key === 'test' ? value : undefined) + Promise.resolve(key === 'test' ? value : undefined), ), } diff --git a/lib/l2/registry/registries.ts b/lib/l2/registry/registries.ts index d0a0fa562..ea6b29422 100644 --- a/lib/l2/registry/registries.ts +++ b/lib/l2/registry/registries.ts @@ -2,7 +2,7 @@ import { ethers } from 'ethers' import { execute, QueryOption } from '../../common/utils/execute' export type CreateRegistriesCaller = ( - contract: ethers.Contract + contract: ethers.Contract, ) => (key: string) => Promise export const createRegistriesCaller: CreateRegistriesCaller = diff --git a/lib/l2/s-tokens/abi.ts b/lib/l2/s-tokens/abi.ts new file mode 100644 index 000000000..745dc47cb --- /dev/null +++ b/lib/l2/s-tokens/abi.ts @@ -0,0 +1 @@ +export * from '../../ethereum/s-tokens/abi' diff --git a/lib/l2/s-tokens/index.ts b/lib/l2/s-tokens/index.ts index 637805696..dd5d8fb2b 100644 --- a/lib/l2/s-tokens/index.ts +++ b/lib/l2/s-tokens/index.ts @@ -1 +1,5 @@ -export { createSTokensContract, STokensContract } from '../../ethereum/s-tokens' +export { + createSTokensContract, + STokensContract, + Positions, +} from '../../ethereum/s-tokens' diff --git a/lib/l2/withdraw/abi.ts b/lib/l2/withdraw/abi.ts new file mode 100644 index 000000000..d3d1dfa94 --- /dev/null +++ b/lib/l2/withdraw/abi.ts @@ -0,0 +1,387 @@ +export const withdrawAbi = [ + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'cumulativeWithdrawnReward', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + constant: true, + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'lastWithdrawnRewardCapPrice', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + constant: true, + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'lastWithdrawnRewardPrice', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + constant: true, + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'pendingWithdrawal', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + constant: true, + }, + { + inputs: [], + name: 'registryAddress', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + constant: true, + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'transferHistoryLength', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + constant: true, + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'transferHistoryLengthOfRecipient', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + constant: true, + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'transferHistoryLengthOfSender', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + constant: true, + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + { + internalType: 'address', + name: '', + type: 'address', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'transferHistoryOfRecipientByIndex', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + constant: true, + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + { + internalType: 'address', + name: '', + type: 'address', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'transferHistoryOfSenderByIndex', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + constant: true, + }, + { + inputs: [ + { + internalType: 'address', + name: '_registry', + type: 'address', + }, + ], + name: 'initialize', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_property', + type: 'address', + }, + ], + name: 'withdraw', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_from', + type: 'address', + }, + { + internalType: 'address', + name: '_to', + type: 'address', + }, + ], + name: 'beforeBalanceChange', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_property', + type: 'address', + }, + { + internalType: 'address', + name: '_user', + type: 'address', + }, + ], + name: 'calculateRewardAmount', + outputs: [ + { + internalType: 'uint256', + name: '_amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_price', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_cap', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_allReward', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + constant: true, + }, + { + inputs: [ + { + internalType: 'address', + name: '_property', + type: 'address', + }, + { + internalType: 'uint256', + name: '_index', + type: 'uint256', + }, + ], + name: 'transferHistory', + outputs: [ + { + components: [ + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'address', + name: 'from', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'preBalanceOfRecipient', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'preBalanceOfSender', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'filled', + type: 'bool', + }, + { + internalType: 'uint256', + name: 'blockNumber', + type: 'uint256', + }, + ], + internalType: 'struct ITransferHistory.TransferHistory', + name: '', + type: 'tuple', + }, + ], + stateMutability: 'view', + type: 'function', + constant: true, + }, +] diff --git a/lib/l2/withdraw/calculateRewardAmount.spec.ts b/lib/l2/withdraw/calculateRewardAmount.spec.ts new file mode 100644 index 000000000..513210297 --- /dev/null +++ b/lib/l2/withdraw/calculateRewardAmount.spec.ts @@ -0,0 +1,59 @@ +import { + calculateRewardAmountCaller, + HolderRewards, +} from './calculateRewardAmount' + +describe('calculateRewardAmount.spec.ts', () => { + describe('createCalculateRewardAmountCaller', () => { + it('call success', async () => { + const value = ['value1', 'value2', 'value3', 'value4'] + + const rewardContract = { + calculateRewardAmount: jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation(async (address: string) => + Promise.resolve(value), + ), + } + + const expected: HolderRewards = { + amount: 'value1', + price: 'value2', + cap: 'value3', + allReward: 'value4', + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = calculateRewardAmountCaller(rewardContract as any) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '0xC7b8B28E498233113b270B1E1e0f91049a31467a', + ) + + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const error = 'error' + + const rewardContract = { + calculateRewardAmount: jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementation(async (address: string) => Promise.reject(error)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = calculateRewardAmountCaller(rewardContract as any) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '0xC7b8B28E498233113b270B1E1e0f91049a31467a', + ).catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/l2/withdraw/calculateRewardAmount.ts b/lib/l2/withdraw/calculateRewardAmount.ts new file mode 100644 index 000000000..45a2535e8 --- /dev/null +++ b/lib/l2/withdraw/calculateRewardAmount.ts @@ -0,0 +1,35 @@ +import { ethers } from 'ethers' +import { execute, QueryOption } from '../../common/utils/execute' +import { arrayify } from '../../common/utils' + +export type HolderRewards = { + readonly amount: string + readonly price: string + readonly cap: string + readonly allReward: string +} + +export type calculateRewardAmountCaller = ( + contract: ethers.Contract, +) => (propertyAddress: string, accountAddress: string) => Promise + +export const calculateRewardAmountCaller: calculateRewardAmountCaller = + (contract: ethers.Contract) => + async (propertyAddress: string, accountAddress: string) => { + const res = await execute< + QueryOption, + { + readonly _amount: string + readonly _price: string + readonly _cap: string + readonly _allReward: string + } + >({ + contract, + method: 'calculateRewardAmount', + args: [propertyAddress, accountAddress], + mutation: false, + }) + const [amount, price, cap, allReward] = arrayify(res) + return { amount, price, cap, allReward } + } diff --git a/lib/l2/withdraw/index.spec.ts b/lib/l2/withdraw/index.spec.ts new file mode 100644 index 000000000..fc577a4ef --- /dev/null +++ b/lib/l2/withdraw/index.spec.ts @@ -0,0 +1,80 @@ +import { ethers } from 'ethers' +import { createWithdrawContract, WithdrawContract } from '.' +import { withdrawAbi } from './abi' +import { createWithdrawCaller } from '../../ethereum/withdraw/withdraw' +import { calculateRewardAmountCaller } from './calculateRewardAmount' +import { transferHistoryCaller } from './transferHistory' +import { transferHistoryLengthCaller } from './transferHistoryLength' +import { transferHistoryLengthOfRecipientCaller } from './transferHistoryLengthOfRecipient' +import { transferHistoryLengthOfSenderCaller } from './transferHistoryLengthOfSender' +import { transferHistoryOfRecipientByIndexCaller } from './transferHistoryOfRecipientByIndex' +import { transferHistoryOfSenderByIndexCaller } from './transferHistoryOfSenderByIndex' + +jest.mock('../../ethereum/withdraw/withdraw') +jest.mock('./calculateRewardAmount') +jest.mock('./transferHistory') +jest.mock('./transferHistoryLength') +jest.mock('./transferHistoryLengthOfRecipient') +jest.mock('./transferHistoryLengthOfSender') +jest.mock('./transferHistoryOfRecipientByIndex') +jest.mock('./transferHistoryOfSenderByIndex') +jest.mock('ethers') + +describe('withdraw/index.ts', () => { + ;(createWithdrawCaller as jest.Mock).mockImplementation(() => 123) + ;(calculateRewardAmountCaller as jest.Mock).mockImplementation(() => 123) + ;(transferHistoryCaller as jest.Mock).mockImplementation(() => 123) + ;(transferHistoryLengthCaller as jest.Mock).mockImplementation(() => 123) + ;(transferHistoryLengthOfRecipientCaller as jest.Mock).mockImplementation( + () => 123, + ) + ;(transferHistoryLengthOfSenderCaller as jest.Mock).mockImplementation( + () => 123, + ) + ;(transferHistoryOfRecipientByIndexCaller as jest.Mock).mockImplementation( + () => 123, + ) + ;(transferHistoryOfSenderByIndexCaller as jest.Mock).mockImplementation( + () => 123, + ) + ;(ethers.Contract as jest.Mock).mockImplementation(() => 123) + describe('createWithdrawContract', () => { + it('check return object', () => { + const host = 'localhost' + const address = '0x0000000000000000000000000000000000000000' + const provider = new ethers.JsonRpcProvider(host) + + const expected: (address: string) => WithdrawContract = ( + address: string, + ) => { + const contract = new ethers.Contract( + address, + [...withdrawAbi], + provider, + ) + return { + withdraw: createWithdrawCaller(contract), + calculateRewardAmount: calculateRewardAmountCaller(contract), + transferHistory: transferHistoryCaller(contract), + transferHistoryLength: transferHistoryLengthCaller(contract), + transferHistoryLengthOfRecipient: + transferHistoryLengthOfRecipientCaller(contract), + transferHistoryLengthOfSender: + transferHistoryLengthOfSenderCaller(contract), + transferHistoryOfRecipientByIndex: + transferHistoryOfRecipientByIndexCaller(contract), + transferHistoryOfSenderByIndex: + transferHistoryOfSenderByIndexCaller(contract), + contract: () => contract, + } + } + + const result = createWithdrawContract(provider) + + expect(JSON.stringify(result)).toEqual(JSON.stringify(expected)) + expect(JSON.stringify(result(address))).toEqual( + JSON.stringify(expected(address)), + ) + }) + }) +}) diff --git a/lib/l2/withdraw/index.ts b/lib/l2/withdraw/index.ts index bc3290adb..0bb320188 100644 --- a/lib/l2/withdraw/index.ts +++ b/lib/l2/withdraw/index.ts @@ -1,4 +1,76 @@ -export { - createWithdrawContract, - WithdrawContract, -} from '../../ethereum/withdraw' +import { ContractRunner, ethers } from 'ethers' +import type { TransactionResponse } from 'ethers' +import { withdrawAbi } from './abi' +import { FallbackableOverrides } from '../../common/utils/execute' +import { createWithdrawCaller } from '../../ethereum/withdraw/withdraw' +import { + calculateRewardAmountCaller, + HolderRewards, +} from './calculateRewardAmount' +import { TransferHistory, transferHistoryCaller } from './transferHistory' +import { transferHistoryLengthCaller } from './transferHistoryLength' +import { transferHistoryLengthOfRecipientCaller } from './transferHistoryLengthOfRecipient' +import { transferHistoryLengthOfSenderCaller } from './transferHistoryLengthOfSender' +import { transferHistoryOfRecipientByIndexCaller } from './transferHistoryOfRecipientByIndex' +import { transferHistoryOfSenderByIndexCaller } from './transferHistoryOfSenderByIndex' + +export type WithdrawContract = { + readonly withdraw: ( + propertyAddress: string, + overrides?: FallbackableOverrides, + ) => Promise + readonly calculateRewardAmount: ( + propertyAddress: string, + accountAddress: string, + ) => Promise + readonly transferHistory: ( + propertyAddress: string, + index: number | string, + ) => Promise + readonly transferHistoryLength: (propertyAddress: string) => Promise + readonly transferHistoryLengthOfRecipient: ( + propertyAddress: string, + recipient: string, + ) => Promise + readonly transferHistoryLengthOfSender: ( + propertyAddress: string, + sender: string, + ) => Promise + readonly transferHistoryOfRecipientByIndex: ( + propertyAddress: string, + recipient: string, + index: number | string, + ) => Promise + readonly transferHistoryOfSenderByIndex: ( + propertyAddress: string, + sender: string, + index: number | string, + ) => Promise + + readonly contract: () => ethers.Contract +} + +export const createWithdrawContract = + (provider: ContractRunner) => + (address: string): WithdrawContract => { + const contract = new ethers.Contract(address, [...withdrawAbi], provider) + + return { + withdraw: createWithdrawCaller(contract), + calculateRewardAmount: calculateRewardAmountCaller(contract), + transferHistory: transferHistoryCaller(contract), + transferHistoryLength: transferHistoryLengthCaller(contract), + transferHistoryLengthOfRecipient: + transferHistoryLengthOfRecipientCaller(contract), + transferHistoryLengthOfSender: + transferHistoryLengthOfSenderCaller(contract), + transferHistoryOfRecipientByIndex: + transferHistoryOfRecipientByIndexCaller(contract), + transferHistoryOfSenderByIndex: + transferHistoryOfSenderByIndexCaller(contract), + contract: () => contract, + } + } + +export { HolderRewards } from './calculateRewardAmount' +export { TransferHistory } diff --git a/lib/l2/withdraw/transferHistory.spec.ts b/lib/l2/withdraw/transferHistory.spec.ts new file mode 100644 index 000000000..9821be74c --- /dev/null +++ b/lib/l2/withdraw/transferHistory.spec.ts @@ -0,0 +1,61 @@ +import { TransferHistory, transferHistoryCaller } from './transferHistory' + +describe('transferHistory.spec.ts', () => { + describe('transferHistoryCaller', () => { + it('call success', async () => { + const value = [ + 'value1', + 'value2', + 'value3', + 'value4', + 'value5', + false, + 'value6', + ] + + const rewardContract = { + transferHistory: jest + .fn() + .mockImplementation(async () => Promise.resolve(value)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = transferHistoryCaller(rewardContract as any) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '123', + ) + + expect(result).toEqual({ + to: 'value1', + from: 'value2', + amount: 'value3', + preBalanceOfRecipient: 'value4', + preBalanceOfSender: 'value5', + filled: false, + blockNumber: 'value6', + } as TransferHistory) + }) + + it('call failure', async () => { + const error = 'error' + + const rewardContract = { + transferHistory: jest + .fn() + .mockImplementation(async () => Promise.reject(error)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = transferHistoryCaller(rewardContract as any) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '123', + ).catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/l2/withdraw/transferHistory.ts b/lib/l2/withdraw/transferHistory.ts new file mode 100644 index 000000000..4c981f70f --- /dev/null +++ b/lib/l2/withdraw/transferHistory.ts @@ -0,0 +1,68 @@ +import { ethers } from 'ethers' +import { execute, QueryOption } from '../../common/utils/execute' +import { arrayify } from '../../common/utils' + +export type TransferHistory = { + readonly to: string + readonly from: string + readonly amount: string + readonly preBalanceOfRecipient: string + readonly preBalanceOfSender: string + readonly filled: boolean + readonly blockNumber: string +} + +export type transferHistoryCaller = ( + contract: ethers.Contract, +) => ( + propertyAddress: string, + index: number | string, +) => Promise + +export const transferHistoryCaller: transferHistoryCaller = + (contract: ethers.Contract) => + async (propertyAddress: string, index: number | string) => { + const res = await execute< + QueryOption, + { + readonly to: string + readonly from: string + readonly amount: string + readonly preBalanceOfRecipient: string + readonly preBalanceOfSender: string + readonly filled: boolean + readonly blockNumber: string + } + >({ + contract, + method: 'transferHistory', + args: [propertyAddress, String(index)], + mutation: false, + }) + const [ + to, + from, + amount, + preBalanceOfRecipient, + preBalanceOfSender, + filled, + blockNumber, + ] = arrayify(res) as readonly [ + string, + string, + string, + string, + string, + boolean, + string, + ] + return { + to, + from, + amount, + preBalanceOfRecipient, + preBalanceOfSender, + filled, + blockNumber, + } + } diff --git a/lib/l2/withdraw/transferHistoryLength.spec.ts b/lib/l2/withdraw/transferHistoryLength.spec.ts new file mode 100644 index 000000000..707c3971c --- /dev/null +++ b/lib/l2/withdraw/transferHistoryLength.spec.ts @@ -0,0 +1,43 @@ +import { transferHistoryLengthCaller } from './transferHistoryLength' + +describe('transferHistoryLength.spec.ts', () => { + describe('transferHistoryLengthCaller', () => { + it('call success', async () => { + const value = '123' + + const rewardContract = { + transferHistoryLength: jest + .fn() + .mockImplementation(async () => Promise.resolve(value)), + } + + const expected = value + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = transferHistoryLengthCaller(rewardContract as any) + + const result = await caller('0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5') + + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const error = 'error' + + const rewardContract = { + transferHistoryLength: jest + .fn() + .mockImplementation(async () => Promise.reject(error)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = transferHistoryLengthCaller(rewardContract as any) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + ).catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/l2/withdraw/transferHistoryLength.ts b/lib/l2/withdraw/transferHistoryLength.ts new file mode 100644 index 000000000..1a1f25afc --- /dev/null +++ b/lib/l2/withdraw/transferHistoryLength.ts @@ -0,0 +1,15 @@ +import { ethers } from 'ethers' +import { execute, QueryOption } from '../../common/utils/execute' + +export type transferHistoryLengthCaller = ( + contract: ethers.Contract, +) => (propertyAddress: string) => Promise + +export const transferHistoryLengthCaller: transferHistoryLengthCaller = + (contract: ethers.Contract) => async (propertyAddress: string) => + execute({ + contract, + method: 'transferHistoryLength', + args: [propertyAddress], + mutation: false, + }) diff --git a/lib/l2/withdraw/transferHistoryLengthOfRecipient.spec.ts b/lib/l2/withdraw/transferHistoryLengthOfRecipient.spec.ts new file mode 100644 index 000000000..52fab56b3 --- /dev/null +++ b/lib/l2/withdraw/transferHistoryLengthOfRecipient.spec.ts @@ -0,0 +1,51 @@ +import { transferHistoryLengthOfRecipientCaller } from './transferHistoryLengthOfRecipient' + +describe('transferHistoryLengthOfRecipient.spec.ts', () => { + describe('transferHistoryLengthOfRecipientCaller', () => { + it('call success', async () => { + const value = '123' + + const rewardContract = { + transferHistoryLengthOfRecipient: jest + .fn() + .mockImplementation(async () => Promise.resolve(value)), + } + + const expected = value + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = transferHistoryLengthOfRecipientCaller( + rewardContract as any, + ) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '0xC7b8B28E498233113b270B1E1e0f91049a31467a', + ) + + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const error = 'error' + + const rewardContract = { + transferHistoryLengthOfRecipient: jest + .fn() + .mockImplementation(async () => Promise.reject(error)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = transferHistoryLengthOfRecipientCaller( + rewardContract as any, + ) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '0xC7b8B28E498233113b270B1E1e0f91049a31467a', + ).catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/l2/withdraw/transferHistoryLengthOfRecipient.ts b/lib/l2/withdraw/transferHistoryLengthOfRecipient.ts new file mode 100644 index 000000000..ef6f539cf --- /dev/null +++ b/lib/l2/withdraw/transferHistoryLengthOfRecipient.ts @@ -0,0 +1,17 @@ +import { ethers } from 'ethers' +import { execute, QueryOption } from '../../common/utils/execute' + +export type transferHistoryLengthOfRecipientCaller = ( + contract: ethers.Contract, +) => (propertyAddress: string, recipient: string) => Promise + +export const transferHistoryLengthOfRecipientCaller: transferHistoryLengthOfRecipientCaller = + + (contract: ethers.Contract) => + async (propertyAddress: string, recipient: string) => + execute({ + contract, + method: 'transferHistoryLengthOfRecipient', + args: [propertyAddress, recipient], + mutation: false, + }) diff --git a/lib/l2/withdraw/transferHistoryLengthOfSender.spec.ts b/lib/l2/withdraw/transferHistoryLengthOfSender.spec.ts new file mode 100644 index 000000000..a5940e59f --- /dev/null +++ b/lib/l2/withdraw/transferHistoryLengthOfSender.spec.ts @@ -0,0 +1,47 @@ +import { transferHistoryLengthOfSenderCaller } from './transferHistoryLengthOfSender' + +describe('transferHistoryLengthOfSender.spec.ts', () => { + describe('transferHistoryLengthOfSenderCaller', () => { + it('call success', async () => { + const value = '123' + + const rewardContract = { + transferHistoryLengthOfSender: jest + .fn() + .mockImplementation(async () => Promise.resolve(value)), + } + + const expected = value + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = transferHistoryLengthOfSenderCaller(rewardContract as any) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '0xC7b8B28E498233113b270B1E1e0f91049a31467a', + ) + + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const error = 'error' + + const rewardContract = { + transferHistoryLengthOfSender: jest + .fn() + .mockImplementation(async () => Promise.reject(error)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = transferHistoryLengthOfSenderCaller(rewardContract as any) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '0xC7b8B28E498233113b270B1E1e0f91049a31467a', + ).catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/l2/withdraw/transferHistoryLengthOfSender.ts b/lib/l2/withdraw/transferHistoryLengthOfSender.ts new file mode 100644 index 000000000..f853a3876 --- /dev/null +++ b/lib/l2/withdraw/transferHistoryLengthOfSender.ts @@ -0,0 +1,17 @@ +import { ethers } from 'ethers' +import { execute, QueryOption } from '../../common/utils/execute' + +export type transferHistoryLengthOfSenderCaller = ( + contract: ethers.Contract, +) => (propertyAddress: string, sender: string) => Promise + +export const transferHistoryLengthOfSenderCaller: transferHistoryLengthOfSenderCaller = + + (contract: ethers.Contract) => + async (propertyAddress: string, sender: string) => + execute({ + contract, + method: 'transferHistoryLengthOfSender', + args: [propertyAddress, sender], + mutation: false, + }) diff --git a/lib/l2/withdraw/transferHistoryOfRecipientByIndex.spec.ts b/lib/l2/withdraw/transferHistoryOfRecipientByIndex.spec.ts new file mode 100644 index 000000000..423cd73bf --- /dev/null +++ b/lib/l2/withdraw/transferHistoryOfRecipientByIndex.spec.ts @@ -0,0 +1,53 @@ +import { transferHistoryOfRecipientByIndexCaller } from './transferHistoryOfRecipientByIndex' + +describe('transferHistoryOfRecipientByIndex.spec.ts', () => { + describe('transferHistoryOfRecipientByIndexCaller', () => { + it('call success', async () => { + const value = '123' + + const rewardContract = { + transferHistoryOfRecipientByIndex: jest + .fn() + .mockImplementation(async () => Promise.resolve(value)), + } + + const expected = value + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = transferHistoryOfRecipientByIndexCaller( + rewardContract as any, + ) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '0xC7b8B28E498233113b270B1E1e0f91049a31467a', + 456, + ) + + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const error = 'error' + + const rewardContract = { + transferHistoryOfRecipientByIndex: jest + .fn() + .mockImplementation(async () => Promise.reject(error)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = transferHistoryOfRecipientByIndexCaller( + rewardContract as any, + ) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '0xC7b8B28E498233113b270B1E1e0f91049a31467a', + 123, + ).catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/l2/withdraw/transferHistoryOfRecipientByIndex.ts b/lib/l2/withdraw/transferHistoryOfRecipientByIndex.ts new file mode 100644 index 000000000..192f26c94 --- /dev/null +++ b/lib/l2/withdraw/transferHistoryOfRecipientByIndex.ts @@ -0,0 +1,25 @@ +import { ethers } from 'ethers' +import { execute, QueryOption } from '../../common/utils/execute' + +export type transferHistoryOfRecipientByIndexCaller = ( + contract: ethers.Contract, +) => ( + propertyAddress: string, + recipient: string, + index: number | string, +) => Promise + +export const transferHistoryOfRecipientByIndexCaller: transferHistoryOfRecipientByIndexCaller = + + (contract: ethers.Contract) => + async ( + propertyAddress: string, + recipient: string, + index: number | string, + ) => + execute({ + contract, + method: 'transferHistoryOfRecipientByIndex', + args: [propertyAddress, recipient, String(index)], + mutation: false, + }) diff --git a/lib/l2/withdraw/transferHistoryOfSenderByIndex.spec.ts b/lib/l2/withdraw/transferHistoryOfSenderByIndex.spec.ts new file mode 100644 index 000000000..aa7ce4f08 --- /dev/null +++ b/lib/l2/withdraw/transferHistoryOfSenderByIndex.spec.ts @@ -0,0 +1,49 @@ +import { transferHistoryOfSenderByIndexCaller } from './transferHistoryOfSenderByIndex' + +describe('transferHistoryOfSenderByIndex.spec.ts', () => { + describe('transferHistoryOfSenderByIndexCaller', () => { + it('call success', async () => { + const value = '123' + + const rewardContract = { + transferHistoryOfSenderByIndex: jest + .fn() + .mockImplementation(async () => Promise.resolve(value)), + } + + const expected = value + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = transferHistoryOfSenderByIndexCaller(rewardContract as any) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '0xC7b8B28E498233113b270B1E1e0f91049a31467a', + 456, + ) + + expect(result).toEqual(expected) + }) + + it('call failure', async () => { + const error = 'error' + + const rewardContract = { + transferHistoryOfSenderByIndex: jest + .fn() + .mockImplementation(async () => Promise.reject(error)), + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const caller = transferHistoryOfSenderByIndexCaller(rewardContract as any) + + const result = await caller( + '0x80a25ACDD0797dfCe02dA25e4a55A4a334EE51c5', + '0xC7b8B28E498233113b270B1E1e0f91049a31467a', + 123, + ).catch((err) => err) + + expect(result).toEqual(error) + }) + }) +}) diff --git a/lib/l2/withdraw/transferHistoryOfSenderByIndex.ts b/lib/l2/withdraw/transferHistoryOfSenderByIndex.ts new file mode 100644 index 000000000..a2494a6d4 --- /dev/null +++ b/lib/l2/withdraw/transferHistoryOfSenderByIndex.ts @@ -0,0 +1,21 @@ +import { ethers } from 'ethers' +import { execute, QueryOption } from '../../common/utils/execute' + +export type transferHistoryOfSenderByIndexCaller = ( + contract: ethers.Contract, +) => ( + propertyAddress: string, + sender: string, + index: number | string, +) => Promise + +export const transferHistoryOfSenderByIndexCaller: transferHistoryOfSenderByIndexCaller = + + (contract: ethers.Contract) => + async (propertyAddress: string, sender: string, index: number | string) => + execute({ + contract, + method: 'transferHistoryOfSenderByIndex', + args: [propertyAddress, sender, String(index)], + mutation: false, + }) diff --git a/lib/marketAddresses.ts b/lib/marketAddresses.ts index 1034c23cd..85736bc0c 100644 --- a/lib/marketAddresses.ts +++ b/lib/marketAddresses.ts @@ -2,6 +2,7 @@ export const marketAddresses = { eth: { main: { github: '0x34A7AdC94C4D41C3e3469F98033B372cB2fAf318', + youtube: '0x2AD380927F509A1d6338b89A7286cFAc52a896Dd', }, ropsten: { github: '0x1A45BA7BB4a5A4a01Eb5330C9F2fd8af47C16eBe', @@ -11,20 +12,24 @@ export const marketAddresses = { one: { github: '0x84b9e407e2Ee76A641b45d007bBFd9e60a13FF7d', youtube: '0x61999A2F3f403957315255D08A969602f19F2Dcf', + discord: '0x0f02e7c1bc8769B56B20E03d2Fe277b42194C260', }, rinkeby: { github: '0xeb85170bce4ea8a9ca0fb5b6620ab74ef111a50c', youtube: '0x53f8A1DEe0aF272d995aF1e206116172c00f2eb4', + discord: '0xC3af4341f71EfD7F74523D4cD9eD87F36Ed75A99', }, }, polygon: { mainnet: { github: '0xa7d0A25Cb2378c935FF94863C8614367b9e85Ed8', youtube: '0xfe607787e14A90A320cdfc05710b382380B4fd12', + discord: '0x75b2C22E5f1EF64814D574caa9c4506Eba268502', }, mumbai: { github: '0x9edc758B0477559AB6556BCA9971B4DD892d8E28', youtube: '0x7C7CDc82b195d4dcf9a789BD14CD1C73232025a8', + discord: '0xb5A7CFb9F495De44e58177990dac004b84e7C501', }, }, } as const diff --git a/package.json b/package.json index 2c2e1fc20..f06a98974 100644 --- a/package.json +++ b/package.json @@ -1,22 +1,27 @@ { "name": "@devprotocol/dev-kit", - "version": "6.0.1", + "type": "module", + "version": "8.7.0", "description": "Dev Kit for JavaScript", "author": "abyssparanoia", "license": "Apache-2.0", "main": "dist/index.js", + "module": "dist/index.mjs", "exports": { ".": { "import": "./dist/index.mjs", - "require": "./dist/index.js" + "require": "./dist/index.js", + "types": "./dist/dev-kit.d.ts" }, "./l2": { "import": "./l2/index.mjs", - "require": "./l2/index.js" + "require": "./l2/index.js", + "types": "./l2/index.d.ts" }, "./agent": { "import": "./agent/index.mjs", - "require": "./agent/index.js" + "require": "./agent/index.js", + "types": "./agent/index.d.ts" } }, "types": "./dist/dev-kit.d.ts", @@ -34,39 +39,38 @@ "build:ts": "tsc --target esnext", "build:rollup": "rollup -c && rollup -c rollup.config.d.js", "lint": "yarn lint:eslint && yarn lint:format", - "lint:eslint": "eslint . --ext .ts --fix", + "lint:eslint": "eslint . --ext .ts --fix --cache --quiet", "lint:format": "prettier --write '**/*.{ts,js,json,md,yml}'", "test": "jest", "test:coverage": "jest --coverage", - "prepack": "yarn test && yarn build", + "prepack": "yarn build", "clean": "rimraf dist l2 agent", "prepare": "husky install" }, "devDependencies": { - "@babel/preset-env": "7.16.11", - "@rollup/plugin-babel": "5.3.0", - "@rollup/plugin-multi-entry": "4.1.0", - "@rollup/plugin-node-resolve": "13.1.3", - "@types/jest": "27.4.0", - "@types/ramda": "0.27.64", - "@typescript-eslint/eslint-plugin": "5.10.2", - "@typescript-eslint/parser": "5.10.2", - "eslint": "8.8.0", - "eslint-config-prettier": "8.3.0", - "eslint-plugin-functional": "4.1.1", - "eslint-plugin-jest": "26.0.0", - "ethers": "5.5.4", - "husky": "7.0.4", - "jest": "27.4.7", - "lint-staged": "12.3.3", - "npm-run-all": "4.1.5", + "@babel/preset-env": "7.28.0", + "@rollup/plugin-babel": "6.0.4", + "@rollup/plugin-node-resolve": "16.0.1", + "@types/jest": "29.5.14", + "@types/ramda": "0.31.0", + "@typescript-eslint/eslint-plugin": "5.62.0", + "@typescript-eslint/parser": "5.62.0", + "eslint": "8.57.1", + "eslint-config-prettier": "10.1.8", + "eslint-plugin-functional": "4.4.1", + "eslint-plugin-jest": "28.14.0", + "ethers": "6.15.0", + "husky": "9.1.7", + "jest": "29.7.0", + "lint-staged": "15.5.2", + "npm-run-all2": "7.0.2", "pre-commit": "1.2.2", - "prettier": "2.5.1", - "rimraf": "3.0.2", - "rollup": "2.66.1", - "rollup-plugin-dts": "4.1.0", - "ts-jest": "27.1.3", - "typescript": "4.5.5" + "prettier": "3.6.2", + "rimraf": "5.0.10", + "rollup": "4.46.2", + "rollup-plugin-dts": "6.2.1", + "ts-jest": "29.4.1", + "typescript": "5.9.2" }, "lint-staged": { "./lib/**/*.ts": [ @@ -93,16 +97,13 @@ "testTimeout": 500000 }, "dependencies": { - "@devprotocol/util-ts": "^2.2.1", - "@types/bent": "^7.3.1", - "async-ray": "^3.2.0", - "bent": "^7.3.12", - "bignumber.js": "9.0.2", + "@devprotocol/util-ts": "4.0.0", + "bignumber.js": "9.3.1", "js-base64": "^3.7.2", - "ramda": "^0.28.0" + "ramda": "^0.31.0" }, "peerDependencies": { - "ethers": "^5.0.0" + "ethers": "^6.0.0" }, "directories": { "lib": "lib" diff --git a/rollup.config.d.js b/rollup.config.d.js index 08b3b1661..11de8a2d1 100644 --- a/rollup.config.d.js +++ b/rollup.config.d.js @@ -1,29 +1,26 @@ -import multi from '@rollup/plugin-multi-entry' import dts from 'rollup-plugin-dts' -const plugins = [multi(), dts()] +const plugins = [dts()] +const [, , , , _mode] = process.argv +const mode = + _mode === '--index' + ? 0 + : _mode === '--abi' + ? 1 + : _mode === '--l2' + ? 2 + : _mode === '--agent' + ? 3 + : undefined export default [ { - input: [ - 'dist/lib/*.d.ts', - 'dist/lib/ethereum/*.d.ts', - 'dist/lib/ethereum/**/abi.d.ts', - 'dist/lib/**/index.d.ts', - '!dist/lib/index.d.ts', - '!**/*.spec.*', - '!dist/lib/l2/**/*', - ], + input: 'dist/lib/index.d.ts', output: [{ file: 'dist/dev-kit.d.ts', format: 'es' }], plugins, }, { - input: [ - 'dist/lib/l2/*.d.ts', - 'dist/lib/l2/**/index.d.ts', - 'dist/lib/l2/**/abi.d.ts', - '!**/*.spec.*', - ], + input: 'dist/lib/l2/index.d.ts', output: [{ file: './l2/index.d.ts', format: 'es' }], plugins, }, @@ -32,4 +29,4 @@ export default [ output: [{ file: './agent/index.d.ts', format: 'es' }], plugins, }, -] +].filter((_, i) => (typeof mode === 'number' ? i === mode : true)) diff --git a/rollup.config.js b/rollup.config.js index 3fb13d608..e2a13b05b 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,19 +1,8 @@ import { nodeResolve } from '@rollup/plugin-node-resolve' -import multi from '@rollup/plugin-multi-entry' import { getBabelOutputPlugin } from '@rollup/plugin-babel' +import packageJson from './package.json' assert { type: 'json' } -const input = [ - 'dist/lib/**/*.js', - 'dist/lib/**/index.js', - '!**/*.spec.*', - '!dist/lib/l2/**/*', -] -const inputL2 = [ - 'dist/lib/l2/**/*.js', - 'dist/lib/l2/**/index.js', - '!**/*.spec.*', -] -const plugins = [multi(), nodeResolve({ modulesOnly: true })] +const plugins = [nodeResolve({ modulesOnly: true })] const pluginsCjs = [ ...plugins, getBabelOutputPlugin({ @@ -29,11 +18,17 @@ const pluginsCjs = [ ], }), ] -const external = ['ethers'] +const external = [ + ...Object.keys(packageJson.dependencies), + ...Object.keys(packageJson.peerDependencies), +] +console.log('External packages:', external) +const [, , , _mode] = process.argv +const mode = _mode === '--esm' ? 'es' : _mode === '--cjs' ? 'cjs' : undefined export default [ { - input, + input: 'dist/lib/index.js', external, output: [ { @@ -44,7 +39,7 @@ export default [ plugins, }, { - input, + input: 'dist/lib/index.js', external, output: [ { @@ -56,7 +51,7 @@ export default [ }, { external, - input: inputL2, + input: 'dist/lib/l2/index.js', output: [ { file: './l2/index.mjs', @@ -67,7 +62,7 @@ export default [ }, { external, - input: inputL2, + input: 'dist/lib/l2/index.js', output: [ { file: './l2/index.js', @@ -98,4 +93,4 @@ export default [ ], plugins: pluginsCjs, }, -] +].filter((x) => (mode ? x.output.every(({ format }) => format === mode) : x)) diff --git a/tsconfig.json b/tsconfig.json index ca9cc148f..8936fb55d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "allowSyntheticDefaultImports": true, - "target": "es2015", + "target": "ESNext", "lib": ["dom", "es2018"], "strict": true, "strictNullChecks": true, @@ -17,6 +17,6 @@ "outDir": "dist", "rootDir": "." }, - "include": ["lib"], + "include": ["lib", "lib/agent/common/clients/.ts"], "exclude": ["node_modules", "**/*.spec.ts"] } diff --git a/yarn.lock b/yarn.lock index ac363a789..ce5c44f1e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,634 +2,467 @@ # yarn lockfile v1 -"@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" - integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== - dependencies: - "@babel/highlight" "^7.16.0" - -"@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" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== - dependencies: - "@babel/highlight" "^7.16.7" - -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.0", "@babel/compat-data@^7.16.4": - version "7.16.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.4.tgz#081d6bbc336ec5c2435c6346b2ae1fb98b5ac68e" - integrity sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q== - -"@babel/compat-data@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" - integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== - -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.0.tgz#c4ff44046f5fe310525cc9eb4ef5147f0c5374d4" - integrity sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ== - dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/generator" "^7.16.0" - "@babel/helper-compilation-targets" "^7.16.0" - "@babel/helper-module-transforms" "^7.16.0" - "@babel/helpers" "^7.16.0" - "@babel/parser" "^7.16.0" - "@babel/template" "^7.16.0" - "@babel/traverse" "^7.16.0" - "@babel/types" "^7.16.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/core@^7.8.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.7.tgz#db990f931f6d40cb9b87a0dc7d2adc749f1dcbcf" - integrity sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.16.7" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helpers" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/generator@^7.16.0", "@babel/generator@^7.7.2": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.0.tgz#d40f3d1d5075e62d3500bccb67f3daa8a95265b2" - integrity sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew== - dependencies: - "@babel/types" "^7.16.0" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.7.tgz#b42bf46a3079fa65e1544135f32e7958f048adbb" - integrity sha512-/ST3Sg8MLGY5HVYmrjOgL60ENux/HfO/CsUh7y4MalThufhE/Ff/6EibFDHi4jiDCaWfJKoqbE6oTh21c5hrRg== - dependencies: - "@babel/types" "^7.16.7" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.8.tgz#359d44d966b8cd059d543250ce79596f792f2ebe" - integrity sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw== - dependencies: - "@babel/types" "^7.16.8" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz#9a1f0ebcda53d9a2d00108c4ceace6a5d5f1f08d" - integrity sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg== - dependencies: - "@babel/types" "^7.16.0" - -"@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" - 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" - integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.0": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz#5b480cd13f68363df6ec4dc8ac8e2da11363cbf0" - integrity sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA== - dependencies: - "@babel/compat-data" "^7.16.0" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.17.5" - semver "^6.3.0" - -"@babel/helper-compilation-targets@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" - integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA== - dependencies: - "@babel/compat-data" "^7.16.4" - "@babel/helper-validator-option" "^7.16.7" - browserslist "^4.17.5" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.16.10": - version "7.16.10" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz#8a6959b9cc818a88815ba3c5474619e9c0f2c21c" - integrity sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg== - 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-member-expression-to-functions" "^7.16.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - -"@babel/helper-create-class-features-plugin@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.7.tgz#9c5b34b53a01f2097daf10678d65135c1b9f84ba" - integrity sha512-kIFozAvVfK05DM4EVQYKK+zteWvY85BFdGBRQBytRyY3y+6PX0DkDOn/CZ3lEuczCfrCxEzwt0YtP/87YPTWSw== - 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-member-expression-to-functions" "^7.16.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - -"@babel/helper-create-regexp-features-plugin@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz#06b2348ce37fccc4f5e18dcd8d75053f2a7c44ff" - integrity sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.0" - regexpu-core "^4.7.1" - -"@babel/helper-create-regexp-features-plugin@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48" - integrity sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - regexpu-core "^4.7.1" - -"@babel/helper-define-polyfill-provider@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz#c5b10cf4b324ff840140bb07e05b8564af2ae971" - integrity sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg== - 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" +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== -"@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" - integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== - dependencies: - "@babel/types" "^7.16.7" - -"@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" - integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-function-name@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz#b7dd0797d00bbfee4f07e9c4ea5b0e30c8bb1481" - integrity sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog== - dependencies: - "@babel/helper-get-function-arity" "^7.16.0" - "@babel/template" "^7.16.0" - "@babel/types" "^7.16.0" - -"@babel/helper-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" - integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== - dependencies: - "@babel/helper-get-function-arity" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-get-function-arity@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz#0088c7486b29a9cb5d948b1a1de46db66e089cfa" - integrity sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-get-function-arity@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" - integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-hoist-variables@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz#4c9023c2f1def7e28ff46fc1dbcd36a39beaa81a" - integrity sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg== - dependencies: - "@babel/types" "^7.16.0" - -"@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" - integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-member-expression-to-functions@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz#29287040efd197c77636ef75188e81da8bccd5a4" - integrity sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-member-expression-to-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0" - integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz#90538e60b672ecf1b448f5f4f5433d37e79a3ec3" - integrity sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg== - dependencies: - "@babel/types" "^7.16.0" - -"@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" - integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== - dependencies: - "@babel/types" "^7.16.7" +"@adraffy/ens-normalize@1.10.1": + version "1.10.1" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069" + integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== -"@babel/helper-module-transforms@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz#1c82a8dd4cb34577502ebd2909699b194c3e9bb5" - integrity sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA== +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== dependencies: - "@babel/helper-module-imports" "^7.16.0" - "@babel/helper-replace-supers" "^7.16.0" - "@babel/helper-simple-access" "^7.16.0" - "@babel/helper-split-export-declaration" "^7.16.0" - "@babel/helper-validator-identifier" "^7.15.7" - "@babel/template" "^7.16.0" - "@babel/traverse" "^7.16.0" - "@babel/types" "^7.16.0" + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" -"@babel/helper-module-transforms@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41" - integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" + integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ== dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-optimise-call-expression@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz#cecdb145d70c54096b1564f8e9f10cd7d193b338" - integrity sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw== - dependencies: - "@babel/types" "^7.16.0" + "@babel/highlight" "^7.22.5" -"@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" - integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== +"@babel/code-frame@^7.26.2": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" + integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== 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.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" - integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== - -"@babel/helper-plugin-utils@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" - 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" - integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-wrap-function" "^7.16.8" - "@babel/types" "^7.16.8" - -"@babel/helper-replace-supers@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz#73055e8d3cf9bcba8ddb55cad93fedc860f68f17" - integrity sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.16.0" - "@babel/helper-optimise-call-expression" "^7.16.0" - "@babel/traverse" "^7.16.0" - "@babel/types" "^7.16.0" - -"@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" - integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== - 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" - -"@babel/helper-simple-access@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz#21d6a27620e383e37534cf6c10bba019a6f90517" - integrity sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-simple-access@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" - integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g== - dependencies: - "@babel/types" "^7.16.7" - -"@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" - integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-split-export-declaration@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz#29672f43663e936df370aaeb22beddb3baec7438" - integrity sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw== - 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" - integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-validator-identifier@^7.15.7": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" - integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== - -"@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" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - -"@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== - -"@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" - integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== - -"@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" - integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== - dependencies: - "@babel/helper-function-name" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.8" - "@babel/types" "^7.16.8" - -"@babel/helpers@^7.16.0": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.3.tgz#27fc64f40b996e7074dc73128c3e5c3e7f55c43c" - integrity sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w== - dependencies: - "@babel/template" "^7.16.0" - "@babel/traverse" "^7.16.3" - "@babel/types" "^7.16.0" - -"@babel/helpers@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc" - integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw== - dependencies: - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/highlight@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" - integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== - dependencies: - "@babel/helper-validator-identifier" "^7.15.7" - chalk "^2.0.0" + "@babel/helper-validator-identifier" "^7.25.9" js-tokens "^4.0.0" + picocolors "^1.0.0" -"@babel/highlight@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.7.tgz#81a01d7d675046f0d96f82450d9d9578bdfd6b0b" - integrity sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw== +"@babel/code-frame@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" + integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - chalk "^2.0.0" + "@babel/helper-validator-identifier" "^7.27.1" js-tokens "^4.0.0" + picocolors "^1.1.1" + +"@babel/compat-data@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" + integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== + +"@babel/compat-data@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.1.tgz#db7cf122745e0a332c44e847ddc4f5e5221a43f6" + integrity sha512-Q+E+rd/yBzNQhXkG+zQnF58e4zoZfBedaxwzPmicKsiK3nt8iJYrSrDbjwFFDGC4f+rPafqRaPH6TsDoSvMf7A== + +"@babel/compat-data@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.2.tgz#4183f9e642fd84e74e3eea7ffa93a412e3b102c9" + integrity sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ== + +"@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.0.tgz#9fc6fd58c2a6a15243cd13983224968392070790" + integrity sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.9.tgz#bd96492c68822198f33e8a256061da3cf391f58f" + integrity sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.5" + "@babel/generator" "^7.22.9" + "@babel/helper-compilation-targets" "^7.22.9" + "@babel/helper-module-transforms" "^7.22.9" + "@babel/helpers" "^7.22.6" + "@babel/parser" "^7.22.7" + "@babel/template" "^7.22.5" + "@babel/traverse" "^7.22.8" + "@babel/types" "^7.22.5" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.1" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.0", "@babel/parser@^7.16.3": - version "7.16.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.4.tgz#d5f92f57cf2c74ffe9b37981c0e72fee7311372e" - integrity sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng== - -"@babel/parser@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.7.tgz#d372dda9c89fcec340a82630a9f533f2fe15877e" - integrity sha512-sR4eaSrnM7BV7QPzGfEX5paG/6wrZM3I0HDzfIAK06ESvo9oy3xBuVBxE3MbQaKNhvg8g/ixjMWo2CGpzpHsDA== - -"@babel/parser@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.8.tgz#61c243a3875f7d0b0962b0543a33ece6ff2f1f17" - integrity sha512-i7jDUfrVBWc+7OKcBzEe5n7fbv3i2fWtxKzzCvOjnzSxMfWMigAhtfJ7qzZNGFNMsCCd67+uz553dYKWXPvCKw== - -"@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" - 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" - integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== - 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" - -"@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" - integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ== - 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" - -"@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" - integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== +"@babel/generator@^7.22.7", "@babel/generator@^7.22.9", "@babel/generator@^7.7.2": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.9.tgz#572ecfa7a31002fa1de2a9d91621fd895da8493d" + integrity sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/types" "^7.22.5" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" -"@babel/plugin-proposal-class-static-block@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz#712357570b612106ef5426d13dc433ce0f200c2a" - integrity sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-class-static-block" "^7.14.5" +"@babel/generator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.1.tgz#862d4fad858f7208edd487c28b58144036b76230" + integrity sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w== + dependencies: + "@babel/parser" "^7.27.1" + "@babel/types" "^7.27.1" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + +"@babel/generator@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.0.tgz#9cc2f7bd6eb054d77dc66c2664148a0c5118acd2" + integrity sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg== + dependencies: + "@babel/parser" "^7.28.0" + "@babel/types" "^7.28.0" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" + jsesc "^3.0.2" + +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-annotate-as-pure@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz#4345d81a9a46a6486e24d069469f13e60445c05d" + integrity sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow== + dependencies: + "@babel/types" "^7.27.1" + +"@babel/helper-annotate-as-pure@^7.27.3": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5" + integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg== + dependencies: + "@babel/types" "^7.27.3" + +"@babel/helper-compilation-targets@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz#f9d0a7aaaa7cd32a3f31c9316a69f5a9bcacb892" + integrity sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.5" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" -"@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" - integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== +"@babel/helper-compilation-targets@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.1.tgz#eac1096c7374f161e4f33fc8ae38f4ddf122087a" + integrity sha512-2YaDd/Rd9E598B5+WIc8wJPmWETiiJXFYVE60oX8FDohv7rAUU3CQj+A1MgeEmcsk2+dQuEjIe/GDvig0SqL4g== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/compat-data" "^7.27.1" + "@babel/helper-validator-option" "^7.27.1" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" -"@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" - integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== +"@babel/helper-compilation-targets@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" + integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@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" - integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== + "@babel/compat-data" "^7.27.2" + "@babel/helper-validator-option" "^7.27.1" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz#5bee4262a6ea5ddc852d0806199eb17ca3de9281" + integrity sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/traverse" "^7.27.1" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz#9d8e61a8d9366fe66198f57c40565663de0825f6" + integrity sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz#05b0882d97ba1d4d03519e4bce615d70afa18c53" + integrity sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + regexpu-core "^6.2.0" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.6.5": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz#742ccf1cb003c07b48859fc9fa2c1bbe40e5f753" + integrity sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-plugin-utils" "^7.27.1" + debug "^4.4.1" + lodash.debounce "^4.0.8" + resolve "^1.22.10" + +"@babel/helper-environment-visitor@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" + integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== + +"@babel/helper-function-name@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" + integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== + dependencies: + "@babel/template" "^7.22.5" + "@babel/types" "^7.22.5" + +"@babel/helper-globals@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" + integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" -"@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" - integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" +"@babel/helper-member-expression-to-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz#ea1211276be93e798ce19037da6f06fbb994fa44" + integrity sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" + integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-module-imports@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" + integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-transforms@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" + integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.5" + +"@babel/helper-module-transforms@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz#e1663b8b71d2de948da5c4fb2a20ca4f3ec27a6f" + integrity sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/helper-optimise-call-expression@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200" + integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw== + dependencies: + "@babel/types" "^7.27.1" + +"@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.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-plugin-utils@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" + integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== + +"@babel/helper-remap-async-to-generator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz#4601d5c7ce2eb2aea58328d43725523fcd362ce6" + integrity sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-wrap-function" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/helper-replace-supers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0" + integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56" + integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + +"@babel/helper-validator-identifier@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" + integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== + +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== + +"@babel/helper-validator-identifier@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== + +"@babel/helper-validator-option@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" + integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== + +"@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== + +"@babel/helper-wrap-function@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz#b88285009c31427af318d4fe37651cd62a142409" + integrity sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ== + dependencies: + "@babel/template" "^7.27.1" + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helpers@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.6.tgz#8e61d3395a4f0c5a8060f309fb008200969b5ecd" + integrity sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA== + dependencies: + "@babel/template" "^7.22.5" + "@babel/traverse" "^7.22.6" + "@babel/types" "^7.22.5" + +"@babel/highlight@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031" + integrity sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw== + dependencies: + "@babel/helper-validator-identifier" "^7.22.5" + chalk "^2.0.0" + js-tokens "^4.0.0" -"@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" - integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7": + version "7.22.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" + integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== -"@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" - integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== +"@babel/parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.1.tgz#c55d5bed74449d1223701f1869b9ee345cc94cc9" + integrity sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/types" "^7.27.1" -"@babel/plugin-proposal-object-rest-spread@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz#94593ef1ddf37021a25bdcb5754c4a8d534b01d8" - integrity sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA== +"@babel/parser@^7.27.2", "@babel/parser@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.0.tgz#979829fbab51a29e13901e5a80713dbcb840825e" + integrity sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g== dependencies: - "@babel/compat-data" "^7.16.4" - "@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" + "@babel/types" "^7.28.0" -"@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" - integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz#61dd8a8e61f7eb568268d1b5f129da3eee364bf9" + integrity sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@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" - integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz#43f70a6d7efd52370eefbdf55ae03d91b293856d" + integrity sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA== 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" + "@babel/helper-plugin-utils" "^7.27.1" -"@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" - integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.27.1": + version "7.27.1" + 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.27.1.tgz#beb623bd573b8b6f3047bd04c32506adc3e58a72" + integrity sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.10" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.27.1" -"@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" - integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz#e134a5479eb2ba9c02714e8c1ebf1ec9076124fd" + integrity sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw== 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" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/plugin-transform-optional-chaining" "^7.27.1" -"@babel/plugin-proposal-unicode-property-regex@^7.16.7": - 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" - integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz#bb1c25af34d75115ce229a1de7fa44bf8f955670" + integrity sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz#890482dfc5ea378e42e19a71e709728cabf18612" - integrity sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -645,33 +478,26 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": +"@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" 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" - 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" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== +"@babel/plugin-syntax-import-assertions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz#88894aefd2b03b5ee6ad1562a7c8e1587496aecd" + integrity sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@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" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== +"@babel/plugin-syntax-import-attributes@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz#34c017d54496f9b11b61474e7ea3dfd5563ffe07" + integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.27.1" "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" @@ -687,7 +513,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": +"@babel/plugin-syntax-jsx@^7.7.2": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" + integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@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" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== @@ -701,7 +534,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": +"@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" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== @@ -729,14 +562,7 @@ 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" - 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": +"@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" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== @@ -744,952 +570,680 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.7.2": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz#2feeb13d9334cc582ea9111d3506f773174179bb" - integrity sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" + integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" -"@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" - integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@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" - integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== +"@babel/plugin-transform-arrow-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz#6e2061067ba3ab0266d834a9f94811196f2aba9a" + integrity sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA== dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/helper-plugin-utils" "^7.27.1" -"@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" - integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== +"@babel/plugin-transform-async-generator-functions@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz#1276e6c7285ab2cd1eccb0bc7356b7a69ff842c2" + integrity sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-remap-async-to-generator" "^7.27.1" + "@babel/traverse" "^7.28.0" -"@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" - integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== +"@babel/plugin-transform-async-to-generator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz#9a93893b9379b39466c74474f55af03de78c66e7" + integrity sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-remap-async-to-generator" "^7.27.1" -"@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" - integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== +"@babel/plugin-transform-block-scoped-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz#558a9d6e24cf72802dd3b62a4b51e0d62c0f57f9" + integrity sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg== 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" + "@babel/helper-plugin-utils" "^7.27.1" -"@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" - integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== +"@babel/plugin-transform-block-scoping@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.0.tgz#e7c50cbacc18034f210b93defa89638666099451" + integrity sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-destructuring@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23" - integrity sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A== +"@babel/plugin-transform-class-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz#dd40a6a370dfd49d32362ae206ddaf2bb082a925" + integrity sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-dotall-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" - integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== +"@babel/plugin-transform-class-static-block@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz#7e920d5625b25bbccd3061aefbcc05805ed56ce4" + integrity sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz#50bab00c1084b6162d0a58a818031cf57798e06f" - integrity sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw== +"@babel/plugin-transform-classes@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.0.tgz#12fa46cffc32a6e084011b650539e880add8a0f8" + integrity sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-globals" "^7.28.0" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + "@babel/traverse" "^7.28.0" -"@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" - integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== +"@babel/plugin-transform-computed-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz#81662e78bf5e734a97982c2b7f0a793288ef3caa" + integrity sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/template" "^7.27.1" -"@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" - integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== +"@babel/plugin-transform-destructuring@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz#0f156588f69c596089b7d5b06f5af83d9aa7f97a" + integrity sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.28.0" -"@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" - integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== +"@babel/plugin-transform-dotall-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz#aa6821de864c528b1fecf286f0a174e38e826f4d" + integrity sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@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" - integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== +"@babel/plugin-transform-duplicate-keys@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz#f1fbf628ece18e12e7b32b175940e68358f546d1" + integrity sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q== dependencies: - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.27.1" -"@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" - integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz#5043854ca620a94149372e69030ff8cb6a9eb0ec" + integrity sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@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" - integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== +"@babel/plugin-transform-dynamic-import@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz#4c78f35552ac0e06aa1f6e3c573d67695e8af5a4" + integrity sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.27.1" -"@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" - integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== +"@babel/plugin-transform-explicit-resource-management@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz#45be6211b778dbf4b9d54c4e8a2b42fa72e09a1a" + integrity sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ== dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-destructuring" "^7.28.0" -"@babel/plugin-transform-modules-commonjs@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe" - integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA== +"@babel/plugin-transform-exponentiation-operator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz#fc497b12d8277e559747f5a3ed868dd8064f83e1" + integrity sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ== dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-simple-access" "^7.16.7" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-systemjs@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7" - integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw== +"@babel/plugin-transform-export-namespace-from@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz#71ca69d3471edd6daa711cf4dfc3400415df9c23" + integrity sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ== dependencies: - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-plugin-utils" "^7.27.1" -"@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" - integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== +"@babel/plugin-transform-for-of@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz#bc24f7080e9ff721b63a70ac7b2564ca15b6c40a" + integrity sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw== dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" - integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== +"@babel/plugin-transform-function-name@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz#4d0bf307720e4dce6d7c30fcb1fd6ca77bdeb3a7" + integrity sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-compilation-targets" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@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" - integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== +"@babel/plugin-transform-json-strings@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz#a2e0ce6ef256376bd527f290da023983527a4f4c" + integrity sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q== 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" - integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - -"@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" - 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" - integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-regenerator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" - integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== - dependencies: - regenerator-transform "^0.14.2" - -"@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" - 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" - 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" - integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - -"@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" - 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" - 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" - integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@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" - 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" - integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/preset-env@7.16.11": - version "7.16.11" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" - integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== - dependencies: - "@babel/compat-data" "^7.16.8" - "@babel/helper-compilation-targets" "^7.16.7" - "@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.16.7" - "@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.16.7" - "@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.16.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.16.8" - "@babel/plugin-transform-modules-systemjs" "^7.16.7" - "@babel/plugin-transform-modules-umd" "^7.16.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" - "@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.16.7" - "@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.16.8" - 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.20.2" - semver "^6.3.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@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" - integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== +"@babel/plugin-transform-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz#baaefa4d10a1d4206f9dcdda50d7d5827bb70b24" + integrity sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA== 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" - -"@babel/runtime@^7.8.4": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5" - integrity sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.16.0", "@babel/template@^7.3.3": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6" - integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A== - dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/parser" "^7.16.0" - "@babel/types" "^7.16.0" - -"@babel/template@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" - integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.0", "@babel/traverse@^7.16.3", "@babel/traverse@^7.7.2": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.3.tgz#f63e8a938cc1b780f66d9ed3c54f532ca2d14787" - integrity sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag== - dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/generator" "^7.16.0" - "@babel/helper-function-name" "^7.16.0" - "@babel/helper-hoist-variables" "^7.16.0" - "@babel/helper-split-export-declaration" "^7.16.0" - "@babel/parser" "^7.16.3" - "@babel/types" "^7.16.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.7.tgz#dac01236a72c2560073658dd1a285fe4e0865d76" - integrity sha512-8KWJPIb8c2VvY8AJrydh6+fVRo2ODx1wYBU2398xJVq0JomuLBZmVQzLPBblJgHIGYG4znCpUZUZ0Pt2vdmVYQ== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.16.7" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/types" "^7.16.7" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.8.tgz#bab2f2b09a5fe8a8d9cad22cbfe3ba1d126fef9c" - integrity sha512-xe+H7JlvKsDQwXRsBhSnq1/+9c+LlQcCK3Tn/l5sbx02HYns/cn7ibp9+RV1sIUqu7hKg91NWsgHurO9dowITQ== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.16.8" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.16.8" - "@babel/types" "^7.16.8" - debug "^4.1.0" - globals "^11.1.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" - integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== +"@babel/plugin-transform-logical-assignment-operators@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz#890cb20e0270e0e5bebe3f025b434841c32d5baa" + integrity sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw== dependencies: - "@babel/helper-validator-identifier" "^7.15.7" - to-fast-properties "^2.0.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/types@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.7.tgz#4ed19d51f840ed4bd5645be6ce40775fecf03159" - integrity sha512-E8HuV7FO9qLpx6OtoGfUQ2cjIYnbFwvZWYBS+87EwtdMvmUPJSwykpovFB+8insbpF0uJcpr8KMUi64XZntZcg== +"@babel/plugin-transform-member-expression-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz#37b88ba594d852418e99536f5612f795f23aeaf9" + integrity sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ== dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - to-fast-properties "^2.0.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/types@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.8.tgz#0ba5da91dd71e0a4e7781a30f22770831062e3c1" - integrity sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg== +"@babel/plugin-transform-modules-amd@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz#a4145f9d87c2291fe2d05f994b65dba4e3e7196f" + integrity sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA== dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - to-fast-properties "^2.0.0" - -"@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" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@devprotocol/util-ts@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@devprotocol/util-ts/-/util-ts-2.2.1.tgz#331b0c29b3837589bcb16f143afb9a51495238cc" - integrity sha512-IadCVRL5hxxX2wvWZ/ErzpKOIIzZA/YHUWuGn6Ycg2PZ3Iq4asjtpezltQ2FmIBFciBVIl9E4E+1UMLrQbAMCg== - dependencies: - axios "0.21.1" - bent "7.3.12" - ethereum-waffle "3.3.0" - ramda "^0.27.1" - sinon "9.2.4" - url-join "4.0.1" - -"@ensdomains/ens@^0.4.4": - version "0.4.5" - resolved "https://registry.yarnpkg.com/@ensdomains/ens/-/ens-0.4.5.tgz#e0aebc005afdc066447c6e22feb4eda89a5edbfc" - integrity sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw== - dependencies: - bluebird "^3.5.2" - eth-ens-namehash "^2.0.8" - solc "^0.4.20" - testrpc "0.0.1" - web3-utils "^1.0.0-beta.31" - -"@ensdomains/resolver@^0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@ensdomains/resolver/-/resolver-0.2.4.tgz#c10fe28bf5efbf49bff4666d909aed0265efbc89" - integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== - -"@eslint/eslintrc@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.0.5.tgz#33f1b838dbf1f923bfa517e008362b78ddbbf318" - integrity sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ== +"@babel/plugin-transform-modules-commonjs@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832" + integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw== dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.2.0" - globals "^13.9.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@ethereum-waffle/chai@^3.3.0": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/chai/-/chai-3.4.1.tgz#500b59db766a490cb19a7f74ac75a1c3cf86049b" - integrity sha512-8mjgjWCe8XSCWuyJgVtJY8sm00VTczGBTDxBejgEBWN/J9x7QD8jdmWW8bfxdnqZbxiDCTvRFL58Wmd254BEqQ== - dependencies: - "@ethereum-waffle/provider" "^3.4.0" - ethers "^5.4.7" - -"@ethereum-waffle/compiler@^3.3.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/compiler/-/compiler-3.4.0.tgz#68917321212563544913de33e408327745cb1284" - integrity sha512-a2wxGOoB9F1QFRE+Om7Cz2wn+pxM/o7a0a6cbwhaS2lECJgFzeN9xEkVrKahRkF4gEfXGcuORg4msP0Asxezlw== - dependencies: - "@resolver-engine/imports" "^0.3.3" - "@resolver-engine/imports-fs" "^0.3.3" - "@typechain/ethers-v5" "^2.0.0" - "@types/mkdirp" "^0.5.2" - "@types/node-fetch" "^2.5.5" - ethers "^5.0.1" - mkdirp "^0.5.1" - node-fetch "^2.6.1" - solc "^0.6.3" - ts-generator "^0.1.1" - typechain "^3.0.0" - -"@ethereum-waffle/ens@^3.3.1": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/ens/-/ens-3.3.1.tgz#0f1b7ac4fc156641c18accd60f8ce256e2c475cf" - integrity sha512-xSjNWnT2Iwii3J3XGqD+F5yLEOzQzLHNLGfI5KIXdtQ4FHgReW/AMGRgPPLi+n+SP08oEQWJ3sEKrvbFlwJuaA== - dependencies: - "@ensdomains/ens" "^0.4.4" - "@ensdomains/resolver" "^0.2.4" - ethers "^5.5.2" - -"@ethereum-waffle/mock-contract@^3.2.2": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/mock-contract/-/mock-contract-3.3.1.tgz#dfd53a6e184f5e4c5e1119a8aef67f2d88914497" - integrity sha512-h9yChF7IkpJLODg/o9/jlwKwTcXJLSEIq3gewgwUJuBHnhPkJGekcZvsTbximYc+e42QUZrDUATSuTCIryeCEA== - dependencies: - "@ethersproject/abi" "^5.5.0" - ethers "^5.5.2" - -"@ethereum-waffle/provider@^3.3.0", "@ethereum-waffle/provider@^3.4.0": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/provider/-/provider-3.4.1.tgz#d59f5741d5ee96a7d5501f455709b38d81c8be2f" - integrity sha512-5iDte7c9g9N1rTRE/P4npwk1Hus/wA2yH850X6sP30mr1IrwSG9NKn6/2SOQkAVJnh9jqyLVg2X9xCODWL8G4A== - dependencies: - "@ethereum-waffle/ens" "^3.3.1" - ethers "^5.5.2" - ganache-core "^2.13.2" - patch-package "^6.2.2" - postinstall-postinstall "^2.1.0" - -"@ethersproject/abi@5.0.0-beta.153": - version "5.0.0-beta.153" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz#43a37172b33794e4562999f6e2d555b7599a8eee" - integrity sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg== - dependencies: - "@ethersproject/address" ">=5.0.0-beta.128" - "@ethersproject/bignumber" ">=5.0.0-beta.130" - "@ethersproject/bytes" ">=5.0.0-beta.129" - "@ethersproject/constants" ">=5.0.0-beta.128" - "@ethersproject/hash" ">=5.0.0-beta.128" - "@ethersproject/keccak256" ">=5.0.0-beta.127" - "@ethersproject/logger" ">=5.0.0-beta.129" - "@ethersproject/properties" ">=5.0.0-beta.131" - "@ethersproject/strings" ">=5.0.0-beta.130" - -"@ethersproject/abi@5.5.0", "@ethersproject/abi@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.5.0.tgz#fb52820e22e50b854ff15ce1647cc508d6660613" - integrity sha512-loW7I4AohP5KycATvc0MgujU6JyCHPqHdeoo9z3Nr9xEiNioxa65ccdm1+fsoJhkuhdRtfcL8cfyGamz2AxZ5w== - dependencies: - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - -"@ethersproject/abstract-provider@5.5.1", "@ethersproject/abstract-provider@^5.5.0": - version "5.5.1" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.5.1.tgz#2f1f6e8a3ab7d378d8ad0b5718460f85649710c5" - integrity sha512-m+MA/ful6eKbxpr99xUYeRvLkfnlqzrF8SZ46d/xFB1A7ZVknYc/sXJG0RcufF52Qn2jeFj1hhcoQ7IXjNKUqg== - dependencies: - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/networks" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/web" "^5.5.0" - -"@ethersproject/abstract-signer@5.5.0", "@ethersproject/abstract-signer@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.5.0.tgz#590ff6693370c60ae376bf1c7ada59eb2a8dd08d" - integrity sha512-lj//7r250MXVLKI7sVarXAbZXbv9P50lgmJQGr2/is82EwEb8r7HrxsmMqAjTsztMYy7ohrIhGMIml+Gx4D3mA== +"@babel/plugin-transform-modules-systemjs@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz#00e05b61863070d0f3292a00126c16c0e024c4ed" + integrity sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA== dependencies: - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@ethersproject/address@5.5.0", "@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.5.0.tgz#bcc6f576a553f21f3dd7ba17248f81b473c9c78f" - integrity sha512-l4Nj0eWlTUh6ro5IbPTgbpT4wRbdH5l8CQf7icF7sb/SI3Nhd9Y9HzhonTSTi6CefI0necIw7LJqQPopPLZyWw== +"@babel/plugin-transform-modules-umd@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz#63f2cf4f6dc15debc12f694e44714863d34cd334" + integrity sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w== dependencies: - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/rlp" "^5.5.0" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@ethersproject/base64@5.5.0", "@ethersproject/base64@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.5.0.tgz#881e8544e47ed976930836986e5eb8fab259c090" - integrity sha512-tdayUKhU1ljrlHzEWbStXazDpsx4eg1dBXUSI6+mHlYklOXoXF6lZvw8tnD6oVaWfnMxAgRSKROg3cVKtCcppA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz#f32b8f7818d8fc0cc46ee20a8ef75f071af976e1" + integrity sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng== dependencies: - "@ethersproject/bytes" "^5.5.0" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@ethersproject/basex@5.5.0", "@ethersproject/basex@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.5.0.tgz#e40a53ae6d6b09ab4d977bd037010d4bed21b4d3" - integrity sha512-ZIodwhHpVJ0Y3hUCfUucmxKsWQA5TMnavp5j/UOuDdzZWzJlRmuOjcTMIGgHCYuZmHt36BfiSyQPSRskPxbfaQ== +"@babel/plugin-transform-new-target@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz#259c43939728cad1706ac17351b7e6a7bea1abeb" + integrity sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ== dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/properties" "^5.5.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@ethersproject/bignumber@5.5.0", "@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.5.0.tgz#875b143f04a216f4f8b96245bde942d42d279527" - integrity sha512-6Xytlwvy6Rn3U3gKEc1vP7nR92frHkv6wtVr95LFR3jREXiCPzdWxKQ1cx4JGQBXxcguAwjA8murlYN2TSiEbg== +"@babel/plugin-transform-nullish-coalescing-operator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz#4f9d3153bf6782d73dd42785a9d22d03197bc91d" + integrity sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA== dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - bn.js "^4.11.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@ethersproject/bytes@5.5.0", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.5.0.tgz#cb11c526de657e7b45d2e0f0246fb3b9d29a601c" - integrity sha512-ABvc7BHWhZU9PNM/tANm/Qx4ostPGadAuQzWTr3doklZOhDlmcBqclrQe/ZXUIj3K8wC28oYeuRa+A37tX9kog== +"@babel/plugin-transform-numeric-separator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz#614e0b15cc800e5997dadd9bd6ea524ed6c819c6" + integrity sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw== dependencies: - "@ethersproject/logger" "^5.5.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@ethersproject/constants@5.5.0", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.5.0.tgz#d2a2cd7d94bd1d58377d1d66c4f53c9be4d0a45e" - integrity sha512-2MsRRVChkvMWR+GyMGY4N1sAX9Mt3J9KykCsgUFd/1mwS0UH1qw+Bv9k1UJb3X3YJYFco9H20pjSlOIfCG5HYQ== +"@babel/plugin-transform-object-rest-spread@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.0.tgz#d23021857ffd7cd809f54d624299b8086402ed8d" + integrity sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA== dependencies: - "@ethersproject/bignumber" "^5.5.0" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-destructuring" "^7.28.0" + "@babel/plugin-transform-parameters" "^7.27.7" + "@babel/traverse" "^7.28.0" -"@ethersproject/contracts@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.5.0.tgz#b735260d4bd61283a670a82d5275e2a38892c197" - integrity sha512-2viY7NzyvJkh+Ug17v7g3/IJC8HqZBDcOjYARZLdzRxrfGlRgmYgl6xPRKVbEzy1dWKw/iv7chDcS83pg6cLxg== - dependencies: - "@ethersproject/abi" "^5.5.0" - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - -"@ethersproject/hash@5.5.0", "@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.5.0.tgz#7cee76d08f88d1873574c849e0207dcb32380cc9" - integrity sha512-dnGVpK1WtBjmnp3mUT0PlU2MpapnwWI0PibldQEq1408tQBAbZpPidkWoVVuNMOl/lISO3+4hXZWCL3YV7qzfg== - dependencies: - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - -"@ethersproject/hdnode@5.5.0", "@ethersproject/hdnode@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.5.0.tgz#4a04e28f41c546f7c978528ea1575206a200ddf6" - integrity sha512-mcSOo9zeUg1L0CoJH7zmxwUG5ggQHU1UrRf8jyTYy6HxdZV+r0PBoL1bxr+JHIPXRzS6u/UW4mEn43y0tmyF8Q== - dependencies: - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/basex" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/pbkdf2" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" - "@ethersproject/signing-key" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/wordlists" "^5.5.0" - -"@ethersproject/json-wallets@5.5.0", "@ethersproject/json-wallets@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.5.0.tgz#dd522d4297e15bccc8e1427d247ec8376b60e325" - integrity sha512-9lA21XQnCdcS72xlBn1jfQdj2A1VUxZzOzi9UkNdnokNKke/9Ya2xA9aIK1SC3PQyBDLt4C+dfps7ULpkvKikQ== - dependencies: - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/hdnode" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/pbkdf2" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/random" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - aes-js "3.0.0" - scrypt-js "3.0.1" - -"@ethersproject/keccak256@5.5.0", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.5.0.tgz#e4b1f9d7701da87c564ffe336f86dcee82983492" - integrity sha512-5VoFCTjo2rYbBe1l2f4mccaRFN/4VQEYFwwn04aJV2h7qf4ZvI2wFxUE1XOX+snbwCLRzIeikOqtAoPwMza9kg== +"@babel/plugin-transform-object-super@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz#1c932cd27bf3874c43a5cac4f43ebf970c9871b5" + integrity sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng== dependencies: - "@ethersproject/bytes" "^5.5.0" - js-sha3 "0.8.0" - -"@ethersproject/logger@5.5.0", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.5.0.tgz#0c2caebeff98e10aefa5aef27d7441c7fd18cf5d" - integrity sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg== + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" -"@ethersproject/networks@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.5.2.tgz#784c8b1283cd2a931114ab428dae1bd00c07630b" - integrity sha512-NEqPxbGBfy6O3x4ZTISb90SjEDkWYDUbEeIFhJly0F7sZjoQMnj5KYzMSkMkLKZ+1fGpx00EDpHQCy6PrDupkQ== +"@babel/plugin-transform-optional-catch-binding@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz#84c7341ebde35ccd36b137e9e45866825072a30c" + integrity sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q== dependencies: - "@ethersproject/logger" "^5.5.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@ethersproject/networks@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.5.0.tgz#babec47cab892c51f8dd652ce7f2e3e14283981a" - integrity sha512-KWfP3xOnJeF89Uf/FCJdV1a2aDJe5XTN2N52p4fcQ34QhDqQFkgQKZ39VGtiqUgHcLI8DfT0l9azC3KFTunqtA== +"@babel/plugin-transform-optional-chaining@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz#874ce3c4f06b7780592e946026eb76a32830454f" + integrity sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg== dependencies: - "@ethersproject/logger" "^5.5.0" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@ethersproject/pbkdf2@5.5.0", "@ethersproject/pbkdf2@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.5.0.tgz#e25032cdf02f31505d47afbf9c3e000d95c4a050" - integrity sha512-SaDvQFvXPnz1QGpzr6/HToLifftSXGoXrbpZ6BvoZhmx4bNLHrxDe8MZisuecyOziP1aVEwzC2Hasj+86TgWVg== +"@babel/plugin-transform-parameters@^7.27.7": + version "7.27.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz#1fd2febb7c74e7d21cf3b05f7aebc907940af53a" + integrity sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg== dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@ethersproject/properties@5.5.0", "@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.5.0.tgz#61f00f2bb83376d2071baab02245f92070c59995" - integrity sha512-l3zRQg3JkD8EL3CPjNK5g7kMx4qSwiR60/uk5IVjd3oq1MZR5qUg40CNOoEJoX5wc3DyY5bt9EbMk86C7x0DNA== - dependencies: - "@ethersproject/logger" "^5.5.0" - -"@ethersproject/providers@5.5.3": - version "5.5.3" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.5.3.tgz#56c2b070542ac44eb5de2ed3cf6784acd60a3130" - integrity sha512-ZHXxXXXWHuwCQKrgdpIkbzMNJMvs+9YWemanwp1fA7XZEv7QlilseysPvQe0D7Q7DlkJX/w/bGA1MdgK2TbGvA== - dependencies: - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/basex" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/networks" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/random" "^5.5.0" - "@ethersproject/rlp" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/web" "^5.5.0" - bech32 "1.1.4" - ws "7.4.6" - -"@ethersproject/random@5.5.1": - version "5.5.1" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.5.1.tgz#7cdf38ea93dc0b1ed1d8e480ccdaf3535c555415" - integrity sha512-YaU2dQ7DuhL5Au7KbcQLHxcRHfgyNgvFV4sQOo0HrtW3Zkrc9ctWNz8wXQ4uCSfSDsqX2vcjhroxU5RQRV0nqA== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - -"@ethersproject/random@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.5.0.tgz#305ed9e033ca537735365ac12eed88580b0f81f9" - integrity sha512-egGYZwZ/YIFKMHcoBUo8t3a8Hb/TKYX8BCBoLjudVCZh892welR3jOxgOmb48xznc9bTcMm7Tpwc1gHC1PFNFQ== +"@babel/plugin-transform-private-methods@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz#fdacbab1c5ed81ec70dfdbb8b213d65da148b6af" + integrity sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA== dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@ethersproject/rlp@5.5.0", "@ethersproject/rlp@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.5.0.tgz#530f4f608f9ca9d4f89c24ab95db58ab56ab99a0" - integrity sha512-hLv8XaQ8PTI9g2RHoQGf/WSxBfTB/NudRacbzdxmst5VHAqd1sMibWG7SENzT5Dj3yZ3kJYx+WiRYEcQTAkcYA== +"@babel/plugin-transform-private-property-in-object@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz#4dbbef283b5b2f01a21e81e299f76e35f900fb11" + integrity sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ== dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@ethersproject/sha2@5.5.0", "@ethersproject/sha2@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.5.0.tgz#a40a054c61f98fd9eee99af2c3cc6ff57ec24db7" - integrity sha512-B5UBoglbCiHamRVPLA110J+2uqsifpZaTmid2/7W5rbtYVz6gus6/hSDieIU/6gaKIDcOj12WnOdiymEUHIAOA== +"@babel/plugin-transform-property-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz#07eafd618800591e88073a0af1b940d9a42c6424" + integrity sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ== dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - hash.js "1.1.7" + "@babel/helper-plugin-utils" "^7.27.1" -"@ethersproject/signing-key@5.5.0", "@ethersproject/signing-key@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.5.0.tgz#2aa37169ce7e01e3e80f2c14325f624c29cedbe0" - integrity sha512-5VmseH7qjtNmDdZBswavhotYbWB0bOwKIlOTSlX14rKn5c11QmJwGt4GHeo7NrL/Ycl7uo9AHvEqs5xZgFBTng== +"@babel/plugin-transform-regenerator@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.0.tgz#f19ca3558f7121924fc4ba6cd2afe3a5cdac89b1" + integrity sha512-LOAozRVbqxEVjSKfhGnuLoE4Kz4Oc5UJzuvFUhSsQzdCdaAQu06mG8zDv2GFSerM62nImUZ7K92vxnQcLSDlCQ== dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - bn.js "^4.11.9" - elliptic "6.5.4" - hash.js "1.1.7" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-regexp-modifiers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz#df9ba5577c974e3f1449888b70b76169998a6d09" + integrity sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-reserved-words@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz#40fba4878ccbd1c56605a4479a3a891ac0274bb4" + integrity sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-shorthand-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz#532abdacdec87bfee1e0ef8e2fcdee543fe32b90" + integrity sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-spread@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz#1a264d5fc12750918f50e3fe3e24e437178abb08" + integrity sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + +"@babel/plugin-transform-sticky-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz#18984935d9d2296843a491d78a014939f7dcd280" + integrity sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-template-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz#1a0eb35d8bb3e6efc06c9fd40eb0bcef548328b8" + integrity sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-typeof-symbol@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz#70e966bb492e03509cf37eafa6dcc3051f844369" + integrity sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-unicode-escapes@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz#3e3143f8438aef842de28816ece58780190cf806" + integrity sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-unicode-property-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz#bdfe2d3170c78c5691a3c3be934c8c0087525956" + integrity sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-unicode-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz#25948f5c395db15f609028e370667ed8bae9af97" + integrity sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-unicode-sets-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz#6ab706d10f801b5c72da8bb2548561fa04193cd1" + integrity sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/preset-env@7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.28.0.tgz#d23a6bc17b43227d11db77081a0779c706b5569c" + integrity sha512-VmaxeGOwuDqzLl5JUkIRM1X2Qu2uKGxHEQWh+cvvbl7JuJRgKGJSfsEF/bUaxFhJl/XAyxBe7q7qSuTbKFuCyg== + dependencies: + "@babel/compat-data" "^7.28.0" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-option" "^7.27.1" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.27.1" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.27.1" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.27.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.27.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.27.1" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-import-assertions" "^7.27.1" + "@babel/plugin-syntax-import-attributes" "^7.27.1" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.27.1" + "@babel/plugin-transform-async-generator-functions" "^7.28.0" + "@babel/plugin-transform-async-to-generator" "^7.27.1" + "@babel/plugin-transform-block-scoped-functions" "^7.27.1" + "@babel/plugin-transform-block-scoping" "^7.28.0" + "@babel/plugin-transform-class-properties" "^7.27.1" + "@babel/plugin-transform-class-static-block" "^7.27.1" + "@babel/plugin-transform-classes" "^7.28.0" + "@babel/plugin-transform-computed-properties" "^7.27.1" + "@babel/plugin-transform-destructuring" "^7.28.0" + "@babel/plugin-transform-dotall-regex" "^7.27.1" + "@babel/plugin-transform-duplicate-keys" "^7.27.1" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.27.1" + "@babel/plugin-transform-dynamic-import" "^7.27.1" + "@babel/plugin-transform-explicit-resource-management" "^7.28.0" + "@babel/plugin-transform-exponentiation-operator" "^7.27.1" + "@babel/plugin-transform-export-namespace-from" "^7.27.1" + "@babel/plugin-transform-for-of" "^7.27.1" + "@babel/plugin-transform-function-name" "^7.27.1" + "@babel/plugin-transform-json-strings" "^7.27.1" + "@babel/plugin-transform-literals" "^7.27.1" + "@babel/plugin-transform-logical-assignment-operators" "^7.27.1" + "@babel/plugin-transform-member-expression-literals" "^7.27.1" + "@babel/plugin-transform-modules-amd" "^7.27.1" + "@babel/plugin-transform-modules-commonjs" "^7.27.1" + "@babel/plugin-transform-modules-systemjs" "^7.27.1" + "@babel/plugin-transform-modules-umd" "^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.27.1" + "@babel/plugin-transform-new-target" "^7.27.1" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.27.1" + "@babel/plugin-transform-numeric-separator" "^7.27.1" + "@babel/plugin-transform-object-rest-spread" "^7.28.0" + "@babel/plugin-transform-object-super" "^7.27.1" + "@babel/plugin-transform-optional-catch-binding" "^7.27.1" + "@babel/plugin-transform-optional-chaining" "^7.27.1" + "@babel/plugin-transform-parameters" "^7.27.7" + "@babel/plugin-transform-private-methods" "^7.27.1" + "@babel/plugin-transform-private-property-in-object" "^7.27.1" + "@babel/plugin-transform-property-literals" "^7.27.1" + "@babel/plugin-transform-regenerator" "^7.28.0" + "@babel/plugin-transform-regexp-modifiers" "^7.27.1" + "@babel/plugin-transform-reserved-words" "^7.27.1" + "@babel/plugin-transform-shorthand-properties" "^7.27.1" + "@babel/plugin-transform-spread" "^7.27.1" + "@babel/plugin-transform-sticky-regex" "^7.27.1" + "@babel/plugin-transform-template-literals" "^7.27.1" + "@babel/plugin-transform-typeof-symbol" "^7.27.1" + "@babel/plugin-transform-unicode-escapes" "^7.27.1" + "@babel/plugin-transform-unicode-property-regex" "^7.27.1" + "@babel/plugin-transform-unicode-regex" "^7.27.1" + "@babel/plugin-transform-unicode-sets-regex" "^7.27.1" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.14" + babel-plugin-polyfill-corejs3 "^0.13.0" + babel-plugin-polyfill-regenerator "^0.6.5" + core-js-compat "^3.43.0" + semver "^6.3.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" -"@ethersproject/solidity@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.5.0.tgz#2662eb3e5da471b85a20531e420054278362f93f" - integrity sha512-9NgZs9LhGMj6aCtHXhtmFQ4AN4sth5HuFXVvAQtzmm0jpSCNOTGtrHZJAeYTh7MBjRR8brylWZxBZR9zDStXbw== +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/template@^7.22.5", "@babel/template@^7.3.3": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" + integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== + dependencies: + "@babel/code-frame" "^7.22.5" + "@babel/parser" "^7.22.5" + "@babel/types" "^7.22.5" + +"@babel/template@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.1.tgz#b9e4f55c17a92312774dfbdde1b3c01c547bbae2" + integrity sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/parser" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/template@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" + integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/parser" "^7.27.2" + "@babel/types" "^7.27.1" + +"@babel/traverse@^7.22.6", "@babel/traverse@^7.22.8": + version "7.22.8" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.8.tgz#4d4451d31bc34efeae01eac222b514a77aa4000e" + integrity sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw== + dependencies: + "@babel/code-frame" "^7.22.5" + "@babel/generator" "^7.22.7" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.22.7" + "@babel/types" "^7.22.5" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.1.tgz#4db772902b133bbddd1c4f7a7ee47761c1b9f291" + integrity sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.27.1" + "@babel/parser" "^7.27.1" + "@babel/template" "^7.27.1" + "@babel/types" "^7.27.1" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/traverse@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.0.tgz#518aa113359b062042379e333db18380b537e34b" + integrity sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.28.0" + "@babel/helper-globals" "^7.28.0" + "@babel/parser" "^7.28.0" + "@babel/template" "^7.27.2" + "@babel/types" "^7.28.0" + debug "^4.3.1" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" + integrity sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.5" + to-fast-properties "^2.0.0" + +"@babel/types@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.1.tgz#9defc53c16fc899e46941fc6901a9eea1c9d8560" + integrity sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q== dependencies: - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" - "@ethersproject/strings" "^5.5.0" + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" -"@ethersproject/strings@5.5.0", "@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.5.0.tgz#e6784d00ec6c57710755699003bc747e98c5d549" - integrity sha512-9fy3TtF5LrX/wTrBaT8FGE6TDJyVjOvXynXJz5MT5azq+E6D92zuKNx7i29sWW2FjVOaWjAsiZ1ZWznuduTIIQ== +"@babel/types@^7.27.3", "@babel/types@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.0.tgz#2fd0159a6dc7353933920c43136335a9b264d950" + integrity sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg== dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/logger" "^5.5.0" + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" -"@ethersproject/transactions@5.5.0", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.5.0.tgz#7e9bf72e97bcdf69db34fe0d59e2f4203c7a2908" - integrity sha512-9RZYSKX26KfzEd/1eqvv8pLauCKzDTub0Ko4LfIgaERvRuwyaNV78mJs7cpIgZaDl6RJui4o49lHwwCM0526zA== - dependencies: - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/rlp" "^5.5.0" - "@ethersproject/signing-key" "^5.5.0" - -"@ethersproject/units@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.5.0.tgz#104d02db5b5dc42cc672cc4587bafb87a95ee45e" - integrity sha512-7+DpjiZk4v6wrikj+TCyWWa9dXLNU73tSTa7n0TSJDxkYbV3Yf1eRh9ToMLlZtuctNYu9RDNNy2USq3AdqSbag== +"@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" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@devprotocol/util-ts@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@devprotocol/util-ts/-/util-ts-4.0.0.tgz#d96259c0e26eae0b98eedf2a2c6dbacc1301d9b0" + integrity sha512-8YgP79u2C5q4T4j0IsPN0bSGqtSYBYXt8rHzqq+Ip1T/AeDJX9h/1zaHn63GOcwzTyUwHIKbYxO4hAWkO1fILw== dependencies: - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/logger" "^5.5.0" + ramda "^0.29.0" -"@ethersproject/wallet@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.5.0.tgz#322a10527a440ece593980dca6182f17d54eae75" - integrity sha512-Mlu13hIctSYaZmUOo7r2PhNSd8eaMPVXe1wxrz4w4FCE4tDYBywDH+bAR1Xz2ADyXGwqYMwstzTrtUVIsKDO0Q== - dependencies: - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/hdnode" "^5.5.0" - "@ethersproject/json-wallets" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/random" "^5.5.0" - "@ethersproject/signing-key" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/wordlists" "^5.5.0" - -"@ethersproject/web@5.5.1": - version "5.5.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.5.1.tgz#cfcc4a074a6936c657878ac58917a61341681316" - integrity sha512-olvLvc1CB12sREc1ROPSHTdFCdvMh0J5GSJYiQg2D0hdD4QmJDy8QYDb1CvoqD/bF1c++aeKv2sR5uduuG9dQg== - dependencies: - "@ethersproject/base64" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - -"@ethersproject/web@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.5.0.tgz#0e5bb21a2b58fb4960a705bfc6522a6acf461e28" - integrity sha512-BEgY0eL5oH4mAo37TNYVrFeHsIXLRxggCRG/ksRIxI2X5uj5IsjGmcNiRN/VirQOlBxcUhCgHhaDLG4m6XAVoA== +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: - "@ethersproject/base64" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" + eslint-visitor-keys "^3.3.0" -"@ethersproject/wordlists@5.5.0", "@ethersproject/wordlists@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.5.0.tgz#aac74963aa43e643638e5172353d931b347d584f" - integrity sha512-bL0UTReWDiaQJJYOC9sh/XcRu/9i2jMrzf8VLRmPKx58ckSlOJiohODkECCO50dtLZHcGU6MLXQ4OOrgBwP77Q== +"@eslint-community/regexpp@^4.4.0": + version "4.5.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" + integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ== + +"@eslint-community/regexpp@^4.6.1": + version "4.6.2" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8" + integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" + integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== -"@humanwhocodes/config-array@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.2.tgz#68be55c737023009dfc5fe245d51181bb6476914" - integrity sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA== +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" + integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.4" + "@humanwhocodes/object-schema" "^2.0.3" + debug "^4.3.1" + minimatch "^3.0.5" -"@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" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -1707,349 +1261,509 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^27.4.6": - version "27.4.6" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.4.6.tgz#0742e6787f682b22bdad56f9db2a8a77f6a86107" - integrity sha512-jauXyacQD33n47A44KrlOVeiXHEXDqapSdfb9kTekOchH/Pd18kBIO1+xxJQRLuG+LUuljFCwTG92ra4NW7SpA== +"@jest/console@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" + integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^27.4.6" - jest-util "^27.4.2" + jest-message-util "^29.7.0" + jest-util "^29.7.0" slash "^3.0.0" -"@jest/core@^27.4.7": - version "27.4.7" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.4.7.tgz#84eabdf42a25f1fa138272ed229bcf0a1b5e6913" - integrity sha512-n181PurSJkVMS+kClIFSX/LLvw9ExSb+4IMtD6YnfxZVerw9ANYtW0bPrm0MJu2pfe9SY9FJ9FtQ+MdZkrZwjg== +"@jest/core@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== dependencies: - "@jest/console" "^27.4.6" - "@jest/reporters" "^27.4.6" - "@jest/test-result" "^27.4.6" - "@jest/transform" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/console" "^29.7.0" + "@jest/reporters" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - emittery "^0.8.1" + ci-info "^3.2.0" exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^27.4.2" - jest-config "^27.4.7" - jest-haste-map "^27.4.6" - jest-message-util "^27.4.6" - jest-regex-util "^27.4.0" - jest-resolve "^27.4.6" - jest-resolve-dependencies "^27.4.6" - jest-runner "^27.4.6" - jest-runtime "^27.4.6" - jest-snapshot "^27.4.6" - jest-util "^27.4.2" - jest-validate "^27.4.6" - jest-watcher "^27.4.6" + graceful-fs "^4.2.9" + jest-changed-files "^29.7.0" + jest-config "^29.7.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-resolve-dependencies "^29.7.0" + jest-runner "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + jest-watcher "^29.7.0" micromatch "^4.0.4" - rimraf "^3.0.0" + pretty-format "^29.7.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^27.4.6": - version "27.4.6" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.4.6.tgz#1e92885d64f48c8454df35ed9779fbcf31c56d8b" - integrity sha512-E6t+RXPfATEEGVidr84WngLNWZ8ffCPky8RqqRK6u1Bn0LK92INe0MDttyPl/JOzaq92BmDzOeuqk09TvM22Sg== +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== dependencies: - "@jest/fake-timers" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" - jest-mock "^27.4.6" + jest-mock "^29.7.0" + +"@jest/expect-utils@^29.6.1": + version "29.6.1" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.6.1.tgz#ab83b27a15cdd203fe5f68230ea22767d5c3acc5" + integrity sha512-o319vIf5pEMx0LmzSxxkYYxo4wrRLKHq9dP1yJU7FoPTB0LfAKSz8SWD6D/6U3v/O52t9cF5t+MeJiRsfk7zMw== + dependencies: + jest-get-type "^29.4.3" + +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== + dependencies: + jest-get-type "^29.6.3" + +"@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== + dependencies: + expect "^29.7.0" + jest-snapshot "^29.7.0" -"@jest/fake-timers@^27.4.6": - version "27.4.6" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.4.6.tgz#e026ae1671316dbd04a56945be2fa251204324e8" - integrity sha512-mfaethuYF8scV8ntPpiVGIHQgS0XIALbpY2jt2l7wb/bvq4Q5pDLk4EP4D7SAvYT1QrPOPVZAtbdGAOOyIgs7A== +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== dependencies: - "@jest/types" "^27.4.2" - "@sinonjs/fake-timers" "^8.0.1" + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" "@types/node" "*" - jest-message-util "^27.4.6" - jest-mock "^27.4.6" - jest-util "^27.4.2" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" -"@jest/globals@^27.4.6": - version "27.4.6" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.4.6.tgz#3f09bed64b0fd7f5f996920258bd4be8f52f060a" - integrity sha512-kAiwMGZ7UxrgPzu8Yv9uvWmXXxsy0GciNejlHvfPIfWkSxChzv6bgTS3YqBkGuHcis+ouMFI2696n2t+XYIeFw== +"@jest/globals@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== dependencies: - "@jest/environment" "^27.4.6" - "@jest/types" "^27.4.2" - expect "^27.4.6" + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" + jest-mock "^29.7.0" -"@jest/reporters@^27.4.6": - version "27.4.6" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.4.6.tgz#b53dec3a93baf9b00826abf95b932de919d6d8dd" - integrity sha512-+Zo9gV81R14+PSq4wzee4GC2mhAN9i9a7qgJWL90Gpx7fHYkWpTBvwWNZUXvJByYR9tAVBdc8VxDWqfJyIUrIQ== +"@jest/reporters@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.4.6" - "@jest/test-result" "^27.4.6" - "@jest/transform" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/console" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.4" + glob "^7.1.3" + graceful-fs "^4.2.9" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^5.1.0" + istanbul-lib-instrument "^6.0.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-haste-map "^27.4.6" - jest-resolve "^27.4.6" - jest-util "^27.4.2" - jest-worker "^27.4.6" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" 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" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@^29.6.0": + version "29.6.0" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.0.tgz#0f4cb2c8e3dca80c135507ba5635a4fd755b0040" + integrity sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" -"@jest/source-map@^27.4.0": - version "27.4.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.4.0.tgz#2f0385d0d884fb3e2554e8f71f8fa957af9a74b6" - integrity sha512-Ntjx9jzP26Bvhbm93z/AKcPRj/9wrkI88/gK60glXDx1q+IeI0rf7Lw2c89Ch6ofonB0On/iRDreQuQ6te9pgQ== +"@jest/source-map@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== dependencies: + "@jridgewell/trace-mapping" "^0.3.18" callsites "^3.0.0" - graceful-fs "^4.2.4" - source-map "^0.6.0" + graceful-fs "^4.2.9" -"@jest/test-result@^27.4.6": - version "27.4.6" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.4.6.tgz#b3df94c3d899c040f602cea296979844f61bdf69" - integrity sha512-fi9IGj3fkOrlMmhQqa/t9xum8jaJOOAi/lZlm6JXSc55rJMXKHxNDN1oCP39B0/DhNOa2OMupF9BcKZnNtXMOQ== +"@jest/test-result@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" + integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== dependencies: - "@jest/console" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/console" "^29.7.0" + "@jest/types" "^29.6.3" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^27.4.6": - version "27.4.6" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.4.6.tgz#447339b8a3d7b5436f50934df30854e442a9d904" - integrity sha512-3GL+nsf6E1PsyNsJuvPyIz+DwFuCtBdtvPpm/LMXVkBJbdFvQYCDpccYT56qq5BGniXWlE81n2qk1sdXfZebnw== +"@jest/test-sequencer@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== dependencies: - "@jest/test-result" "^27.4.6" - graceful-fs "^4.2.4" - jest-haste-map "^27.4.6" - jest-runtime "^27.4.6" + "@jest/test-result" "^29.7.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + slash "^3.0.0" -"@jest/transform@^27.4.6": - version "27.4.6" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.4.6.tgz#153621940b1ed500305eacdb31105d415dc30231" - integrity sha512-9MsufmJC8t5JTpWEQJ0OcOOAXaH5ioaIX6uHVBLBMoCZPfKKQF+EqP8kACAvCZ0Y1h2Zr3uOccg8re+Dr5jxyw== +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.4.2" + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" 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.4" - jest-haste-map "^27.4.6" - jest-regex-util "^27.4.0" - jest-util "^27.4.2" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" + write-file-atomic "^4.0.2" -"@jest/types@^27.4.2": - version "27.4.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.4.2.tgz#96536ebd34da6392c2b7c7737d693885b5dd44a5" - integrity sha512-j35yw0PMTPpZsUoOBiuHzr1zTYoad1cVIE0ajEjcrJONxxrko/IRGKkXx3os0Nsi4Hu3+5VmDbVfq5WhG/pWAg== +"@jest/types@^29.6.1": + version "29.6.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.1.tgz#ae79080278acff0a6af5eb49d063385aaa897bf2" + integrity sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw== dependencies: + "@jest/schemas" "^29.6.0" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" - "@types/yargs" "^16.0.0" + "@types/yargs" "^17.0.8" chalk "^4.0.0" -"@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" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" -"@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" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" -"@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" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== +"@jridgewell/gen-mapping@^0.3.12": + version "0.3.12" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz#2234ce26c62889f03db3d7fea43c1932ab3e927b" + integrity sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg== dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" -"@resolver-engine/core@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@resolver-engine/core/-/core-0.3.3.tgz#590f77d85d45bc7ecc4e06c654f41345db6ca967" - integrity sha512-eB8nEbKDJJBi5p5SrvrvILn4a0h42bKtbCTri3ZxCGt6UvoQyp7HnGOfki944bUjBSHKK3RvgfViHn+kqdXtnQ== +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== dependencies: - debug "^3.1.0" - is-url "^1.2.4" - request "^2.85.0" + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" -"@resolver-engine/fs@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@resolver-engine/fs/-/fs-0.3.3.tgz#fbf83fa0c4f60154a82c817d2fe3f3b0c049a973" - integrity sha512-wQ9RhPUcny02Wm0IuJwYMyAG8fXVeKdmhm8xizNByD4ryZlx6PP6kRen+t/haF43cMfmaV7T3Cx6ChOdHEhFUQ== - dependencies: - "@resolver-engine/core" "^0.3.3" - debug "^3.1.0" +"@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" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== -"@resolver-engine/imports-fs@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@resolver-engine/imports-fs/-/imports-fs-0.3.3.tgz#4085db4b8d3c03feb7a425fbfcf5325c0d1e6c1b" - integrity sha512-7Pjg/ZAZtxpeyCFlZR5zqYkz+Wdo84ugB5LApwriT8XFeQoLwGUj4tZFFvvCuxaNCcqZzCYbonJgmGObYBzyCA== - dependencies: - "@resolver-engine/fs" "^0.3.3" - "@resolver-engine/imports" "^0.3.3" - debug "^3.1.0" +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== -"@resolver-engine/imports@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@resolver-engine/imports/-/imports-0.3.3.tgz#badfb513bb3ff3c1ee9fd56073e3144245588bcc" - integrity sha512-anHpS4wN4sRMwsAbMXhMfOD/y4a4Oo0Cw/5+rue7hSwGWsDOQaAU1ClK1OxjUC35/peazxEl8JaSRRS+Xb8t3Q== +"@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" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@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" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.18" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" + integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== dependencies: - "@resolver-engine/core" "^0.3.3" - debug "^3.1.0" - hosted-git-info "^2.6.0" - path-browserify "^1.0.0" - url "^0.11.0" + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" -"@rollup/plugin-babel@5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz#9cb1c5146ddd6a4968ad96f209c50c62f92f9879" - integrity sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw== +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@rollup/pluginutils" "^3.1.0" + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" -"@rollup/plugin-multi-entry@4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-multi-entry/-/plugin-multi-entry-4.1.0.tgz#e531511d4a9f490f766dbee1f10d6d94d26b3863" - integrity sha512-nellK5pr50W0JA2+bDJbG8F79GBP802J40YRoC0wyfpTAeAn5mJ4eaFiB/MN+YoX9hgb/6RJoZl9leDjZnUFKw== +"@jridgewell/trace-mapping@^0.3.28": + version "0.3.29" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz#a58d31eaadaf92c6695680b2e1d464a9b8fbf7fc" + integrity sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ== dependencies: - "@rollup/plugin-virtual" "^2.0.3" - matched "^5.0.0" + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" -"@rollup/plugin-node-resolve@13.1.3": - version "13.1.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.3.tgz#2ed277fb3ad98745424c1d2ba152484508a92d79" - integrity sha512-BdxNk+LtmElRo5d06MGY4zoepyrXX1tkzX2hrnPEZ53k78GuOMWLqmJDGIIOPwVRIFZrLQOo+Yr6KtCuLIA0AQ== +"@noble/curves@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" + integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" - deepmerge "^4.2.2" - is-module "^1.0.0" - resolve "^1.19.0" + "@noble/hashes" "1.3.2" -"@rollup/plugin-virtual@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-virtual/-/plugin-virtual-2.0.3.tgz#0afc88d75c1e1378ab290b8e9898d4edb5be0d74" - integrity sha512-pw6ziJcyjZtntQ//bkad9qXaBx665SgEL8C8KI5wO8G5iU5MPxvdWrQyVaAvjojGm9tJoS8M9Z/EEepbqieYmw== +"@noble/hashes@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== -"@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== +"@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" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== +"@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" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.1": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" - integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: - type-detect "4.0.8" + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" -"@sinonjs/fake-timers@^6.0.0", "@sinonjs/fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" - integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== - dependencies: - "@sinonjs/commons" "^1.7.0" +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@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" - integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== +"@rollup/plugin-babel@6.0.4": + version "6.0.4" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-6.0.4.tgz#bd698e351fa9aa9619fcae780aea2a603d98e4c4" + integrity sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw== dependencies: - "@sinonjs/commons" "^1.7.0" + "@babel/helper-module-imports" "^7.18.6" + "@rollup/pluginutils" "^5.0.1" -"@sinonjs/samsam@^5.3.1": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-5.3.1.tgz#375a45fe6ed4e92fca2fb920e007c48232a6507f" - integrity sha512-1Hc0b1TtyfBu8ixF/tpfSHTVWKwCBLY4QJbkgnE7HcwyvT2xArDxb4K7dMgqRm3szI+LJbzmW/s4xxEhv6hwDg== +"@rollup/plugin-node-resolve@16.0.1": + version "16.0.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.1.tgz#2fc6b54ca3d77e12f3fb45b2a55b50720de4c95d" + integrity sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA== dependencies: - "@sinonjs/commons" "^1.6.0" - lodash.get "^4.4.2" - type-detect "^4.0.8" - -"@sinonjs/text-encoding@^0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" - integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== + "@rollup/pluginutils" "^5.0.1" + "@types/resolve" "1.20.2" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.22.1" -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== +"@rollup/pluginutils@^5.0.1": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33" + integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + +"@rollup/rollup-android-arm-eabi@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.2.tgz#292e25953d4988d3bd1af0f5ebbd5ee4d65c90b4" + integrity sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA== + +"@rollup/rollup-android-arm64@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.2.tgz#053b3def3451e6fc1a9078188f22799e868d7c59" + integrity sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ== + +"@rollup/rollup-darwin-arm64@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.2.tgz#98d90445282dec54fd05440305a5e8df79a91ece" + integrity sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ== + +"@rollup/rollup-darwin-x64@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.2.tgz#fe05f95a736423af5f9c3a59a70f41ece52a1f20" + integrity sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA== + +"@rollup/rollup-freebsd-arm64@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.2.tgz#41e1fbdc1f8c3dc9afb6bc1d6e3fb3104bd81eee" + integrity sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg== + +"@rollup/rollup-freebsd-x64@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.2.tgz#69131e69cb149d547abb65ef3b38fc746c940e24" + integrity sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw== + +"@rollup/rollup-linux-arm-gnueabihf@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.2.tgz#977ded91c7cf6fc0d9443bb9c0a064e45a805267" + integrity sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA== + +"@rollup/rollup-linux-arm-musleabihf@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.2.tgz#dc034fc3c0f0eb5c75b6bc3eca3b0b97fd35f49a" + integrity sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ== + +"@rollup/rollup-linux-arm64-gnu@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.2.tgz#5e92613768d3de3ffcabc965627dd0a59b3e7dfc" + integrity sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng== + +"@rollup/rollup-linux-arm64-musl@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.2.tgz#2a44f88e83d28b646591df6e50aa0a5a931833d8" + integrity sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg== + +"@rollup/rollup-linux-loongarch64-gnu@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.2.tgz#bd5897e92db7fbf7dc456f61d90fff96c4651f2e" + integrity sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA== + +"@rollup/rollup-linux-ppc64-gnu@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.2.tgz#a7065025411c14ad9ec34cc1cd1414900ec2a303" + integrity sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw== + +"@rollup/rollup-linux-riscv64-gnu@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.2.tgz#17f9c0c675e13ef4567cfaa3730752417257ccc3" + integrity sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ== + +"@rollup/rollup-linux-riscv64-musl@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.2.tgz#bc6ed3db2cedc1ba9c0a2183620fe2f792c3bf3f" + integrity sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw== + +"@rollup/rollup-linux-s390x-gnu@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.2.tgz#440c4f6753274e2928e06d2a25613e5a1cf97b41" + integrity sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA== + +"@rollup/rollup-linux-x64-gnu@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.2.tgz#1e936446f90b2574ea4a83b4842a762cc0a0aed3" + integrity sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA== + +"@rollup/rollup-linux-x64-musl@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.2.tgz#c6f304dfba1d5faf2be5d8b153ccbd8b5d6f1166" + integrity sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA== + +"@rollup/rollup-win32-arm64-msvc@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.2.tgz#b4ad4a79219892aac112ed1c9d1356cad0566ef5" + integrity sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g== + +"@rollup/rollup-win32-ia32-msvc@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.2.tgz#b1b22eb2a9568048961e4a6f540438b4a762aa62" + integrity sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ== + +"@rollup/rollup-win32-x64-msvc@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.2.tgz#87079f137b5fdb75da11508419aa998cc8cc3d8b" + integrity sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg== + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sinonjs/commons@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" + integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== dependencies: - defer-to-connect "^1.0.1" - -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + type-detect "4.0.8" -"@typechain/ethers-v5@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-2.0.0.tgz#cd3ca1590240d587ca301f4c029b67bfccd08810" - integrity sha512-0xdCkyGOzdqh4h5JSf+zoWx85IusEjDcPIwNEHP8mrWSnCae4rvrqB+/gtpdNfX7zjlFlZiMeePn2r63EI3Lrw== +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== dependencies: - ethers "^5.0.2" + "@sinonjs/commons" "^3.0.0" -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.1.16" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.16.tgz#bc12c74b7d65e82d29876b5d0baf5c625ac58702" - integrity sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ== +"@types/babel__core@^7.1.14": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.1.tgz#916ecea274b0c776fec721e333e55762d3a9614b" + integrity sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw== dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" "@types/babel__generator" "*" "@types/babel__template" "*" "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.3.tgz#f456b4b2ce79137f768aa130d2423d2f0ccfaba5" - integrity sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA== + version "7.6.4" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== dependencies: "@babel/types" "^7.0.0" @@ -2061,50 +1775,34 @@ "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" - integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== - dependencies: - "@babel/types" "^7.3.0" - -"@types/bent@^7.3.1": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@types/bent/-/bent-7.3.2.tgz#07b4f7bcec577be27cdb9e9034eb0de0242481a7" - integrity sha512-wtE/+NIk55jVUHJFt//kxmq8cQ7ef4J2U9HO7lZqKW4lvvPYTd7KfAEKZLsFmDgmzzMvfd4cPSdv3blqVWmqSQ== - dependencies: - "@types/node" "*" - -"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5": - version "4.11.6" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" - integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.1.tgz#dd6f1d2411ae677dcb2db008c962598be31d6acf" + integrity sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg== dependencies: - "@types/node" "*" + "@babel/types" "^7.20.7" -"@types/bn.js@^5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" - integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== - dependencies: - "@types/node" "*" +"@types/estree@1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== +"@types/estree@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" + integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@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" - integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== +"@types/graceful-fs@^4.1.3": + version "4.1.6" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" + integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" - integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== "@types/istanbul-lib-report@*": version "3.0.0" @@ -2120,88 +1818,47 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@27.4.0": - version "27.4.0" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.0.tgz#037ab8b872067cae842a320841693080f9cb84ed" - integrity sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ== +"@types/jest@29.5.14": + version "29.5.14" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.14.tgz#2b910912fa1d6856cadcd0c1f95af7df1d6049e5" + integrity sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ== dependencies: - jest-diff "^27.0.0" - pretty-format "^27.0.0" + expect "^29.0.0" + pretty-format "^29.0.0" "@types/json-schema@^7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== - -"@types/mkdirp@^0.5.2": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.5.2.tgz#503aacfe5cc2703d5484326b1b27efa67a339c1f" - integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== - dependencies: - "@types/node" "*" - -"@types/node-fetch@^2.5.5": - version "2.5.12" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" - integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== - dependencies: - "@types/node" "*" - form-data "^3.0.0" + version "7.0.12" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" + integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== "@types/node@*": - version "16.11.11" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.11.tgz#6ea7342dfb379ea1210835bada87b3c512120234" - integrity sha512-KB0sixD67CeecHC33MYn+eYARkqTheIRNuu97y2XMjR7Wu3XibO1vaY6VBV6O/a89SPI81cEUIYT87UqUWlZNw== - -"@types/node@^12.12.6": - version "12.20.41" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.41.tgz#81d7734c5257da9f04354bd9084a6ebbdd5198a5" - integrity sha512-f6xOqucbDirG7LOzedpvzjP3UTmHttRou3Mosx3vL9wr9AIQGhcPgVnqa8ihpZYnxyM1rxeNCvTyukPKZtq10Q== - -"@types/pbkdf2@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" - integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== - dependencies: - "@types/node" "*" - -"@types/prettier@^2.1.1": - version "2.4.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.3.tgz#a3c65525b91fca7da00ab1a3ac2b5a2a4afbffbf" - integrity sha512-QzSuZMBuG5u8HqYz01qtMdg/Jfctlnvj1z/lYnIDXs/golxw0fxtRAHd9KrzjR7Yxz1qVeI00o0kiO3PmVdJ9w== - -"@types/prettier@^2.1.5": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.2.tgz#4c62fae93eb479660c3bd93f9d24d561597a8281" - integrity sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA== + version "20.4.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.2.tgz#129cc9ae69f93824f92fac653eebfb4812ab4af9" + integrity sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw== -"@types/ramda@0.27.64": - version "0.27.64" - resolved "https://registry.yarnpkg.com/@types/ramda/-/ramda-0.27.64.tgz#7e23f2bf7b9729bcbd59223f100460ead6829008" - integrity sha512-EDf++ss/JoMiDpvT1MuA8oi88OwpvmqVE+o8Ojm5v/5bdJEPZ6eIQd/XYAeQ0imlwG6Tf0Npfq4Z9w3hAKBk9Q== +"@types/node@22.7.5": + version "22.7.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.5.tgz#cfde981727a7ab3611a481510b473ae54442b92b" + integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ== dependencies: - ts-toolbelt "^6.15.1" + undici-types "~6.19.2" -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== +"@types/ramda@0.31.0": + version "0.31.0" + resolved "https://registry.yarnpkg.com/@types/ramda/-/ramda-0.31.0.tgz#a32da24257804d53194875361e0d74b8666c8cb0" + integrity sha512-1lWWZ/2YiNttGcIUxQwnvMuh55GIEbn/zlpzzEojAsbxquI/TXQZCRaXsfxG1CHjlqGoqxWePkvaM/5qYHNuvQ== dependencies: - "@types/node" "*" + types-ramda "^0.31.0" -"@types/resolve@^0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== - dependencies: - "@types/node" "*" +"@types/resolve@1.20.2": + version "1.20.2" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" + integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== -"@types/secp256k1@^4.0.1": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" - integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== - dependencies: - "@types/node" "*" +"@types/semver@^7.3.12": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" + integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== "@types/stack-utils@^2.0.0": version "2.0.1" @@ -2209,294 +1866,167 @@ integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== "@types/yargs-parser@*": - version "20.2.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" - integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + 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" - integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== +"@types/yargs@^17.0.8": + version "17.0.24" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" + integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@5.10.2": - version "5.10.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.10.2.tgz#f8c1d59fc37bd6d9d11c97267fdfe722c4777152" - integrity sha512-4W/9lLuE+v27O/oe7hXJKjNtBLnZE8tQAFpapdxwSVHqtmIoPB1gph3+ahNwVuNL37BX7YQHyGF9Xv6XCnIX2Q== - dependencies: - "@typescript-eslint/scope-manager" "5.10.2" - "@typescript-eslint/type-utils" "5.10.2" - "@typescript-eslint/utils" "5.10.2" - debug "^4.3.2" - functional-red-black-tree "^1.0.1" - ignore "^5.1.8" - regexpp "^3.2.0" - semver "^7.3.5" +"@typescript-eslint/eslint-plugin@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" + integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/experimental-utils@^5.0.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.5.0.tgz#3fe2514dc2f3cd95562206e4058435ea51df609e" - integrity sha512-kjWeeVU+4lQ1SLYErRKV5yDXbWDPkpbzTUUlfAUifPYvpX0qZlrcCZ96/6oWxt3QxtK5WVhXz+KsnwW9cIW+3A== - dependencies: - "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.5.0" - "@typescript-eslint/types" "5.5.0" - "@typescript-eslint/typescript-estree" "5.5.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/parser@5.10.2": - version "5.10.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.10.2.tgz#b6076d27cc5499ce3f2c625f5ccde946ecb7db9a" - integrity sha512-JaNYGkaQVhP6HNF+lkdOr2cAs2wdSZBoalE22uYWq8IEv/OVH0RksSGydk+sW8cLoSeYmC+OHvRyv2i4AQ7Czg== - dependencies: - "@typescript-eslint/scope-manager" "5.10.2" - "@typescript-eslint/types" "5.10.2" - "@typescript-eslint/typescript-estree" "5.10.2" - debug "^4.3.2" - -"@typescript-eslint/scope-manager@5.10.0": - version "5.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.10.0.tgz#bb5d872e8b9e36203908595507fbc4d3105329cb" - integrity sha512-tgNgUgb4MhqK6DoKn3RBhyZ9aJga7EQrw+2/OiDk5hKf3pTVZWyqBi7ukP+Z0iEEDMF5FDa64LqODzlfE4O/Dg== +"@typescript-eslint/parser@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== dependencies: - "@typescript-eslint/types" "5.10.0" - "@typescript-eslint/visitor-keys" "5.10.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + debug "^4.3.4" -"@typescript-eslint/scope-manager@5.10.2": - version "5.10.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.10.2.tgz#92c0bc935ec00f3d8638cdffb3d0e70c9b879639" - integrity sha512-39Tm6f4RoZoVUWBYr3ekS75TYgpr5Y+X0xLZxXqcZNDWZdJdYbKd3q2IR4V9y5NxxiPu/jxJ8XP7EgHiEQtFnw== +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== dependencies: - "@typescript-eslint/types" "5.10.2" - "@typescript-eslint/visitor-keys" "5.10.2" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.5.0.tgz#2b9f3672fa6cddcb4160e7e8b49ef1fd00f83c09" - integrity sha512-0/r656RmRLo7CbN4Mdd+xZyPJ/fPCKhYdU6mnZx+8msAD8nJSP8EyCFkzbd6vNVZzZvWlMYrSNekqGrCBqFQhg== +"@typescript-eslint/scope-manager@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.0.0.tgz#d14df46c9e43c53af7699dfa800cd615d7dfc118" + integrity sha512-V0aa9Csx/ZWWv2IPgTfY7T4agYwJyILESu/PVqFtTFz9RIS823mAze+NbnBI8xiwdX3iqeQbcTYlvB04G9wyQw== dependencies: - "@typescript-eslint/types" "5.5.0" - "@typescript-eslint/visitor-keys" "5.5.0" + "@typescript-eslint/types" "8.0.0" + "@typescript-eslint/visitor-keys" "8.0.0" -"@typescript-eslint/type-utils@5.10.2": - version "5.10.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.10.2.tgz#ad5acdf98a7d2ab030bea81f17da457519101ceb" - integrity sha512-uRKSvw/Ccs5FYEoXW04Z5VfzF2iiZcx8Fu7DGIB7RHozuP0VbKNzP1KfZkHBTM75pCpsWxIthEH1B33dmGBKHw== +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" + integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== dependencies: - "@typescript-eslint/utils" "5.10.2" - debug "^4.3.2" + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.10.0": - version "5.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.10.0.tgz#beb3cb345076f5b088afe996d57bcd1dfddaa75c" - integrity sha512-wUljCgkqHsMZbw60IbOqT/puLfyqqD5PquGiBo1u1IS3PLxdi3RDGlyf032IJyh+eQoGhz9kzhtZa+VC4eWTlQ== - -"@typescript-eslint/types@5.10.2": - version "5.10.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.10.2.tgz#604d15d795c4601fffba6ecb4587ff9fdec68ce8" - integrity sha512-Qfp0qk/5j2Rz3p3/WhWgu4S1JtMcPgFLnmAKAW061uXxKSa7VWKZsDXVaMXh2N60CX9h6YLaBoy9PJAfCOjk3w== - -"@typescript-eslint/types@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.5.0.tgz#fee61ae510e84ed950a53937a2b443e078107003" - integrity sha512-OaYTqkW3GnuHxqsxxJ6KypIKd5Uw7bFiQJZRyNi1jbMJnK3Hc/DR4KwB6KJj6PBRkJJoaNwzMNv9vtTk87JhOg== - -"@typescript-eslint/typescript-estree@5.10.0": - version "5.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.0.tgz#4be24a3dea0f930bb1397c46187d0efdd955a224" - integrity sha512-x+7e5IqfwLwsxTdliHRtlIYkgdtYXzE0CkFeV6ytAqq431ZyxCFzNMNR5sr3WOlIG/ihVZr9K/y71VHTF/DUQA== - dependencies: - "@typescript-eslint/types" "5.10.0" - "@typescript-eslint/visitor-keys" "5.10.0" - debug "^4.3.2" - globby "^11.0.4" - is-glob "^4.0.3" - semver "^7.3.5" - tsutils "^3.21.0" +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/typescript-estree@5.10.2": - version "5.10.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.2.tgz#810906056cd3ddcb35aa333fdbbef3713b0fe4a7" - integrity sha512-WHHw6a9vvZls6JkTgGljwCsMkv8wu8XU8WaYKeYhxhWXH/atZeiMW6uDFPLZOvzNOGmuSMvHtZKd6AuC8PrwKQ== - dependencies: - "@typescript-eslint/types" "5.10.2" - "@typescript-eslint/visitor-keys" "5.10.2" - debug "^4.3.2" - globby "^11.0.4" +"@typescript-eslint/types@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.0.0.tgz#7195ea9369fe5ee46b958d7ffca6bd26511cce18" + integrity sha512-wgdSGs9BTMWQ7ooeHtu5quddKKs5Z5dS+fHLbrQI+ID0XWJLODGMHRfhwImiHoeO2S5Wir2yXuadJN6/l4JRxw== + +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + debug "^4.3.4" + globby "^11.1.0" is-glob "^4.0.3" - semver "^7.3.5" + semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.5.0.tgz#12f422698c1636bd0206086bbec9844c54625ebc" - integrity sha512-pVn8btYUiYrjonhMAO0yG8lm7RApzy2L4RC7Td/mC/qFkyf6vRbGyZozoA94+w6D2Y2GRqpMoCWcwx/EUOzyoQ== +"@typescript-eslint/typescript-estree@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.0.tgz#d172385ced7cb851a038b5c834c245a97a0f9cf6" + integrity sha512-5b97WpKMX+Y43YKi4zVcCVLtK5F98dFls3Oxui8LbnmRsseKenbbDinmvxrWegKDMmlkIq/XHuyy0UGLtpCDKg== dependencies: - "@typescript-eslint/types" "5.5.0" - "@typescript-eslint/visitor-keys" "5.5.0" - debug "^4.3.2" - globby "^11.0.4" + "@typescript-eslint/types" "8.0.0" + "@typescript-eslint/visitor-keys" "8.0.0" + debug "^4.3.4" + globby "^11.1.0" is-glob "^4.0.3" - semver "^7.3.5" - tsutils "^3.21.0" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^1.3.0" -"@typescript-eslint/utils@5.10.2": - version "5.10.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.10.2.tgz#1fcd37547c32c648ab11aea7173ec30060ee87a8" - integrity sha512-vuJaBeig1NnBRkf7q9tgMLREiYD7zsMrsN1DA3wcoMDvr3BTFiIpKjGiYZoKPllfEwN7spUjv7ZqD+JhbVjEPg== +"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.10.2": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== dependencies: + "@eslint-community/eslint-utils" "^4.2.0" "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.10.2" - "@typescript-eslint/types" "5.10.2" - "@typescript-eslint/typescript-estree" "5.10.2" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/utils@^5.10.0": - version "5.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.10.0.tgz#c3d152a85da77c400e37281355561c72fb1b5a65" - integrity sha512-IGYwlt1CVcFoE2ueW4/ioEwybR60RAdGeiJX/iDAw0t5w0wK3S7QncDwpmsM70nKgGTuVchEWB8lwZwHqPAWRg== - dependencies: - "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.10.0" - "@typescript-eslint/types" "5.10.0" - "@typescript-eslint/typescript-estree" "5.10.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/visitor-keys@5.10.0": - version "5.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.0.tgz#770215497ad67cd15a572b52089991d5dfe06281" - integrity sha512-GMxj0K1uyrFLPKASLmZzCuSddmjZVbVj3Ouy5QVuIGKZopxvOr24JsS7gruz6C3GExE01mublZ3mIBOaon9zuQ== - dependencies: - "@typescript-eslint/types" "5.10.0" - eslint-visitor-keys "^3.0.0" - -"@typescript-eslint/visitor-keys@5.10.2": - version "5.10.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.2.tgz#fdbf272d8e61c045d865bd6c8b41bea73d222f3d" - integrity sha512-zHIhYGGGrFJvvyfwHk5M08C5B5K4bewkm+rrvNTKk1/S15YHR+SA/QUF8ZWscXSfEaB8Nn2puZj+iHcoxVOD/Q== - dependencies: - "@typescript-eslint/types" "5.10.2" - eslint-visitor-keys "^3.0.0" + semver "^7.3.7" -"@typescript-eslint/visitor-keys@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.5.0.tgz#4787586897b61f26068a3db5c50b3f5d254f9083" - integrity sha512-4GzJ1kRtsWzHhdM40tv0ZKHNSbkDhF0Woi/TDwVJX6UICwJItvP7ZTXbjTkCdrors7ww0sYe0t+cIKDAJwZ7Kw== - dependencies: - "@typescript-eslint/types" "5.5.0" - eslint-visitor-keys "^3.0.0" - -"@yarnpkg/lockfile@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" - integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== - -abab@^2.0.3, abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== - -abstract-leveldown@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-3.0.0.tgz#5cb89f958a44f526779d740d1440e743e0c30a57" - integrity sha512-KUWx9UWGQD12zsmLNj64/pndaz4iJh/Pj7nopgkfDG6RlCcbMZvT6+9l7dchK4idog2Is8VdC/PvNbFuFmalIQ== - dependencies: - xtend "~4.0.0" - -abstract-leveldown@^2.4.1, abstract-leveldown@~2.7.1: - version "2.7.2" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz#87a44d7ebebc341d59665204834c8b7e0932cc93" - integrity sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w== - dependencies: - xtend "~4.0.0" - -abstract-leveldown@^5.0.0, abstract-leveldown@~5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz#f7128e1f86ccabf7d2893077ce5d06d798e386c6" - integrity sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A== +"@typescript-eslint/utils@^6.0.0 || ^7.0.0 || ^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.0.0.tgz#1794d6f4b37ec253172a173dc938ae68651b9b99" + integrity sha512-k/oS/A/3QeGLRvOWCg6/9rATJL5rec7/5s1YmdS0ZU6LHveJyGFwBvLhSRBv6i9xaj7etmosp+l+ViN1I9Aj/Q== dependencies: - xtend "~4.0.0" + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "8.0.0" + "@typescript-eslint/types" "8.0.0" + "@typescript-eslint/typescript-estree" "8.0.0" -abstract-leveldown@~2.6.0: - version "2.6.3" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz#1c5e8c6a5ef965ae8c35dfb3a8770c476b82c4b8" - integrity sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA== +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== dependencies: - xtend "~4.0.0" + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" -accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== +"@typescript-eslint/visitor-keys@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.0.tgz#224a67230190d267e6e78586bd7d8dfbd32ae4f3" + integrity sha512-oN0K4nkHuOyF3PVMyETbpP5zp6wfyOvm7tWhTMfoqxSSsPmJIh6JNASuZDlODE8eE+0EB9uar+6+vxr9DBTYOA== dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" + "@typescript-eslint/types" "8.0.0" + eslint-visitor-keys "^3.4.3" -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -acorn-jsx@^5.3.1: +acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^7.1.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.2.4, acorn@^8.6.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.6.0.tgz#e3692ba0eb1a0c83eaa4f37f5fa7368dd7142895" - integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw== - -acorn@^8.7.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== - -aes-js@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" - integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= - -aes-js@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" - integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" +acorn@^8.9.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" +aes-js@4.0.0-beta.5: + version "4.0.0-beta.5" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" + integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== -ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: +ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2506,17 +2036,19 @@ ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: +ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: type-fest "^0.21.3" -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= +ansi-escapes@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-7.0.0.tgz#00fc19f491bbb18e1d481b97868204f92109bfe7" + integrity sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw== + dependencies: + environment "^1.0.0" ansi-regex@^5.0.1: version "5.0.1" @@ -2528,11 +2060,6 @@ ansi-regex@^6.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -2552,15 +2079,15 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -ansi-styles@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3" - integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ== +ansi-styles@^6.0.0, ansi-styles@^6.1.0, ansi-styles@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== anymatch@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" @@ -2577,341 +2104,24 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-back@^1.0.3, array-back@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-1.0.4.tgz#644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b" - integrity sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs= - dependencies: - typical "^2.6.0" - -array-back@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-2.0.0.tgz#6877471d51ecc9c9bfa6136fb6c7d5fe69748022" - integrity sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw== - dependencies: - typical "^2.6.1" - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async-eventemitter@^0.2.2: - version "0.2.4" - resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" - integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== - dependencies: - async "^2.4.0" - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async-ray@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/async-ray/-/async-ray-3.2.0.tgz#331e1b3549a80b456304b37a3d43939c6170164d" - integrity sha512-w1t9m2Wp0A+yQ5xaBxbOMVuZAxdZEntQAiOoV3JaDsLlme+oqdKmi5k0z0lJPoEy7zmD7mfqKgBw7kzaKc+ZRQ== - -async@2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" - integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== - dependencies: - lodash "^4.17.11" - -async@^1.4.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= - -async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0, async@^2.6.1: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -axios@0.21.1: - version "0.21.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" - integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== - dependencies: - follow-redirects "^1.10.0" - -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= +babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-core@^6.0.14, babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-jest@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.4.6.tgz#4d024e69e241cdf4f396e453a07100f44f7ce314" - integrity sha512-qZL0JT0HS1L+lOuH+xC2DVASR3nunZi/ozGhpgauJHgmI7f8rudxf6hUjEHympdQ/J64CdKmPkgfJ+A3U6QCrg== - dependencies: - "@jest/transform" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/transform" "^29.7.0" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^27.4.0" + babel-preset-jest "^29.6.3" chalk "^4.0.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" slash "^3.0.0" -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= - dependencies: - babel-runtime "^6.22.0" - -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" - 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" @@ -2923,277 +2133,39 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^27.4.0: - version "27.4.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.4.0.tgz#d7831fc0f93573788d80dee7e682482da4c730d6" - integrity sha512-Jcu7qS4OX5kTWBc45Hz7BMmgXuJqRnhatqpUhnzGC3OBYpOmf2tv6jFNwZpwM7wU7MUuv2r9IPS/ZlYOuburVw== +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" + "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" -babel-plugin-polyfill-corejs2@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz#407082d0d355ba565af24126fb6cb8e9115251fd" - integrity sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA== +babel-plugin-polyfill-corejs2@^0.4.14: + version "0.4.14" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz#8101b82b769c568835611542488d463395c2ef8f" + integrity sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg== dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.3.0" - semver "^6.1.1" + "@babel/compat-data" "^7.27.7" + "@babel/helper-define-polyfill-provider" "^0.6.5" + semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.0.tgz#f81371be3fe499d39e074e272a1ef86533f3d268" - integrity sha512-Hcrgnmkf+4JTj73GbK3bBhlVPiLL47owUAnoJIf69Hakl3q+KfodbDXiZWGMM7iqCZTxCG3Z2VRfPNYES4rXqQ== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.0" - core-js-compat "^3.20.0" - -babel-plugin-polyfill-regenerator@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz#9ebbcd7186e1a33e21c5e20cae4e7983949533be" - integrity sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.0" - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= - -babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= - -babel-plugin-transform-async-to-generator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.23.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= - dependencies: - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-plugin-transform-es2015-classes@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.26.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" - integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-es2015-modules-systemjs@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= +babel-plugin-polyfill-corejs3@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz#bb7f6aeef7addff17f7602a08a6d19a128c30164" + integrity sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A== dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-regenerator@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= + "@babel/helper-define-polyfill-provider" "^0.6.5" + core-js-compat "^3.43.0" + +babel-plugin-polyfill-regenerator@^0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz#32752e38ab6f6767b92650347bf26a31b16ae8c5" + integrity sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg== dependencies: - regenerator-transform "^0.10.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" + "@babel/helper-define-polyfill-provider" "^0.6.5" babel-preset-current-node-syntax@^1.0.0: version "1.0.1" @@ -3213,383 +2185,90 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-env@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" - integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-to-generator "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.23.0" - babel-plugin-transform-es2015-classes "^6.23.0" - babel-plugin-transform-es2015-computed-properties "^6.22.0" - babel-plugin-transform-es2015-destructuring "^6.23.0" - babel-plugin-transform-es2015-duplicate-keys "^6.22.0" - babel-plugin-transform-es2015-for-of "^6.23.0" - babel-plugin-transform-es2015-function-name "^6.22.0" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.22.0" - babel-plugin-transform-es2015-modules-commonjs "^6.23.0" - babel-plugin-transform-es2015-modules-systemjs "^6.23.0" - babel-plugin-transform-es2015-modules-umd "^6.23.0" - babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.23.0" - babel-plugin-transform-es2015-shorthand-properties "^6.22.0" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.22.0" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.23.0" - babel-plugin-transform-es2015-unicode-regex "^6.22.0" - babel-plugin-transform-exponentiation-operator "^6.22.0" - babel-plugin-transform-regenerator "^6.22.0" - browserslist "^3.2.6" - invariant "^2.2.2" - semver "^5.3.0" - -babel-preset-jest@^27.4.0: - version "27.4.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.4.0.tgz#70d0e676a282ccb200fbabd7f415db5fdf393bca" - integrity sha512-NK4jGYpnBvNxcGo7/ZpZJr51jCGT+3bwwpVIDY2oNfTxJJldRtB4VAcYdgp1loDE50ODuTu+yBjpMAswv5tlpg== - dependencies: - babel-plugin-jest-hoist "^27.4.0" - babel-preset-current-node-syntax "^1.0.0" - -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.24.1, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babelify@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/babelify/-/babelify-7.3.0.tgz#aa56aede7067fd7bd549666ee16dc285087e88e5" - integrity sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU= - dependencies: - babel-core "^6.0.14" - object-assign "^4.0.0" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - -backoff@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz#f616eda9d3e4b66b8ca7fca79f695722c5f8e26f" - integrity sha1-9hbtqdPktmuMp/ynn2lXIsX44m8= +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== dependencies: - precond "0.2" + babel-plugin-jest-hoist "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base-x@^3.0.2, base-x@^3.0.8: - version "3.0.9" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" - 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" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +bignumber.js@9.3.1: + version "9.3.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.3.1.tgz#759c5aaddf2ffdc4f154f7b493e1c8770f88c4d7" + integrity sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ== -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" + balanced-match "^1.0.0" + concat-map "0.0.1" -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: - tweetnacl "^0.14.3" - -bech32@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" - integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + balanced-match "^1.0.0" -bent@7.3.12, bent@^7.3.12: - version "7.3.12" - resolved "https://registry.yarnpkg.com/bent/-/bent-7.3.12.tgz#e0a2775d4425e7674c64b78b242af4f49da6b035" - integrity sha512-T3yrKnVGB63zRuoco/7Ybl7BwwGZR0lceoVG5XmQyMIH9s19SV5m+a8qam4if0zQuAmOQTyPTPmsQBdAorGK3w== +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: - bytesish "^0.4.1" - caseless "~0.12.0" - is-stream "^2.0.0" - -bignumber.js@9.0.2, bignumber.js@^9.0.0: - version "9.0.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" - integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== + fill-range "^7.0.1" -bip39@2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.5.0.tgz#51cbd5179460504a63ea3c000db3f787ca051235" - integrity sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA== - dependencies: - create-hash "^1.1.0" - pbkdf2 "^3.0.9" - randombytes "^2.0.1" - safe-buffer "^5.0.1" - unorm "^1.3.3" - -blakejs@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.1.tgz#bf313053978b2cd4c444a48795710be05c785702" - integrity sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg== - -bluebird@^3.5.0, bluebird@^3.5.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - 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" - integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU= - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.10.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.8.0: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - -body-parser@1.19.1, body-parser@^1.16.0: - version "1.19.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.1.tgz#1499abbaa9274af3ecc9f6f10396c995943e31d4" - integrity sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA== - dependencies: - bytes "3.1.1" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.8.1" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.9.6" - raw-body "2.4.2" - type-is "~1.6.18" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -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" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - 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" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserslist@^3.2.6: - version "3.2.8" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" - integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== - dependencies: - caniuse-lite "^1.0.30000844" - electron-to-chromium "^1.3.47" - -browserslist@^4.17.5: - version "4.18.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.18.1.tgz#60d3920f25b6860eb917c6c7b185576f4d8b017f" - integrity sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ== - dependencies: - caniuse-lite "^1.0.30001280" - electron-to-chromium "^1.3.896" - escalade "^3.1.1" - node-releases "^2.0.1" - picocolors "^1.0.0" - -browserslist@^4.19.1: - version "4.19.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" - integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== - dependencies: - caniuse-lite "^1.0.30001286" - electron-to-chromium "^1.4.17" - escalade "^3.1.1" - node-releases "^2.0.1" - picocolors "^1.0.0" - -bs-logger@0.x: +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.21.9: + version "4.21.9" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635" + integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg== + dependencies: + caniuse-lite "^1.0.30001503" + electron-to-chromium "^1.4.431" + node-releases "^2.0.12" + update-browserslist-db "^1.0.11" + +browserslist@^4.24.0: + version "4.24.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.0.tgz#a1325fe4bc80b64fda169629fc01b3d6cecd38d4" + integrity sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A== + dependencies: + caniuse-lite "^1.0.30001663" + electron-to-chromium "^1.5.28" + node-releases "^2.0.18" + update-browserslist-db "^1.1.0" + +browserslist@^4.25.0: + version "4.25.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.1.tgz#ba9e8e6f298a1d86f829c9b975e07948967bb111" + integrity sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw== + dependencies: + caniuse-lite "^1.0.30001726" + electron-to-chromium "^1.5.173" + node-releases "^2.0.19" + update-browserslist-db "^1.1.3" + +bs-logger@^0.2.6: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== dependencies: fast-json-stable-stringify "2.x" -bs58@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" - integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= - 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" - integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== - dependencies: - bs58 "^4.0.0" - create-hash "^1.1.0" - safe-buffer "^5.1.2" - bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -3602,159 +2281,37 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer-to-arraybuffer@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" - integrity sha1-YGSkD6dutDxyOrqe+PbhIW0QURo= - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer-xor@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-2.0.2.tgz#34f7c64f04c777a1f8aac5e661273bb9dd320289" - integrity sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ== - dependencies: - safe-buffer "^5.1.1" - -buffer@^5.0.5, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -bufferutil@^4.0.1: - version "4.0.6" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.6.tgz#ebd6c67c7922a0e902f053e5d8be5ec850e48433" - integrity sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw== - dependencies: - node-gyp-build "^4.3.0" - -builtin-modules@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== - -bytes@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.1.tgz#3f018291cb4cbad9accb6e6970bca9c8889e879a" - integrity sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg== - -bytesish@^0.4.1: - version "0.4.4" - resolved "https://registry.yarnpkg.com/bytesish/-/bytesish-0.4.4.tgz#f3b535a0f1153747427aee27256748cff92347e6" - integrity sha512-i4uu6M4zuMUiyfZN4RU2+i9+peJh//pXhd9x1oSe1LBkZ3LEbCoygu8W0bXTukU1Jme2txKuotpCZRaC3FLxcQ== - -bytewise-core@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/bytewise-core/-/bytewise-core-1.2.3.tgz#3fb410c7e91558eb1ab22a82834577aa6bd61d42" - integrity sha1-P7QQx+kVWOsasiqCg0V3qmvWHUI= - dependencies: - typewise-core "^1.2" - -bytewise@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/bytewise/-/bytewise-1.1.0.tgz#1d13cbff717ae7158094aa881b35d081b387253e" - integrity sha1-HRPL/3F65xWAlKqIGzXQgbOHJT4= - dependencies: - bytewise-core "^1.2.2" - typewise "^1.0.3" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - -cachedown@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cachedown/-/cachedown-1.0.0.tgz#d43f036e4510696b31246d7db31ebf0f7ac32d15" - integrity sha1-1D8DbkUQaWsxJG19sx6/D3rDLRU= - dependencies: - abstract-leveldown "^2.4.1" - lru-cache "^3.2.0" - -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= - camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.1.tgz#250fd350cfd555d0d2160b1d51510eaf8326e86e" - integrity sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA== + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001286: - version "1.0.30001298" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001298.tgz#0e690039f62e91c3ea581673d716890512e7ec52" - integrity sha512-AcKqikjMLlvghZL/vfTHorlQsLDhGRalYf1+GmWCf5SCMziSGjRYQW/JEksj14NaYHIR6KIhrFAy0HV5C25UzQ== +caniuse-lite@^1.0.30001503: + version "1.0.30001515" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001515.tgz#418aefeed9d024cd3129bfae0ccc782d4cb8f12b" + integrity sha512-eEFDwUOZbE24sb+Ecsx3+OvNETqjWIdabMy52oOkIgcUtAsQifjUG9q4U9dgTHJM2mfk4uEPxc0+xuFdJ629QA== -caniuse-lite@^1.0.30001280: - version "1.0.30001283" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001283.tgz#8573685bdae4d733ef18f78d44ba0ca5fe9e896b" - integrity sha512-9RoKo841j1GQFSJz/nCXOj0sD7tHBtlowjYlrqIUS812x9/emfBLBt6IyMz1zIaYc/eRL8Cs6HPUVi2Hzq4sIg== +caniuse-lite@^1.0.30001663: + version "1.0.30001666" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001666.tgz#112d77e80f1762f62a1b71ba92164e0cb3f3dd13" + integrity sha512-gD14ICmoV5ZZM1OdzPWmpx+q4GyefaK06zi8hmfHV5xe4/2nOQX3+Dw5o+fSqOws2xVwL9j+anOPFwHzdEdV4g== -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +caniuse-lite@^1.0.30001726: + version "1.0.30001726" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz#a15bd87d5a4bf01f6b6f70ae7c97fdfd28b5ae47" + integrity sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw== -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3771,152 +2328,59 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" + integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== -checkpoint-store@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/checkpoint-store/-/checkpoint-store-1.1.0.tgz#04e4cb516b91433893581e6d4601a78e9552ea06" - integrity sha1-BOTLUWuRQziTWB5tRgGnjpVS6gY= - dependencies: - functional-red-black-tree "^1.0.1" - -chownr@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - ci-info@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" - integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== - -cids@^0.7.1: - version "0.7.5" - resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" - integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== - dependencies: - buffer "^5.5.0" - class-is "^1.1.0" - multibase "~0.6.0" - multicodec "^1.0.0" - multihashes "~0.4.15" - -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" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" + version "3.8.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== 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" - integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== - -class-is@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" - integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" + version "1.2.3" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" + integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== -cli-truncate@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== +cli-cursor@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-5.0.0.tgz#24a4831ecf5a6b01ddeb32fb71a4b2088b0dce38" + integrity sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw== dependencies: - slice-ansi "^3.0.0" - string-width "^4.2.0" + restore-cursor "^5.0.0" -cli-truncate@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" - integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== +cli-truncate@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-4.0.0.tgz#6cc28a2924fee9e25ce91e973db56c7066e6172a" + integrity sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA== dependencies: slice-ansi "^5.0.0" - string-width "^5.0.0" - -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" + string-width "^7.0.0" -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== dependencies: string-width "^4.2.0" - strip-ansi "^6.0.0" + strip-ansi "^6.0.1" wrap-ansi "^7.0.0" -clone-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= - dependencies: - mimic-response "^1.0.0" - -clone@2.1.2, clone@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== 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" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" + version "1.0.2" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== color-convert@^1.9.0: version "1.9.3" @@ -3935,60 +2399,29 @@ color-convert@^2.0.1: color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colorette@^2.0.16: - version "2.0.16" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" - integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== - -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -command-exists@^1.2.8: - version "1.2.9" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" - integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== - -command-line-args@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-4.0.7.tgz#f8d1916ecb90e9e121eda6428e41300bfb64cc46" - integrity sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA== - dependencies: - array-back "^2.0.0" - find-replace "^1.0.3" - typical "^2.6.1" - -commander@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" - integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== - -commander@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== +colorette@^2.0.20: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +commander@^13.1.0: + version "13.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-13.1.0.tgz#776167db68c78f38dcce1f9b8d7b8b9a488abf46" + integrity sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw== concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -concat-stream@^1.4.7, concat-stream@^1.5.1: +concat-stream@^1.4.7: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -3998,150 +2431,51 @@ concat-stream@^1.4.7, concat-stream@^1.5.1: readable-stream "^2.2.2" typedarray "^0.0.6" -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-hash@^2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" - integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== - dependencies: - cids "^0.7.1" - multicodec "^0.5.5" - multihashes "^0.4.15" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@^1.4.0, convert-source-map@^1.5.1, 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" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" - integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== +convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== -cookiejar@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" - integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ== - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -core-js-compat@^3.20.0, core-js-compat@^3.20.2: - version "3.20.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.20.2.tgz#d1ff6936c7330959b46b2e08b122a8b14e26140b" - integrity sha512-qZEzVQ+5Qh6cROaTPFLNS4lkvQ6mBzE3R6A6EEpssj7Zr2egMHgsy4XapdifqJDGC9CBiNv7s+ejI96rLNQFdg== +core-js-compat@^3.43.0: + version "3.43.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.43.0.tgz#055587369c458795ef316f65e0aabb808fb15840" + integrity sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA== dependencies: - browserslist "^4.19.1" - semver "7.0.0" - -core-js-pure@^3.0.1: - version "3.20.2" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.20.2.tgz#5d263565f0e34ceeeccdc4422fae3e84ca6b8c0f" - integrity sha512-CmWHvSKn2vNL6p6StNp1EmMIfVY/pqn3JLAjfZQ8WZGPOlGoO92EkX9/Mk81i6GxvoPXjUqEQnpM3rJ5QxxIOg== - -core-js@^2.4.0, core-js@^2.5.0: - version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + browserslist "^4.25.0" 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" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cors@^2.8.1: - version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== +create-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -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" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.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" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - 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" - -cross-fetch@^2.1.0, cross-fetch@^2.1.1: - version "2.2.5" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.5.tgz#afaf5729f3b6c78d89c9296115c9f142541a5705" - integrity sha512-xqYAhQb4NhCJSRym03dwxpP1bYXpK3y7UN83Bo2WFi3x1Zmzn0SL/6xGoPr+gpt4WmNrgCCX3HPysvOwFOW36w== - dependencies: - node-fetch "2.6.1" - whatwg-fetch "2.0.4" + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A== dependencies: lru-cache "^4.0.1" shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.2, cross-spawn@^7.0.3: +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" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -4150,255 +2484,70 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -crypto-browserify@3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - 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" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== +cross-spawn@^7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== dependencies: - ms "^2.1.1" + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -debug@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== +debug@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" + integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== dependencies: - ms "^2.1.1" - -decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - 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" - integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + ms "^2.1.3" -decompress-response@^3.2.0, decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= +debug@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== dependencies: - mimic-response "^1.0.0" + ms "^2.1.3" -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= - -deep-equal@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" +dedent@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.2.0.tgz#32039cd75c035f684e01c4a07cb88c0ecbeb57be" + integrity sha512-i4tcg0ClgvMUSxwHpt+NHQ01ZJmAkl6eBvDNrSZG9e+oLRTCSHv0wpr/Bzjpf6CwKeIHGevE1M34Y1Axdms5VQ== -deep-is@^0.1.3, 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" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -deepmerge-ts@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/deepmerge-ts/-/deepmerge-ts-2.0.1.tgz#08e3bf4b535736a360c57fb162ddbffc253fe9f2" - integrity sha512-7xeG0xMleW+gyrtUsdOeR6tCLwkyYDh3koIuvc8TxBcDh3WlaBQiEbFwEzk8clKomJZMhmoyxo7Y9CRrrrLVlg== - dependencies: - is-plain-object "^5.0.0" +deepmerge-ts@^4.0.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/deepmerge-ts/-/deepmerge-ts-4.3.0.tgz#432aff3cd09f947e36cdb3772a43960bf45327fe" + integrity sha512-if3ZYdkD2dClhnXR5reKtG98cwyaRT1NeugQoAPTTfsOpV9kqyeiBF9Qa5RHjemb3KzD5ulqygv6ED3t5j9eJw== deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -deferred-leveldown@~1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz#3acd2e0b75d1669924bc0a4b642851131173e1eb" - integrity sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA== - dependencies: - abstract-leveldown "~2.6.0" - -deferred-leveldown@~4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz#0b0570087827bf480a23494b398f04c128c19a20" - integrity sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww== - dependencies: - abstract-leveldown "~5.0.0" - inherits "^2.0.3" - -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -defined@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= - dependencies: - repeating "^2.0.0" + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -diff-sequences@^27.4.0: - version "27.4.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.4.0.tgz#d783920ad8d06ec718a060d00196dfef25b132a5" - integrity sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww== - -diff@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +diff-sequences@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" + integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== dir-glob@^3.0.1: version "3.0.1" @@ -4414,75 +2563,35 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-walk@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" - integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== - -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - -dotignore@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905" - integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== - dependencies: - minimatch "^3.0.4" - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -electron-to-chromium@^1.3.47: - version "1.4.42" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.42.tgz#fe3ee7c71f0b5302da12e730cd9cd395609625df" - integrity sha512-JJLT8bjdswJzk8sNRnQjee0MGtO4zTn1t7eWwYPr8gPTadQgNRR/wFRKLGD6HZVZby39yHERkvuCVKNm10r7Dg== - -electron-to-chromium@^1.3.896: - version "1.4.5" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.5.tgz#912e8fd1645edee2f0f212558f40916eb538b1f9" - integrity sha512-YKaB+t8ul5crdh6OeqT2qXdxJGI0fAYb6/X8pDIyye+c3a7ndOCk5gVeKX+ABwivCGNS56vOAif3TN0qJMpEHw== - -electron-to-chromium@^1.4.17: - version "1.4.39" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.39.tgz#19c8e8ff712fe62bfdd4f3fe1c3b3fb4aa179ebb" - integrity sha512-bFH3gdRq/l7WlzSleiO6dwpZH3RhiJ8vlMq0tOJMfT+5nb+x397eJn2RHF6Ho/9GCKv+BkimNlUMHl9+Yh+Qcg== - -elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - 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" - -emittery@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" - integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +electron-to-chromium@^1.4.431: + version "1.4.461" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.461.tgz#6b14af66042732bf883ab63a4d82cac8f35eb252" + integrity sha512-1JkvV2sgEGTDXjdsaQCeSwYYuhLRphRpc+g6EHTFELJXEiznLt3/0pZ9JuAOQ5p2rI3YxKTbivtvajirIfhrEQ== + +electron-to-chromium@^1.5.173: + version "1.5.178" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.178.tgz#6fc4d69eb5275bb13068931448fd822458901fbb" + integrity sha512-wObbz/ar3Bc6e4X5vf0iO8xTN8YAjN/tgiAOJLr7yjYFtP9wAjq8Mb5h0yn6kResir+VYx2DXBj9NNobs0ETSA== + +electron-to-chromium@^1.5.28: + version "1.5.31" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.31.tgz#b1478418769dec72ea70d9fdf147a81491857f10" + integrity sha512-QcDoBbQeYt0+3CWcK/rEbuHvwpbT/8SV9T3OSgs6cX1FlcUAkgrkqbg9zLnDrMM/rLamzQwal4LYFCiWk861Tg== + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + +emoji-regex@^10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.3.0.tgz#76998b9268409eb3dae3de989254d456e70cfe23" + integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== emoji-regex@^8.0.0: version "8.0.0" @@ -4494,125 +2603,37 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -encoding-down@5.0.4, encoding-down@~5.0.0: - version "5.0.4" - resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-5.0.4.tgz#1e477da8e9e9d0f7c8293d320044f8b2cd8e9614" - integrity sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw== - dependencies: - abstract-leveldown "^5.0.0" - inherits "^2.0.3" - level-codec "^9.0.0" - level-errors "^2.0.0" - xtend "^4.0.1" - -encoding@^0.1.11: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -errno@~0.1.1: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" +environment@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/environment/-/environment-1.1.0.tgz#8e86c66b180f363c7ab311787e0259665f45a9f1" + integrity sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q== -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -es-abstract@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" - integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.1" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.1" - is-string "^1.0.7" - is-weakref "^1.0.1" - object-inspect "^1.11.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -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" - -es5-ext@^0.10.35, es5-ext@^0.10.50: - version "0.10.53" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" - -es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-symbol@^3.1.1, es6-symbol@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= +escalade@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +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" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== escape-string-regexp@^2.0.0: version "2.0.0" @@ -4624,38 +2645,27 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-prettier@8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" - integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== +eslint-config-prettier@10.1.8: + version "10.1.8" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz#15734ce4af8c2778cc32f0b01b37b0b5cd1ecb97" + integrity sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w== -eslint-plugin-functional@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-functional/-/eslint-plugin-functional-4.1.1.tgz#181b6c491fb73f05887cf51349118eeef0681bd5" - integrity sha512-FgYMsScNCDilsxpYLboYLkY/y36VfocUD02tB1CJc8q4d+/H06ADKa9v6Dmk8kKlzIIW4V/wfNOVuxNusa0avw== +eslint-plugin-functional@4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-functional/-/eslint-plugin-functional-4.4.1.tgz#de967e2a307387281ff78466ab66967f17ff9e99" + integrity sha512-YhSfHS52Si62Sn126g9wGx+XnWMoWhwEt6ctVXfcJj+xMUiggjOqUVMca7fuLNzX8jYiNBIeU1Y0teHGePZ3NA== dependencies: - "@typescript-eslint/experimental-utils" "^5.0.0" - deepmerge-ts "^2.0.1" + "@typescript-eslint/utils" "^5.10.2" + deepmerge-ts "^4.0.3" escape-string-regexp "^4.0.0" + semver "^7.3.7" -eslint-plugin-jest@26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-26.0.0.tgz#f83a25a23ab90ce5b375b1d44389b8c391be5ce8" - integrity sha512-Fvs0YgJ/nw9FTrnqTuMGVrkozkd07jkQzWm0ajqyHlfcsdkxGfAuv30fgfWHOnHiCr9+1YQ365CcDX7vrNhqQg== +eslint-plugin-jest@28.14.0: + version "28.14.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-28.14.0.tgz#02da77dc27d7b4c5480df3552ea26de056857b36" + integrity sha512-P9s/qXSMTpRTerE2FQ0qJet2gKbcGyFTPAJipoKxmWqR6uuFqIqk8FuEfg5yBieOezVrEfAMZrEwJ6yEp+1MFQ== dependencies: - "@typescript-eslint/utils" "^5.10.0" + "@typescript-eslint/utils" "^6.0.0 || ^7.0.0 || ^8.0.0" eslint-scope@^5.1.1: version "5.1.1" @@ -4665,104 +2675,86 @@ eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.0.tgz#c1f6ea30ac583031f203d65c73e723b01298f153" - integrity sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz#eee4acea891814cda67a7d8812d9647dd0179af2" - integrity sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA== - -eslint-visitor-keys@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz#6fbb166a6798ee5991358bc2daa1ba76cc1254a1" - integrity sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ== - -eslint@8.8.0: - version "8.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.8.0.tgz#9762b49abad0cb4952539ffdb0a046392e571a2d" - integrity sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ== - dependencies: - "@eslint/eslintrc" "^1.0.5" - "@humanwhocodes/config-array" "^0.9.2" - ajv "^6.10.0" +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" + integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== + +eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@8.57.1: + version "8.57.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" + integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" 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.0" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.2.0" - espree "^9.3.0" - esquery "^1.4.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" 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" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" ignore "^5.2.0" - import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" + is-path-inside "^3.0.3" js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" - minimatch "^3.0.4" + minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" + optionator "^0.9.3" strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" text-table "^0.2.0" - v8-compile-cache "^2.0.3" -espree@^9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.2.0.tgz#c50814e01611c2d0f8bd4daa83c369eabba80dbc" - integrity sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg== +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^8.6.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^3.1.0" + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" -espree@^9.3.0: - version "9.3.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.0.tgz#c1240d79183b72aaee6ccfa5a90bc9111df085a8" - integrity sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ== - dependencies: - acorn "^8.7.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^3.1.0" - -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" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" @@ -4783,508 +2775,35 @@ estraverse@^5.1.0, estraverse@^5.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -eth-block-tracker@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-3.0.1.tgz#95cd5e763c7293e0b1b2790a2a39ac2ac188a5e1" - integrity sha512-WUVxWLuhMmsfenfZvFO5sbl1qFY2IqUlw/FPVmjjdElpqLsZtSG+wPe9Dz7W/sB6e80HgFKknOmKk2eNlznHug== - dependencies: - eth-query "^2.1.0" - ethereumjs-tx "^1.3.3" - ethereumjs-util "^5.1.3" - ethjs-util "^0.1.3" - json-rpc-engine "^3.6.0" - pify "^2.3.0" - tape "^4.6.3" - -eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" - integrity sha1-IprEbsqG1S4MmR58sq74P/D2i88= - dependencies: - idna-uts46-hx "^2.3.1" - js-sha3 "^0.5.7" - -eth-json-rpc-infura@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-3.2.1.tgz#26702a821067862b72d979c016fd611502c6057f" - integrity sha512-W7zR4DZvyTn23Bxc0EWsq4XGDdD63+XPUCEhV2zQvQGavDVC4ZpFDK4k99qN7bd7/fjj37+rxmuBOBeIqCA5Mw== - dependencies: - cross-fetch "^2.1.1" - eth-json-rpc-middleware "^1.5.0" - json-rpc-engine "^3.4.0" - json-rpc-error "^2.0.0" - -eth-json-rpc-middleware@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-1.6.0.tgz#5c9d4c28f745ccb01630f0300ba945f4bef9593f" - integrity sha512-tDVCTlrUvdqHKqivYMjtFZsdD7TtpNLBCfKAcOpaVs7orBMS/A8HWro6dIzNtTZIR05FAbJ3bioFOnZpuCew9Q== - dependencies: - async "^2.5.0" - eth-query "^2.1.2" - eth-tx-summary "^3.1.2" - ethereumjs-block "^1.6.0" - ethereumjs-tx "^1.3.3" - ethereumjs-util "^5.1.2" - ethereumjs-vm "^2.1.0" - fetch-ponyfill "^4.0.0" - json-rpc-engine "^3.6.0" - json-rpc-error "^2.0.0" - json-stable-stringify "^1.0.1" - promise-to-callback "^1.0.0" - tape "^4.6.3" - -eth-lib@0.2.8: - version "0.2.8" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" - integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== - dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - xhr-request-promise "^0.1.2" - -eth-lib@^0.1.26: - version "0.1.29" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" - integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== - dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - nano-json-stream-parser "^0.1.2" - servify "^0.1.12" - ws "^3.0.0" - xhr-request-promise "^0.1.2" - -eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" - integrity sha1-1nQdkAAQa1FRDHLbktY2VFam2l4= - dependencies: - json-rpc-random-id "^1.0.0" - xtend "^4.0.1" - -eth-sig-util@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-3.0.0.tgz#75133b3d7c20a5731af0690c385e184ab942b97e" - integrity sha512-4eFkMOhpGbTxBQ3AMzVf0haUX2uTur7DpWiHzWyTURa28BVJJtOkcb9Ok5TV0YvEPG61DODPW7ZUATbJTslioQ== - dependencies: - buffer "^5.2.1" - elliptic "^6.4.0" - ethereumjs-abi "0.6.5" - ethereumjs-util "^5.1.1" - tweetnacl "^1.0.0" - tweetnacl-util "^0.15.0" - -eth-sig-util@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-1.4.2.tgz#8d958202c7edbaae839707fba6f09ff327606210" - integrity sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA= - dependencies: - ethereumjs-abi "git+https://github.com/ethereumjs/ethereumjs-abi.git" - ethereumjs-util "^5.1.1" - -eth-tx-summary@^3.1.2: - version "3.2.4" - resolved "https://registry.yarnpkg.com/eth-tx-summary/-/eth-tx-summary-3.2.4.tgz#e10eb95eb57cdfe549bf29f97f1e4f1db679035c" - integrity sha512-NtlDnaVZah146Rm8HMRUNMgIwG/ED4jiqk0TME9zFheMl1jOp6jL1m0NKGjJwehXQ6ZKCPr16MTr+qspKpEXNg== - dependencies: - async "^2.1.2" - clone "^2.0.0" - concat-stream "^1.5.1" - end-of-stream "^1.1.0" - eth-query "^2.0.2" - ethereumjs-block "^1.4.1" - ethereumjs-tx "^1.1.1" - ethereumjs-util "^5.0.1" - ethereumjs-vm "^2.6.0" - through2 "^2.0.3" - -ethashjs@~0.0.7: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ethashjs/-/ethashjs-0.0.8.tgz#227442f1bdee409a548fb04136e24c874f3aa6f9" - integrity sha512-/MSbf/r2/Ld8o0l15AymjOTlPqpN8Cr4ByUEA9GtR4x0yAh3TdtDzEg29zMjXCNPI7u6E5fOQdj/Cf9Tc7oVNw== - dependencies: - async "^2.1.2" - buffer-xor "^2.0.1" - ethereumjs-util "^7.0.2" - miller-rabin "^4.0.0" - -ethereum-bloom-filters@^1.0.6: - version "1.0.10" - resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" - integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== - dependencies: - js-sha3 "^0.8.0" - -ethereum-common@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.2.0.tgz#13bf966131cce1eeade62a1b434249bb4cb120ca" - integrity sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA== - -ethereum-common@^0.0.18: - version "0.0.18" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" - integrity sha1-L9w1dvIykDNYl26znaeDIT/5Uj8= - -ethereum-cryptography@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" - integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== - 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" - -ethereum-waffle@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.3.0.tgz#166a0cc1d3b2925f117b20ef0951b3fe72e38e79" - integrity sha512-4xm3RWAPCu5LlaVxYEg0tG3L7g5ovBw1GY/UebrzZ+OTx22vcPjI+bvelFlGBpkdnO5yOIFXjH2eK59tNAe9IA== - dependencies: - "@ethereum-waffle/chai" "^3.3.0" - "@ethereum-waffle/compiler" "^3.3.0" - "@ethereum-waffle/mock-contract" "^3.2.2" - "@ethereum-waffle/provider" "^3.3.0" - ethers "^5.0.1" - -ethereumjs-abi@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz#5a637ef16ab43473fa72a29ad90871405b3f5241" - integrity sha1-WmN+8Wq0NHP6cqKa2QhxQFs/UkE= - dependencies: - bn.js "^4.10.0" - ethereumjs-util "^4.3.0" - -ethereumjs-abi@0.6.8: - version "0.6.8" - resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" - integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== - dependencies: - bn.js "^4.11.8" - ethereumjs-util "^6.0.0" - -"ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git": - version "0.6.8" - resolved "git+https://github.com/ethereumjs/ethereumjs-abi.git#ee3994657fa7a427238e6ba92a84d0b529bbcde0" +ethers@6.15.0: + version "6.15.0" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.15.0.tgz#2980f2a3baf0509749b7e21f8692fa8a8349c0e3" + integrity sha512-Kf/3ZW54L4UT0pZtsY/rf+EkBU7Qi5nnhonjUb8yTXcxH3cdcWrV2cRyk0Xk/4jK6OoHhxxZHriyhje20If2hQ== dependencies: - bn.js "^4.11.8" - ethereumjs-util "^6.0.0" - -ethereumjs-account@3.0.0, ethereumjs-account@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-3.0.0.tgz#728f060c8e0c6e87f1e987f751d3da25422570a9" - integrity sha512-WP6BdscjiiPkQfF9PVfMcwx/rDvfZTjFKY0Uwc09zSQr9JfIVH87dYIJu0gNhBhpmovV4yq295fdllS925fnBA== - dependencies: - ethereumjs-util "^6.0.0" - rlp "^2.2.1" - safe-buffer "^5.1.1" - -ethereumjs-account@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz#eeafc62de544cb07b0ee44b10f572c9c49e00a84" - integrity sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA== - dependencies: - ethereumjs-util "^5.0.0" - rlp "^2.0.0" - safe-buffer "^5.1.1" - -ethereumjs-block@2.2.2, ethereumjs-block@^2.2.2, ethereumjs-block@~2.2.0, ethereumjs-block@~2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz#c7654be7e22df489fda206139ecd63e2e9c04965" - integrity sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg== - dependencies: - async "^2.0.1" - ethereumjs-common "^1.5.0" - ethereumjs-tx "^2.1.1" - ethereumjs-util "^5.0.0" - merkle-patricia-tree "^2.1.2" - -ethereumjs-block@^1.2.2, ethereumjs-block@^1.4.1, ethereumjs-block@^1.6.0: - version "1.7.1" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz#78b88e6cc56de29a6b4884ee75379b6860333c3f" - integrity sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg== - dependencies: - async "^2.0.1" - ethereum-common "0.2.0" - ethereumjs-tx "^1.2.2" - ethereumjs-util "^5.0.0" - merkle-patricia-tree "^2.1.2" - -ethereumjs-blockchain@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/ethereumjs-blockchain/-/ethereumjs-blockchain-4.0.4.tgz#30f2228dc35f6dcf94423692a6902604ae34960f" - integrity sha512-zCxaRMUOzzjvX78DTGiKjA+4h2/sF0OYL1QuPux0DHpyq8XiNoF5GYHtb++GUxVlMsMfZV7AVyzbtgcRdIcEPQ== - dependencies: - async "^2.6.1" - ethashjs "~0.0.7" - ethereumjs-block "~2.2.2" - ethereumjs-common "^1.5.0" - ethereumjs-util "^6.1.0" - flow-stoplight "^1.0.0" - level-mem "^3.0.1" - lru-cache "^5.1.1" - rlp "^2.2.2" - semaphore "^1.1.0" + "@adraffy/ens-normalize" "1.10.1" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@types/node" "22.7.5" + aes-js "4.0.0-beta.5" + tslib "2.7.0" + ws "8.17.1" -ethereumjs-common@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz#d3e82fc7c47c0cef95047f431a99485abc9bb1cd" - integrity sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ== - -ethereumjs-common@^1.1.0, ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" - integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== - -ethereumjs-tx@2.1.2, ethereumjs-tx@^2.1.1, ethereumjs-tx@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" - integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== - dependencies: - ethereumjs-common "^1.5.0" - ethereumjs-util "^6.0.0" - -ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3: - version "1.3.7" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" - integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== - dependencies: - ethereum-common "^0.0.18" - ethereumjs-util "^5.0.0" - -ethereumjs-util@6.2.1, ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" - integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== - dependencies: - "@types/bn.js" "^4.11.3" - bn.js "^4.11.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - ethjs-util "0.1.6" - rlp "^2.2.3" - -ethereumjs-util@^4.3.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-4.5.1.tgz#f4bf9b3b515a484e3cc8781d61d9d980f7c83bd0" - integrity sha512-WrckOZ7uBnei4+AKimpuF1B3Fv25OmoRgmYCpGsP7u8PFxXAmAgiJSYT2kRWnt6fVIlKaQlZvuwXp7PIrmn3/w== - dependencies: - bn.js "^4.8.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - rlp "^2.0.0" - -ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.3, ethereumjs-util@^5.1.5, ethereumjs-util@^5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz#a833f0e5fca7e5b361384dc76301a721f537bf65" - integrity sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ== - dependencies: - bn.js "^4.11.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - ethjs-util "^0.1.3" - rlp "^2.0.0" - safe-buffer "^5.1.1" - -ethereumjs-util@^7.0.2, ethereumjs-util@^7.1.0: - version "7.1.3" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.3.tgz#b55d7b64dde3e3e45749e4c41288238edec32d23" - integrity sha512-y+82tEbyASO0K0X1/SRhbJJoAlfcvq8JbrG4a5cjrOks7HS/36efU/0j2flxCPOUM++HFahk33kr/ZxyC4vNuw== - 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" - -ethereumjs-vm@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-4.2.0.tgz#e885e861424e373dbc556278f7259ff3fca5edab" - integrity sha512-X6qqZbsY33p5FTuZqCnQ4+lo957iUJMM6Mpa6bL4UW0dxM6WmDSHuI4j/zOp1E2TDKImBGCJA9QPfc08PaNubA== - dependencies: - async "^2.1.2" - async-eventemitter "^0.2.2" - core-js-pure "^3.0.1" - ethereumjs-account "^3.0.0" - ethereumjs-block "^2.2.2" - ethereumjs-blockchain "^4.0.3" - ethereumjs-common "^1.5.0" - ethereumjs-tx "^2.1.2" - ethereumjs-util "^6.2.0" - fake-merkle-patricia-tree "^1.0.1" - functional-red-black-tree "^1.0.1" - merkle-patricia-tree "^2.3.2" - rustbn.js "~0.2.0" - safe-buffer "^5.1.1" - util.promisify "^1.0.0" - -ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz#76243ed8de031b408793ac33907fb3407fe400c6" - integrity sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw== - dependencies: - async "^2.1.2" - async-eventemitter "^0.2.2" - ethereumjs-account "^2.0.3" - ethereumjs-block "~2.2.0" - ethereumjs-common "^1.1.0" - ethereumjs-util "^6.0.0" - fake-merkle-patricia-tree "^1.0.1" - functional-red-black-tree "^1.0.1" - merkle-patricia-tree "^2.3.2" - rustbn.js "~0.2.0" - safe-buffer "^5.1.1" - -ethereumjs-wallet@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.5.tgz#685e9091645cee230ad125c007658833991ed474" - integrity sha512-MDwjwB9VQVnpp/Dc1XzA6J1a3wgHQ4hSvA1uWNatdpOrtCbPVuQSKSyRnjLvS0a+KKMw2pvQ9Ybqpb3+eW8oNA== - dependencies: - aes-js "^3.1.1" - bs58check "^2.1.2" - ethereum-cryptography "^0.1.3" - ethereumjs-util "^6.0.0" - randombytes "^2.0.6" - safe-buffer "^5.1.2" - scryptsy "^1.2.1" - utf8 "^3.0.0" - uuid "^3.3.2" - -ethers@5.5.4: - version "5.5.4" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.5.4.tgz#e1155b73376a2f5da448e4a33351b57a885f4352" - integrity sha512-N9IAXsF8iKhgHIC6pquzRgPBJEzc9auw3JoRkaKe+y4Wl/LFBtDDunNe7YmdomontECAcC5APaAgWZBiu1kirw== - dependencies: - "@ethersproject/abi" "5.5.0" - "@ethersproject/abstract-provider" "5.5.1" - "@ethersproject/abstract-signer" "5.5.0" - "@ethersproject/address" "5.5.0" - "@ethersproject/base64" "5.5.0" - "@ethersproject/basex" "5.5.0" - "@ethersproject/bignumber" "5.5.0" - "@ethersproject/bytes" "5.5.0" - "@ethersproject/constants" "5.5.0" - "@ethersproject/contracts" "5.5.0" - "@ethersproject/hash" "5.5.0" - "@ethersproject/hdnode" "5.5.0" - "@ethersproject/json-wallets" "5.5.0" - "@ethersproject/keccak256" "5.5.0" - "@ethersproject/logger" "5.5.0" - "@ethersproject/networks" "5.5.2" - "@ethersproject/pbkdf2" "5.5.0" - "@ethersproject/properties" "5.5.0" - "@ethersproject/providers" "5.5.3" - "@ethersproject/random" "5.5.1" - "@ethersproject/rlp" "5.5.0" - "@ethersproject/sha2" "5.5.0" - "@ethersproject/signing-key" "5.5.0" - "@ethersproject/solidity" "5.5.0" - "@ethersproject/strings" "5.5.0" - "@ethersproject/transactions" "5.5.0" - "@ethersproject/units" "5.5.0" - "@ethersproject/wallet" "5.5.0" - "@ethersproject/web" "5.5.1" - "@ethersproject/wordlists" "5.5.0" - -ethers@^5.0.1, ethers@^5.0.2, ethers@^5.4.7, ethers@^5.5.2: - version "5.5.3" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.5.3.tgz#1e361516711c0c3244b6210e7e3ecabf0c75fca0" - integrity sha512-fTT4WT8/hTe/BLwRUtl7I5zlpF3XC3P/Xwqxc5AIP2HGlH15qpmjs0Ou78az93b1rLITzXLFxoNX63B8ZbUd7g== - dependencies: - "@ethersproject/abi" "5.5.0" - "@ethersproject/abstract-provider" "5.5.1" - "@ethersproject/abstract-signer" "5.5.0" - "@ethersproject/address" "5.5.0" - "@ethersproject/base64" "5.5.0" - "@ethersproject/basex" "5.5.0" - "@ethersproject/bignumber" "5.5.0" - "@ethersproject/bytes" "5.5.0" - "@ethersproject/constants" "5.5.0" - "@ethersproject/contracts" "5.5.0" - "@ethersproject/hash" "5.5.0" - "@ethersproject/hdnode" "5.5.0" - "@ethersproject/json-wallets" "5.5.0" - "@ethersproject/keccak256" "5.5.0" - "@ethersproject/logger" "5.5.0" - "@ethersproject/networks" "5.5.2" - "@ethersproject/pbkdf2" "5.5.0" - "@ethersproject/properties" "5.5.0" - "@ethersproject/providers" "5.5.2" - "@ethersproject/random" "5.5.1" - "@ethersproject/rlp" "5.5.0" - "@ethersproject/sha2" "5.5.0" - "@ethersproject/signing-key" "5.5.0" - "@ethersproject/solidity" "5.5.0" - "@ethersproject/strings" "5.5.0" - "@ethersproject/transactions" "5.5.0" - "@ethersproject/units" "5.5.0" - "@ethersproject/wallet" "5.5.0" - "@ethersproject/web" "5.5.1" - "@ethersproject/wordlists" "5.5.0" - -ethjs-unit@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" - integrity sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk= - dependencies: - bn.js "4.11.6" - number-to-bn "1.7.0" - -ethjs-util@0.1.6, ethjs-util@^0.1.3: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" - integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== - dependencies: - is-hex-prefixed "1.0.0" - strip-hex-prefix "1.0.0" - -eventemitter3@4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" - integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== - -events@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== -execa@^5.0.0, execa@^5.1.1: +execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== @@ -5299,137 +2818,58 @@ execa@^5.0.0, execa@^5.1.1: signal-exit "^3.0.3" strip-final-newline "^2.0.0" +execa@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" + integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^8.0.1" + human-signals "^5.0.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^4.1.0" + strip-final-newline "^3.0.0" + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expect@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.4.6.tgz#f335e128b0335b6ceb4fcab67ece7cbd14c942e6" - integrity sha512-1M/0kAALIaj5LaG66sFJTbRsWTADnylly82cu4bspI0nl+pgP4E6Bh/aqdHlTUjul06K7xQnnrAoqfxVU0+/ag== - dependencies: - "@jest/types" "^27.4.2" - jest-get-type "^27.4.0" - jest-matcher-utils "^27.4.6" - jest-message-util "^27.4.6" - -express@^4.14.0: - version "4.17.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.2.tgz#c18369f265297319beed4e5558753cc8c1364cb3" - integrity sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.1" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.4.1" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.9.6" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.17.2" - serve-static "1.14.2" - setprototypeof "1.2.0" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -ext@^1.1.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" - integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== - dependencies: - type "^2.5.0" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - -fake-merkle-patricia-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz#4b8c3acfb520afadf9860b1f14cd8ce3402cddd3" - integrity sha1-S4w6z7Ugr635hgsfFM2M40As3dM= +expect@^29.0.0: + version "29.6.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.6.1.tgz#64dd1c8f75e2c0b209418f2b8d36a07921adfdf1" + integrity sha512-XEdDLonERCU1n9uR56/Stx9OqojaLAQtZf9PrCHH9Hl8YXiEIka3H4NXJ3NOIBmQJTg7+j7buh34PMHfJujc8g== dependencies: - checkpoint-store "^1.1.0" + "@jest/expect-utils" "^29.6.1" + "@types/node" "*" + jest-get-type "^29.4.3" + jest-matcher-utils "^29.6.1" + jest-message-util "^29.6.1" + jest-util "^29.6.1" + +expect@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== + dependencies: + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" 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" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.1.1: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== +fast-glob@^3.2.9: + version "3.3.0" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.0.tgz#7c40cb491e1e2ed5664749e87bfb516dbe8727c0" + integrity sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -5437,37 +2877,30 @@ fast-glob@^3.1.1: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6, 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" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== dependencies: reusify "^1.0.4" fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: bser "2.1.1" -fetch-ponyfill@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz#ae3ce5f732c645eab87e4ae8793414709b239893" - integrity sha1-rjzl9zLGReq4fkroeTQUcJsjmJM= - dependencies: - node-fetch "~1.7.1" - 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" @@ -5475,16 +2908,6 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -5492,34 +2915,12 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-replace@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-1.0.3.tgz#b88e7364d2d9c959559f388c66670d6130441fa0" - integrity sha1-uI5zZNLZyVlVnziMZmcNYTBEH6A= - dependencies: - array-back "^1.0.4" - test-value "^2.1.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" + to-regex-range "^5.0.1" find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" @@ -5529,20 +2930,13 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -find-yarn-workspace-root@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz#40eb8e6e7c2502ddfaa2577c176f221422f860db" - integrity sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q== - dependencies: - fs-extra "^4.0.3" - micromatch "^3.1.4" - -find-yarn-workspace-root@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" - integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: - micromatch "^4.0.2" + locate-path "^6.0.0" + path-exists "^4.0.0" flat-cache@^3.0.4: version "3.0.4" @@ -5553,112 +2947,22 @@ flat-cache@^3.0.4: rimraf "^3.0.2" flatted@^3.1.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2" - integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw== - -flow-stoplight@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/flow-stoplight/-/flow-stoplight-1.0.0.tgz#4a292c5bcff8b39fa6cc0cb1a853d86f27eeff7b" - integrity sha1-SiksW8/4s5+mzAyxqFPYbyfu/3s= - -follow-redirects@^1.10.0: - version "1.14.7" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.7.tgz#2004c02eb9436eee9a21446a6477debf17e81685" - integrity sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ== - -for-each@^0.3.3, for-each@~0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -fs-extra@^0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" - integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - -fs-extra@^4.0.2, fs-extra@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^7.0.0, fs-extra@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== -fs-minipass@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== dependencies: - minipass "^2.6.0" + cross-spawn "^7.0.0" + signal-exit "^4.0.1" fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" @@ -5670,120 +2974,40 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -ganache-core@^2.13.2: - version "2.13.2" - resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.13.2.tgz#27e6fc5417c10e6e76e2e646671869d7665814a3" - integrity sha512-tIF5cR+ANQz0+3pHWxHjIwHqFXcVo0Mb+kcsNhglNFALcYo49aQpnS9dqHartqPfMFjiHh/qFoD3mYK0d/qGgw== - dependencies: - abstract-leveldown "3.0.0" - async "2.6.2" - bip39 "2.5.0" - cachedown "1.0.0" - clone "2.1.2" - debug "3.2.6" - encoding-down "5.0.4" - eth-sig-util "3.0.0" - ethereumjs-abi "0.6.8" - ethereumjs-account "3.0.0" - ethereumjs-block "2.2.2" - ethereumjs-common "1.5.0" - ethereumjs-tx "2.1.2" - ethereumjs-util "6.2.1" - ethereumjs-vm "4.2.0" - heap "0.2.6" - keccak "3.0.1" - level-sublevel "6.6.4" - levelup "3.1.1" - lodash "4.17.20" - lru-cache "5.1.1" - merkle-patricia-tree "3.0.0" - patch-package "6.2.2" - seedrandom "3.0.1" - source-map-support "0.5.12" - tmp "0.1.0" - web3-provider-engine "14.2.1" - websocket "1.0.32" - optionalDependencies: - ethereumjs-wallet "0.6.5" - web3 "1.2.11" +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 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" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - 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" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" +get-east-asian-width@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz#5e6ebd9baee6fb8b7b6bd505221065f0cd91f64e" + integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA== 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" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - -get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" 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" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" +get-stream@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" + integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== glob-parent@^5.1.2: version "5.1.2" @@ -5792,383 +3016,132 @@ glob-parent@^5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@^6.0.1: +glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: is-glob "^4.0.3" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== +glob@^10.3.7: + version "10.3.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.7.tgz#d5bd30a529c8c9b262fb4b217941f64ad90e25ac" + integrity sha512-wCMbE1m9Nx5yD9LYtgsVWq5VhHlk5WzJirw594qZR6AIvQYuHrdDtIktUVjQItalD53y7dqoedu9xP0u0WaxIQ== 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" + foreground-child "^3.1.0" + jackspeak "^2.0.3" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" -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== +glob@^7.1.3, glob@^7.1.4: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^3.1.1" once "^1.3.0" path-is-absolute "^1.0.0" -global@~4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" - integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== - dependencies: - min-document "^2.19.0" - process "^0.11.10" - globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.6.0, globals@^13.9.0: - version "13.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.0.tgz#4d733760304230a0082ed96e21e5c565f898089e" - integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg== +globals@^13.19.0: + version "13.20.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== dependencies: type-fest "^0.20.2" -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - -globby@^11.0.4: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" slash "^3.0.0" -got@9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -got@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" - integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== - dependencies: - decompress-response "^3.2.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-plain-obj "^1.1.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - isurl "^1.0.0-alpha5" - lowercase-keys "^1.0.0" - p-cancelable "^0.3.0" - p-timeout "^1.1.1" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - url-parse-lax "^1.0.0" - url-to-options "^1.0.1" - -graceful-fs@^4.1.11, graceful-fs@^4.1.6, graceful-fs@^4.1.9: - version "4.2.9" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" - integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== - -graceful-fs@^4.1.2, graceful-fs@^4.2.4: - version "4.2.8" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" - integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= +graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= +handlebars@^4.7.8: + version "4.7.8" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" + integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== dependencies: - ansi-regex "^2.0.0" - -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + minimist "^1.2.5" + neo-async "^2.6.2" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbol-support-x@^1.4.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" - integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== - -has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-to-string-tag-x@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" - integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== - dependencies: - has-symbol-support-x "^1.4.1" - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.3, has@~1.0.3: +has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 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" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.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" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -heap@0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac" - integrity sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw= - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - -hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -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" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== dependencies: - whatwg-encoding "^1.0.5" + function-bind "^1.1.2" html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -http-cache-semantics@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== - -http-errors@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" - integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.1" - -http-https@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" - integrity sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs= - -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -husky@7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" - integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - 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" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -idna-uts46-hx@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" - integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== - dependencies: - punycode "2.1.0" - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +human-signals@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" + integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== -ignore@^5.1.4, ignore@^5.1.8: - version "5.1.9" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.9.tgz#9ec1a5cbe8e1446ec60d4420060d43aa6e7382fb" - integrity sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ== +husky@9.1.7: + version "9.1.7" + resolved "https://registry.yarnpkg.com/husky/-/husky-9.1.7.tgz#d46a38035d101b46a70456a850ff4201344c0b2d" + integrity sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA== ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== - -immediate@^3.2.3: - version "3.3.0" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" - integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== - -immediate@~3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" - integrity sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw= + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -6177,212 +3150,54 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: resolve-from "^4.0.0" import-local@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.3.tgz#4d51c2c495ca9393da259ec66b62e022920211e0" - integrity sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - 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" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -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" - -invariant@^2.2.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - 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-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" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-core-module@^2.2.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" - integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== - dependencies: - has "^1.0.3" - -is-core-module@^2.8.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" - integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -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== - dependencies: - has-tostringtag "^1.0.0" +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" + once "^1.3.0" + wrappy "1" -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" +inherits@2, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -is-docker@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= +is-core-module@^2.11.0: + version "2.12.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" + integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== + dependencies: + has "^1.0.3" -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== +is-core-module@^2.16.0: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== dependencies: - is-plain-object "^2.0.4" + hasown "^2.0.2" is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - -is-fn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fn/-/is-fn-1.0.0.tgz#9543d5de7bcf5b08a22ec8a20bae6e286d510d8c" - integrity sha1-lUPV3nvPWwiiLsiiC65uKG1RDYw= - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" @@ -6394,10 +3209,12 @@ is-fullwidth-code-point@^4.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== -is-function@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" - integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== +is-fullwidth-code-point@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz#9609efced7c2f97da7b60145ef481c787c7ba704" + integrity sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA== + dependencies: + get-east-asian-width "^1.0.0" is-generator-fn@^2.0.0: version "2.1.0" @@ -6411,184 +3228,55 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: 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" - integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= - is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" - integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== - -is-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" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-plain-object@^2.0.3, 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" - 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" - 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" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-regex@^1.0.4, is-regex@^1.1.4, is-regex@~1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-retry-allowed@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" - integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== - -is-shared-array-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" - integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== - -is-stream@^1.0.0, is-stream@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" 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-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-url@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" - integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= - -is-weakref@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" - integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== - dependencies: - call-bind "^1.0.0" - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== -isarray@1.0.0, isarray@~1.0.0: +isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= +isexe@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" + integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== 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" integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== -istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" - integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== +istanbul-lib-instrument@^5.0.4: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: "@babel/core" "^7.12.3" "@babel/parser" "^7.14.7" @@ -6596,6 +3284,17 @@ istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: istanbul-lib-coverage "^3.2.0" semver "^6.3.0" +istanbul-lib-instrument@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz#7a8af094cbfff1d5bb280f62ce043695ae8dd5b8" + integrity sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + 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" @@ -6615,460 +3314,442 @@ istanbul-lib-source-maps@^4.0.0: source-map "^0.6.1" istanbul-reports@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.3.tgz#4bcae3103b94518117930d51283690960b50d3c2" - integrity sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg== + version "3.1.5" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -isurl@^1.0.0-alpha5: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" - integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== +jackspeak@^2.0.3: + version "2.2.1" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.1.tgz#655e8cf025d872c9c03d3eb63e8f0c024fef16a6" + integrity sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw== dependencies: - has-to-string-tag-x "^1.2.0" - is-object "^1.0.1" + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" -jest-changed-files@^27.4.2: - version "27.4.2" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.4.2.tgz#da2547ea47c6e6a5f6ed336151bd2075736eb4a5" - integrity sha512-/9x8MjekuzUQoPjDHbBiXbNEBauhrPU2ct7m8TfCg69ywt1y/N+yYwGh3gCpnqUS3klYWDU/lSNgv+JhoD2k1A== +jest-changed-files@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== dependencies: - "@jest/types" "^27.4.2" execa "^5.0.0" - throat "^6.0.1" - -jest-circus@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.4.6.tgz#d3af34c0eb742a967b1919fbb351430727bcea6c" - integrity sha512-UA7AI5HZrW4wRM72Ro80uRR2Fg+7nR0GESbSI/2M+ambbzVuA63mn5T1p3Z/wlhntzGpIG1xx78GP2YIkf6PhQ== - dependencies: - "@jest/environment" "^27.4.6" - "@jest/test-result" "^27.4.6" - "@jest/types" "^27.4.2" + jest-util "^29.7.0" + p-limit "^3.1.0" + +jest-circus@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" - dedent "^0.7.0" - expect "^27.4.6" + dedent "^1.0.0" is-generator-fn "^2.0.0" - jest-each "^27.4.6" - jest-matcher-utils "^27.4.6" - jest-message-util "^27.4.6" - jest-runtime "^27.4.6" - jest-snapshot "^27.4.6" - jest-util "^27.4.2" - pretty-format "^27.4.6" + jest-each "^29.7.0" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + pretty-format "^29.7.0" + pure-rand "^6.0.0" slash "^3.0.0" stack-utils "^2.0.3" - throat "^6.0.1" -jest-cli@^27.4.7: - version "27.4.7" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.4.7.tgz#d00e759e55d77b3bcfea0715f527c394ca314e5a" - integrity sha512-zREYhvjjqe1KsGV15mdnxjThKNDgza1fhDT+iUsXWLCq3sxe9w5xnvyctcYVT5PcdLSjv7Y5dCwTS3FCF1tiuw== +jest-cli@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== dependencies: - "@jest/core" "^27.4.7" - "@jest/test-result" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" chalk "^4.0.0" + create-jest "^29.7.0" exit "^0.1.2" - graceful-fs "^4.2.4" import-local "^3.0.2" - jest-config "^27.4.7" - jest-util "^27.4.2" - jest-validate "^27.4.6" - prompts "^2.0.1" - yargs "^16.2.0" - -jest-config@^27.4.7: - version "27.4.7" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.4.7.tgz#4f084b2acbd172c8b43aa4cdffe75d89378d3972" - integrity sha512-xz/o/KJJEedHMrIY9v2ParIoYSrSVY6IVeE4z5Z3i101GoA5XgfbJz+1C8EYPsv7u7f39dS8F9v46BHDhn0vlw== - dependencies: - "@babel/core" "^7.8.0" - "@jest/test-sequencer" "^27.4.6" - "@jest/types" "^27.4.2" - babel-jest "^27.4.6" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + yargs "^17.3.1" + +jest-config@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.7.0" + "@jest/types" "^29.6.3" + babel-jest "^29.7.0" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.4" - jest-circus "^27.4.6" - jest-environment-jsdom "^27.4.6" - jest-environment-node "^27.4.6" - jest-get-type "^27.4.0" - jest-jasmine2 "^27.4.6" - jest-regex-util "^27.4.0" - jest-resolve "^27.4.6" - jest-runner "^27.4.6" - jest-util "^27.4.2" - jest-validate "^27.4.6" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.7.0" + jest-environment-node "^29.7.0" + jest-get-type "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-runner "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" micromatch "^4.0.4" - pretty-format "^27.4.6" + parse-json "^5.2.0" + pretty-format "^29.7.0" slash "^3.0.0" + strip-json-comments "^3.1.1" -jest-diff@^27.0.0: - version "27.4.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.4.2.tgz#786b2a5211d854f848e2dcc1e324448e9481f36f" - integrity sha512-ujc9ToyUZDh9KcqvQDkk/gkbf6zSaeEg9AiBxtttXW59H/AcqEYp1ciXAtJp+jXWva5nAf/ePtSsgWwE5mqp4Q== +jest-diff@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.6.1.tgz#13df6db0a89ee6ad93c747c75c85c70ba941e545" + integrity sha512-FsNCvinvl8oVxpNLttNQX7FAq7vR+gMDGj90tiP7siWw1UdakWUGqrylpsYrpvj908IYckm5Y0Q7azNAozU1Kg== dependencies: chalk "^4.0.0" - diff-sequences "^27.4.0" - jest-get-type "^27.4.0" - pretty-format "^27.4.2" + diff-sequences "^29.4.3" + jest-get-type "^29.4.3" + pretty-format "^29.6.1" -jest-diff@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.4.6.tgz#93815774d2012a2cbb6cf23f84d48c7a2618f98d" - integrity sha512-zjaB0sh0Lb13VyPsd92V7HkqF6yKRH9vm33rwBt7rPYrpQvS1nCvlIy2pICbKta+ZjWngYLNn4cCK4nyZkjS/w== +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== dependencies: chalk "^4.0.0" - diff-sequences "^27.4.0" - jest-get-type "^27.4.0" - pretty-format "^27.4.6" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" -jest-docblock@^27.4.0: - version "27.4.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.4.0.tgz#06c78035ca93cbbb84faf8fce64deae79a59f69f" - integrity sha512-7TBazUdCKGV7svZ+gh7C8esAnweJoG+SvcF6Cjqj4l17zA2q1cMwx2JObSioubk317H+cjcHgP+7fTs60paulg== +jest-docblock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== dependencies: detect-newline "^3.0.0" -jest-each@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.4.6.tgz#e7e8561be61d8cc6dbf04296688747ab186c40ff" - integrity sha512-n6QDq8y2Hsmn22tRkgAk+z6MCX7MeVlAzxmZDshfS2jLcaBlyhpF3tZSJLR+kXmh23GEvS0ojMR8i6ZeRvpQcA== +jest-each@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^29.6.3" chalk "^4.0.0" - jest-get-type "^27.4.0" - jest-util "^27.4.2" - pretty-format "^27.4.6" - -jest-environment-jsdom@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.4.6.tgz#c23a394eb445b33621dfae9c09e4c8021dea7b36" - integrity sha512-o3dx5p/kHPbUlRvSNjypEcEtgs6LmvESMzgRFQE6c+Prwl2JLA4RZ7qAnxc5VM8kutsGRTB15jXeeSbJsKN9iA== - dependencies: - "@jest/environment" "^27.4.6" - "@jest/fake-timers" "^27.4.6" - "@jest/types" "^27.4.2" + jest-get-type "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" + +jest-environment-node@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" - jest-mock "^27.4.6" - jest-util "^27.4.2" - jsdom "^16.6.0" - -jest-environment-node@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.4.6.tgz#ee8cd4ef458a0ef09d087c8cd52ca5856df90242" - integrity sha512-yfHlZ9m+kzTKZV0hVfhVu6GuDxKAYeFHrfulmy7Jxwsq4V7+ZK7f+c0XP/tbVDMQW7E4neG2u147hFkuVz0MlQ== - dependencies: - "@jest/environment" "^27.4.6" - "@jest/fake-timers" "^27.4.6" - "@jest/types" "^27.4.2" - "@types/node" "*" - jest-mock "^27.4.6" - jest-util "^27.4.2" - -jest-get-type@^27.4.0: - version "27.4.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.4.0.tgz#7503d2663fffa431638337b3998d39c5e928e9b5" - integrity sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ== - -jest-haste-map@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.4.6.tgz#c60b5233a34ca0520f325b7e2cc0a0140ad0862a" - integrity sha512-0tNpgxg7BKurZeFkIOvGCkbmOHbLFf4LUQOxrQSMjvrQaQe3l6E8x6jYC1NuWkGo5WDdbr8FEzUxV2+LWNawKQ== - dependencies: - "@jest/types" "^27.4.2" - "@types/graceful-fs" "^4.1.2" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +jest-get-type@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" + integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== + dependencies: + "@jest/types" "^29.6.3" + "@types/graceful-fs" "^4.1.3" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^27.4.0" - jest-serializer "^27.4.0" - jest-util "^27.4.2" - jest-worker "^27.4.6" + graceful-fs "^4.2.9" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" micromatch "^4.0.4" - walker "^1.0.7" + walker "^1.0.8" optionalDependencies: fsevents "^2.3.2" -jest-jasmine2@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.4.6.tgz#109e8bc036cb455950ae28a018f983f2abe50127" - integrity sha512-uAGNXF644I/whzhsf7/qf74gqy9OuhvJ0XYp8SDecX2ooGeaPnmJMjXjKt0mqh1Rl5dtRGxJgNrHlBQIBfS5Nw== +jest-leak-detector@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== + dependencies: + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-matcher-utils@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.6.1.tgz#6c60075d84655d6300c5d5128f46531848160b53" + integrity sha512-SLaztw9d2mfQQKHmJXKM0HCbl2PPVld/t9Xa6P9sgiExijviSp7TnZZpw2Fpt+OI3nwUO/slJbOfzfUMKKC5QA== dependencies: - "@jest/environment" "^27.4.6" - "@jest/source-map" "^27.4.0" - "@jest/test-result" "^27.4.6" - "@jest/types" "^27.4.2" - "@types/node" "*" chalk "^4.0.0" - co "^4.6.0" - expect "^27.4.6" - is-generator-fn "^2.0.0" - jest-each "^27.4.6" - jest-matcher-utils "^27.4.6" - jest-message-util "^27.4.6" - jest-runtime "^27.4.6" - jest-snapshot "^27.4.6" - jest-util "^27.4.2" - pretty-format "^27.4.6" - throat "^6.0.1" - -jest-leak-detector@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.4.6.tgz#ed9bc3ce514b4c582637088d9faf58a33bd59bf4" - integrity sha512-kkaGixDf9R7CjHm2pOzfTxZTQQQ2gHTIWKY/JZSiYTc90bZp8kSZnUMS3uLAfwTZwc0tcMRoEX74e14LG1WapA== - dependencies: - jest-get-type "^27.4.0" - pretty-format "^27.4.6" - -jest-matcher-utils@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.4.6.tgz#53ca7f7b58170638590e946f5363b988775509b8" - integrity sha512-XD4PKT3Wn1LQnRAq7ZsTI0VRuEc9OrCPFiO1XL7bftTGmfNF0DcEwMHRgqiu7NGf8ZoZDREpGrCniDkjt79WbA== + jest-diff "^29.6.1" + jest-get-type "^29.4.3" + pretty-format "^29.6.1" + +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== dependencies: chalk "^4.0.0" - jest-diff "^27.4.6" - jest-get-type "^27.4.0" - pretty-format "^27.4.6" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-message-util@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.6.1.tgz#d0b21d87f117e1b9e165e24f245befd2ff34ff8d" + integrity sha512-KoAW2zAmNSd3Gk88uJ56qXUWbFk787QKmjjJVOjtGFmmGSZgDBrlIL4AfQw1xyMYPNVD7dNInfIbur9B2rd/wQ== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.6.1" + slash "^3.0.0" + stack-utils "^2.0.3" -jest-message-util@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.4.6.tgz#9fdde41a33820ded3127465e1a5896061524da31" - integrity sha512-0p5szriFU0U74czRSFjH6RyS7UYIAkn/ntwMuOwTGWrQIOh5NzXXrq72LOqIkJKKvFbPq+byZKuBz78fjBERBA== +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.4.2" + "@jest/types" "^29.6.3" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" micromatch "^4.0.4" - pretty-format "^27.4.6" + pretty-format "^29.7.0" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.4.6.tgz#77d1ba87fbd33ccb8ef1f061697e7341b7635195" - integrity sha512-kvojdYRkst8iVSZ1EJ+vc1RRD9llueBjKzXzeCytH3dMM7zvPV/ULcfI2nr0v0VUgm3Bjt3hBCQvOeaBz+ZTHw== +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^29.6.3" "@types/node" "*" + jest-util "^29.7.0" 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" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== -jest-regex-util@^27.4.0: - version "27.4.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.4.0.tgz#e4c45b52653128843d07ad94aec34393ea14fbca" - integrity sha512-WeCpMpNnqJYMQoOjm1nTtsgbR4XHAk1u00qDoNBQoykM280+/TmgA5Qh5giC1ecy6a5d4hbSsHzpBtu5yvlbEg== +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== -jest-resolve-dependencies@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.6.tgz#fc50ee56a67d2c2183063f6a500cc4042b5e2327" - integrity sha512-W85uJZcFXEVZ7+MZqIPCscdjuctruNGXUZ3OHSXOfXR9ITgbUKeHj+uGcies+0SsvI5GtUfTw4dY7u9qjTvQOw== +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== dependencies: - "@jest/types" "^27.4.2" - jest-regex-util "^27.4.0" - jest-snapshot "^27.4.6" + jest-regex-util "^29.6.3" + jest-snapshot "^29.7.0" -jest-resolve@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.4.6.tgz#2ec3110655e86d5bfcfa992e404e22f96b0b5977" - integrity sha512-SFfITVApqtirbITKFAO7jOVN45UgFzcRdQanOFzjnbd+CACDoyeX7206JyU92l4cRr73+Qy/TlW51+4vHGt+zw== +jest-resolve@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== dependencies: - "@jest/types" "^27.4.2" chalk "^4.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^27.4.6" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" jest-pnp-resolver "^1.2.2" - jest-util "^27.4.2" - jest-validate "^27.4.6" + jest-util "^29.7.0" + jest-validate "^29.7.0" resolve "^1.20.0" - resolve.exports "^1.1.0" + resolve.exports "^2.0.0" slash "^3.0.0" -jest-runner@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.4.6.tgz#1d390d276ec417e9b4d0d081783584cbc3e24773" - integrity sha512-IDeFt2SG4DzqalYBZRgbbPmpwV3X0DcntjezPBERvnhwKGWTW7C5pbbA5lVkmvgteeNfdd/23gwqv3aiilpYPg== +jest-runner@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== dependencies: - "@jest/console" "^27.4.6" - "@jest/environment" "^27.4.6" - "@jest/test-result" "^27.4.6" - "@jest/transform" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/console" "^29.7.0" + "@jest/environment" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" - emittery "^0.8.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-docblock "^27.4.0" - jest-environment-jsdom "^27.4.6" - jest-environment-node "^27.4.6" - jest-haste-map "^27.4.6" - jest-leak-detector "^27.4.6" - jest-message-util "^27.4.6" - jest-resolve "^27.4.6" - jest-runtime "^27.4.6" - jest-util "^27.4.2" - jest-worker "^27.4.6" - source-map-support "^0.5.6" - throat "^6.0.1" - -jest-runtime@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.4.6.tgz#83ae923818e3ea04463b22f3597f017bb5a1cffa" - integrity sha512-eXYeoR/MbIpVDrjqy5d6cGCFOYBFFDeKaNWqTp0h6E74dK0zLHzASQXJpl5a2/40euBmKnprNLJ0Kh0LCndnWQ== - dependencies: - "@jest/environment" "^27.4.6" - "@jest/fake-timers" "^27.4.6" - "@jest/globals" "^27.4.6" - "@jest/source-map" "^27.4.0" - "@jest/test-result" "^27.4.6" - "@jest/transform" "^27.4.6" - "@jest/types" "^27.4.2" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.7.0" + jest-environment-node "^29.7.0" + jest-haste-map "^29.7.0" + jest-leak-detector "^29.7.0" + jest-message-util "^29.7.0" + jest-resolve "^29.7.0" + jest-runtime "^29.7.0" + jest-util "^29.7.0" + jest-watcher "^29.7.0" + jest-worker "^29.7.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/globals" "^29.7.0" + "@jest/source-map" "^29.6.3" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" 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.4" - jest-haste-map "^27.4.6" - jest-message-util "^27.4.6" - jest-mock "^27.4.6" - jest-regex-util "^27.4.0" - jest-resolve "^27.4.6" - jest-snapshot "^27.4.6" - jest-util "^27.4.2" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" slash "^3.0.0" strip-bom "^4.0.0" -jest-serializer@^27.4.0: - version "27.4.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.4.0.tgz#34866586e1cae2388b7d12ffa2c7819edef5958a" - integrity sha512-RDhpcn5f1JYTX2pvJAGDcnsNTnsV9bjYPU8xcV+xPwOXnUPOQwf4ZEuiU6G9H1UztH+OapMgu/ckEVwO87PwnQ== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.4" - -jest-snapshot@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.4.6.tgz#e2a3b4fff8bdce3033f2373b2e525d8b6871f616" - integrity sha512-fafUCDLQfzuNP9IRcEqaFAMzEe7u5BF7mude51wyWv7VRex60WznZIC7DfKTgSIlJa8aFzYmXclmN328aqSDmQ== +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== dependencies: - "@babel/core" "^7.7.2" + "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.0.0" - "@jest/transform" "^27.4.6" - "@jest/types" "^27.4.2" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.1.5" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^27.4.6" - graceful-fs "^4.2.4" - jest-diff "^27.4.6" - jest-get-type "^27.4.0" - jest-haste-map "^27.4.6" - jest-matcher-utils "^27.4.6" - jest-message-util "^27.4.6" - jest-util "^27.4.2" + expect "^29.7.0" + graceful-fs "^4.2.9" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" natural-compare "^1.4.0" - pretty-format "^27.4.6" - semver "^7.3.2" + pretty-format "^29.7.0" + semver "^7.5.3" + +jest-util@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.6.1.tgz#c9e29a87a6edbf1e39e6dee2b4689b8a146679cb" + integrity sha512-NRFCcjc+/uO3ijUVyNOQJluf8PtGCe/W6cix36+M3cTFgiYqFOOW5MgN4JOOcvbUhcKTYVd1CvHz/LWi8d16Mg== + dependencies: + "@jest/types" "^29.6.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" -jest-util@^27.0.0, jest-util@^27.4.2: - version "27.4.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.4.2.tgz#ed95b05b1adfd761e2cda47e0144c6a58e05a621" - integrity sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA== +jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.4.6.tgz#efc000acc4697b6cf4fa68c7f3f324c92d0c4f1f" - integrity sha512-872mEmCPVlBqbA5dToC57vA3yJaMRfIdpCoD3cyHWJOMx+SJwLNw0I71EkWs41oza/Er9Zno9XuTkRYCPDUJXQ== +jest-validate@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^29.6.3" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^27.4.0" + jest-get-type "^29.6.3" leven "^3.1.0" - pretty-format "^27.4.6" + pretty-format "^29.7.0" -jest-watcher@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.4.6.tgz#673679ebeffdd3f94338c24f399b85efc932272d" - integrity sha512-yKQ20OMBiCDigbD0quhQKLkBO+ObGN79MO4nT7YaCuQ5SM+dkBNWE8cZX0FjU6czwMvWw6StWbe+Wv4jJPJ+fw== +jest-watcher@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" + integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== dependencies: - "@jest/test-result" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^27.4.2" + emittery "^0.13.1" + jest-util "^29.7.0" string-length "^4.0.1" -jest-worker@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.4.6.tgz#5d2d93db419566cb680752ca0792780e71b3273e" - integrity sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw== +jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== dependencies: "@types/node" "*" + jest-util "^29.7.0" merge-stream "^2.0.0" supports-color "^8.0.0" -jest@27.4.7: - version "27.4.7" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.4.7.tgz#87f74b9026a1592f2da05b4d258e57505f28eca4" - integrity sha512-8heYvsx7nV/m8m24Vk26Y87g73Ba6ueUd0MWed/NXMhSZIm62U/llVbS0PJe1SHunbyXjJ/BqG1z9bFjGUIvTg== +jest@29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" + integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== dependencies: - "@jest/core" "^27.4.7" + "@jest/core" "^29.7.0" + "@jest/types" "^29.6.3" import-local "^3.0.2" - jest-cli "^27.4.7" + jest-cli "^29.7.0" js-base64@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.2.tgz#816d11d81a8aff241603d19ce5761e13e41d7745" - integrity sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ== + version "3.7.8" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.8.tgz#af44496bc09fa178ed9c4adf67eb2b46f5c6d2a4" + integrity sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow== -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" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -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-tokens@^3.0.0 || ^4.0.0", js-tokens@^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" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -7084,380 +3765,51 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdom@^16.6.0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" - integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== - 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" - -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@^3.0.2, jsesc@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== + jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= - -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" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-rpc-engine@^3.4.0, json-rpc-engine@^3.6.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-3.8.0.tgz#9d4ff447241792e1d0a232f6ef927302bb0c62a9" - integrity sha512-6QNcvm2gFuuK4TKU1uwfH0Qd/cOSb9c1lls0gbnIhciktIUQJwz6NQNAW4B1KiGPenv7IKu97V222Yo1bNhGuA== - dependencies: - async "^2.0.1" - babel-preset-env "^1.7.0" - babelify "^7.3.0" - json-rpc-error "^2.0.0" - promise-to-callback "^1.0.0" - safe-event-emitter "^1.0.1" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== -json-rpc-error@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/json-rpc-error/-/json-rpc-error-2.0.0.tgz#a7af9c202838b5e905c7250e547f1aff77258a02" - integrity sha1-p6+cICg4tekFxyUOVH8a/3cligI= - dependencies: - inherits "^2.0.1" +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== -json-rpc-random-id@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" - integrity sha1-uknZat7RRE27jaPSA3SKy7zeyMg= +json-parse-even-better-errors@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-4.0.0.tgz#d3f67bd5925e81d3e31aa466acc821c8375cec43" + integrity sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA== 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" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json-schema@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - 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" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= - dependencies: - jsonify "~0.0.0" - -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" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json5@2.x, json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= - -jsprim@^1.2.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - -just-extend@^4.0.2: - version "4.2.1" - resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.2.1.tgz#ef5e589afb61e5d66b24eca749409a8939a8c744" - integrity sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg== - -keccak@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" - integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -keccak@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" - integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - readable-stream "^3.6.0" - -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -klaw-sync@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" - integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== - dependencies: - graceful-fs "^4.1.11" - -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= - optionalDependencies: - graceful-fs "^4.1.9" +json5@^2.2.2, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - -level-codec@^9.0.0: - version "9.0.2" - resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.2.tgz#fd60df8c64786a80d44e63423096ffead63d8cbc" - integrity sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ== - dependencies: - buffer "^5.6.0" - -level-codec@~7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-7.0.1.tgz#341f22f907ce0f16763f24bddd681e395a0fb8a7" - integrity sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ== - -level-errors@^1.0.3: - version "1.1.2" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.1.2.tgz#4399c2f3d3ab87d0625f7e3676e2d807deff404d" - integrity sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w== - dependencies: - errno "~0.1.1" - -level-errors@^2.0.0, level-errors@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-2.0.1.tgz#2132a677bf4e679ce029f517c2f17432800c05c8" - integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw== - dependencies: - errno "~0.1.1" - -level-errors@~1.0.3: - version "1.0.5" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.0.5.tgz#83dbfb12f0b8a2516bdc9a31c4876038e227b859" - integrity sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig== - dependencies: - errno "~0.1.1" - -level-iterator-stream@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-2.0.3.tgz#ccfff7c046dcf47955ae9a86f46dfa06a31688b4" - integrity sha512-I6Heg70nfF+e5Y3/qfthJFexhRw/Gi3bIymCoXAlijZdAcLaPuWSJs3KXyTYf23ID6g0o2QF62Yh+grOXY3Rig== - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.5" - xtend "^4.0.0" - -level-iterator-stream@~1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz#e43b78b1a8143e6fa97a4f485eb8ea530352f2ed" - integrity sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0= - dependencies: - inherits "^2.0.1" - level-errors "^1.0.3" - readable-stream "^1.0.33" - xtend "^4.0.0" - -level-iterator-stream@~3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-3.0.1.tgz#2c98a4f8820d87cdacab3132506815419077c730" - integrity sha512-nEIQvxEED9yRThxvOrq8Aqziy4EGzrxSZK+QzEFAVuJvQ8glfyZ96GB6BoI4sBbLfjMXm2w4vu3Tkcm9obcY0g== - dependencies: - inherits "^2.0.1" - readable-stream "^2.3.6" - xtend "^4.0.0" - -level-mem@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/level-mem/-/level-mem-3.0.1.tgz#7ce8cf256eac40f716eb6489654726247f5a89e5" - integrity sha512-LbtfK9+3Ug1UmvvhR2DqLqXiPW1OJ5jEh0a3m9ZgAipiwpSxGj/qaVVy54RG5vAQN1nCuXqjvprCuKSCxcJHBg== - dependencies: - level-packager "~4.0.0" - memdown "~3.0.0" - -level-packager@~4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-4.0.1.tgz#7e7d3016af005be0869bc5fa8de93d2a7f56ffe6" - integrity sha512-svCRKfYLn9/4CoFfi+d8krOtrp6RoX8+xm0Na5cgXMqSyRru0AnDYdLl+YI8u1FyS6gGZ94ILLZDE5dh2but3Q== - dependencies: - encoding-down "~5.0.0" - levelup "^3.0.0" - -level-post@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/level-post/-/level-post-1.0.7.tgz#19ccca9441a7cc527879a0635000f06d5e8f27d0" - integrity sha512-PWYqG4Q00asOrLhX7BejSajByB4EmG2GaKHfj3h5UmmZ2duciXLPGYWIjBzLECFWUGOZWlm5B20h/n3Gs3HKew== - dependencies: - ltgt "^2.1.2" - -level-sublevel@6.6.4: - version "6.6.4" - resolved "https://registry.yarnpkg.com/level-sublevel/-/level-sublevel-6.6.4.tgz#f7844ae893919cd9d69ae19d7159499afd5352ba" - integrity sha512-pcCrTUOiO48+Kp6F1+UAzF/OtWqLcQVTVF39HLdZ3RO8XBoXt+XVPKZO1vVr1aUoxHZA9OtD2e1v7G+3S5KFDA== - dependencies: - bytewise "~1.1.0" - level-codec "^9.0.0" - level-errors "^2.0.0" - level-iterator-stream "^2.0.3" - ltgt "~2.1.1" - pull-defer "^0.2.2" - pull-level "^2.0.3" - pull-stream "^3.6.8" - typewiselite "~1.0.0" - xtend "~4.0.0" - -level-ws@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-0.0.0.tgz#372e512177924a00424b0b43aef2bb42496d228b" - integrity sha1-Ny5RIXeSSgBCSwtDrvK7QkltIos= - dependencies: - readable-stream "~1.0.15" - xtend "~2.1.1" - -level-ws@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-1.0.0.tgz#19a22d2d4ac57b18cc7c6ecc4bd23d899d8f603b" - integrity sha512-RXEfCmkd6WWFlArh3X8ONvQPm8jNpfA0s/36M4QzLqrLEIt1iJE9WBHLZ5vZJK6haMjJPJGJCQWfjMNnRcq/9Q== - dependencies: - inherits "^2.0.3" - readable-stream "^2.2.8" - xtend "^4.0.1" - -levelup@3.1.1, levelup@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-3.1.1.tgz#c2c0b3be2b4dc316647c53b42e2f559e232d2189" - integrity sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg== - dependencies: - deferred-leveldown "~4.0.0" - level-errors "~2.0.0" - level-iterator-stream "~3.0.0" - xtend "~4.0.0" - -levelup@^1.2.1: - version "1.3.9" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.9.tgz#2dbcae845b2bb2b6bea84df334c475533bbd82ab" - integrity sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ== - dependencies: - deferred-leveldown "~1.2.1" - level-codec "~7.0.0" - level-errors "~1.0.3" - level-iterator-stream "~1.3.0" - prr "~1.0.1" - semver "~5.4.1" - xtend "~4.0.0" - leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -7471,72 +3823,43 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lilconfig@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" - integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== - -lint-staged@12.3.3: - version "12.3.3" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-12.3.3.tgz#0a465962fe53baa2b4b9da50801ead49a910e03b" - integrity sha512-OqcLsqcPOqzvsfkxjeBpZylgJ3SRG1RYqc9LxC6tkt6tNsq1bNVkAixBwX09f6CobcHswzqVOCBpFR1Fck0+ag== - dependencies: - cli-truncate "^3.1.0" - colorette "^2.0.16" - commander "^8.3.0" - debug "^4.3.3" - execa "^5.1.1" - lilconfig "2.0.4" - listr2 "^4.0.1" - micromatch "^4.0.4" - normalize-path "^3.0.0" - object-inspect "^1.12.0" - string-argv "^0.3.1" - supports-color "^9.2.1" - yaml "^1.10.2" - -listr2@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-4.0.1.tgz#e050c1fd390276e191f582603d6e3531cd6fd2b3" - integrity sha512-D65Nl+zyYHL2jQBGmxtH/pU8koPZo5C8iCNE8EoB04RwPgQG1wuaKwVbeZv9LJpiH4Nxs0FCp+nNcG8OqpniiA== - dependencies: - cli-truncate "^2.1.0" - colorette "^2.0.16" - log-update "^4.0.0" - p-map "^4.0.0" - rfdc "^1.3.0" - rxjs "^7.5.2" - through "^2.3.8" - wrap-ansi "^7.0.0" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" +lilconfig@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4" + integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw== -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" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +lint-staged@15.5.2: + version "15.5.2" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.5.2.tgz#beff028fd0681f7db26ffbb67050a21ed4d059a3" + integrity sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w== + dependencies: + chalk "^5.4.1" + commander "^13.1.0" + debug "^4.4.0" + execa "^8.0.1" + lilconfig "^3.1.3" + listr2 "^8.2.5" + micromatch "^4.0.8" + pidtree "^0.6.0" + string-argv "^0.3.2" + yaml "^2.7.0" + +listr2@^8.2.5: + version "8.2.5" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-8.2.5.tgz#5c9db996e1afeb05db0448196d3d5f64fec2593d" + integrity sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ== + dependencies: + cli-truncate "^4.0.0" + colorette "^2.0.20" + eventemitter3 "^5.0.1" + log-update "^6.1.0" + rfdc "^1.4.1" + wrap-ansi "^9.0.0" locate-path@^5.0.0: version "5.0.0" @@ -7545,91 +3868,38 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash.assign@^4.0.3, lodash.assign@^4.0.6: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" - integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + 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" - 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" - integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== -lodash.memoize@4.x: +lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@4.17.20: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== - -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.7.0: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-update@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== - dependencies: - ansi-escapes "^4.3.0" - cli-cursor "^3.1.0" - slice-ansi "^4.0.0" - wrap-ansi "^6.2.0" - -looper@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/looper/-/looper-2.0.0.tgz#66cd0c774af3d4fedac53794f742db56da8f09ec" - integrity sha1-Zs0Md0rz1P7axTeU90LbVtqPCew= - -looper@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/looper/-/looper-3.0.0.tgz#2efa54c3b1cbaba9b94aee2e5914b0be57fbb749" - integrity sha1-LvpUw7HLq6m5Su4uWRSwvlf7t0k= - -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -lru-cache@5.1.1, lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee" - integrity sha1-cXibO39Tmb7IVl3aOKow0qCX7+4= +log-update@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-6.1.0.tgz#1a04ff38166f94647ae1af562f4bd6a15b1b7cd4" + integrity sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w== dependencies: - pseudomap "^1.0.1" + ansi-escapes "^7.0.0" + cli-cursor "^5.0.0" + slice-ansi "^7.1.0" + strip-ansi "^7.1.0" + wrap-ansi "^9.0.0" lru-cache@^4.0.1: version "4.1.5" @@ -7639,6 +3909,13 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -7646,22 +3923,17 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -ltgt@^2.1.2, ltgt@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" - integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU= - -ltgt@~2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.1.3.tgz#10851a06d9964b971178441c23c9e52698eece34" - integrity sha1-EIUaBtmWS5cReEQcI8nlJpjuzjQ= +"lru-cache@^9.1.1 || ^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61" + integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== -magic-string@^0.25.7: - version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== +magic-string@^0.30.17: + version "0.30.17" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453" + integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA== dependencies: - sourcemap-codec "^1.4.4" + "@jridgewell/sourcemap-codec" "^1.5.0" make-dir@^3.0.0: version "3.1.0" @@ -7670,7 +3942,7 @@ make-dir@^3.0.0: dependencies: semver "^6.0.0" -make-error@1.x: +make-error@^1.3.6: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== @@ -7682,436 +3954,151 @@ makeerror@1.0.12: dependencies: tmpl "1.0.5" -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -matched@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/matched/-/matched-5.0.1.tgz#620606d9dac6b7f4e955354b82e02ef4e3a62dc3" - integrity sha512-E1fhSTPRyhAlNaNvGXAgZQlq1hL0bgYMTk/6bktVlIhzUnX/SZs7296ACdVeNJE8xFNGSuvd9IpI7vSnmcqLvw== - dependencies: - glob "^7.1.6" - picomatch "^2.2.1" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -memdown@^1.0.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" - integrity sha1-tOThkhdGZP+65BNhqlAPMRnv4hU= - dependencies: - abstract-leveldown "~2.7.1" - functional-red-black-tree "^1.0.1" - immediate "^3.2.3" - inherits "~2.0.1" - ltgt "~2.2.0" - safe-buffer "~5.1.1" - -memdown@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/memdown/-/memdown-3.0.0.tgz#93aca055d743b20efc37492e9e399784f2958309" - integrity sha512-tbV02LfZMWLcHcq4tw++NuqMO+FZX8tNJEiD2aNRm48ZZusVg5N8NART+dmBkepJVye986oixErf7jfXboMGMA== - dependencies: - abstract-leveldown "~5.0.0" - functional-red-black-tree "~1.0.1" - immediate "~3.2.3" - inherits "~2.0.1" - ltgt "~2.2.0" - safe-buffer "~5.1.1" - memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" - integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0: +merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -merkle-patricia-tree@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-3.0.0.tgz#448d85415565df72febc33ca362b8b614f5a58f8" - integrity sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ== - dependencies: - async "^2.6.1" - ethereumjs-util "^5.2.0" - level-mem "^3.0.1" - level-ws "^1.0.0" - readable-stream "^3.0.6" - rlp "^2.0.0" - semaphore ">=1.0.1" - -merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz#982ca1b5a0fde00eed2f6aeed1f9152860b8208a" - integrity sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g== - dependencies: - async "^1.4.2" - ethereumjs-util "^5.0.0" - level-ws "0.0.0" - levelup "^1.2.1" - memdown "^1.0.0" - readable-stream "^2.0.0" - rlp "^2.0.0" - semaphore ">=1.0.1" - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.51.0: - version "1.51.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" - integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== + braces "^3.0.2" + picomatch "^2.3.1" -mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.34" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" - integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== +micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== dependencies: - mime-db "1.51.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + braces "^3.0.3" + picomatch "^2.3.1" mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= - dependencies: - dom-walk "^0.1.0" - -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" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== -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" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= +mimic-function@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/mimic-function/-/mimic-function-5.0.1.tgz#acbe2b3349f99b9deaca7fb70e48b83e94e67076" + integrity sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA== -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minipass@^2.6.0, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp-promise@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" - integrity sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE= +minimatch@^9.0.0, minimatch@^9.0.1: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== dependencies: - mkdirp "*" - -mkdirp@*: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + brace-expansion "^2.0.1" -mkdirp@^0.5.1, mkdirp@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== +minimatch@^9.0.4: + version "9.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" + integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== dependencies: - minimist "^1.2.5" + brace-expansion "^2.0.1" -mock-fs@^4.1.0: - version "4.14.0" - resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" - integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== +minimist@^1.2.5: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.0.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.2.tgz#58a82b7d81c7010da5bd4b2c0c85ac4b4ec5131e" + integrity sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA== ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.1.1: +ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multibase@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" - integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multibase@~0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" - integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multicodec@^0.5.5: - version "0.5.7" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" - integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== - dependencies: - varint "^5.0.0" - -multicodec@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" - integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== - dependencies: - buffer "^5.6.0" - varint "^5.0.0" - -multihashes@^0.4.15, multihashes@~0.4.15: - version "0.4.21" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" - integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== - dependencies: - buffer "^5.5.0" - multibase "^0.7.0" - varint "^5.0.0" - -nano-json-stream-parser@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" - integrity sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18= - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -next-tick@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -nise@^4.0.4: - version "4.1.0" - resolved "https://registry.yarnpkg.com/nise/-/nise-4.1.0.tgz#8fb75a26e90b99202fa1e63f448f58efbcdedaf6" - integrity sha512-eQMEmGN/8arp0xsvGoQ+B1qvSkR73B1nWSCh7nOt5neMCtwcQVYQGdzQMhcNscktTsWB54xnlSQFzOAPJD8nXA== - dependencies: - "@sinonjs/commons" "^1.7.0" - "@sinonjs/fake-timers" "^6.0.0" - "@sinonjs/text-encoding" "^0.7.1" - just-extend "^4.0.2" - path-to-regexp "^1.7.0" - -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" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== - -node-fetch@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -node-fetch@^2.6.1: - version "2.6.6" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.6.tgz#1751a7c01834e8e1697758732e9efb6eeadfaf89" - integrity sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA== - dependencies: - whatwg-url "^5.0.0" - -node-fetch@~1.7.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" - integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== - dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" - integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-releases@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" - integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== +node-releases@^2.0.12: + version "2.0.13" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + +node-releases@^2.0.19: + version "2.0.19" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-url@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== +npm-normalize-package-bin@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-4.0.0.tgz#df79e70cd0a113b77c02d1fe243c96b8e618acb1" + integrity sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w== -npm-run-all@4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" - integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== +npm-run-all2@7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/npm-run-all2/-/npm-run-all2-7.0.2.tgz#26155c140b5e3f1155efd7f5d67212c8027b397c" + integrity sha512-7tXR+r9hzRNOPNTvXegM+QzCuMjzUIIq66VDunL6j60O4RrExx32XUhlrS7UK4VcdGw5/Wxzb3kfNcFix9JKDA== dependencies: - ansi-styles "^3.2.1" - chalk "^2.4.1" - cross-spawn "^6.0.5" + ansi-styles "^6.2.1" + cross-spawn "^7.0.6" memorystream "^0.3.1" - minimatch "^3.0.4" - pidtree "^0.3.0" - read-pkg "^3.0.0" - shell-quote "^1.6.1" - string.prototype.padend "^3.0.0" + minimatch "^9.0.0" + pidtree "^0.6.0" + read-package-json-fast "^4.0.0" + shell-quote "^1.7.3" + which "^5.0.0" npm-run-path@^4.0.1: version "4.0.1" @@ -8120,205 +4107,57 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -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" - integrity sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA= - dependencies: - bn.js "4.11.6" - strip-hex-prefix "1.0.0" - -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4, object-assign@^4.0.0, 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" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.11.0, object-inspect@^1.9.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" - integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== - -object-inspect@^1.12.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-inspect@~1.11.0: - version "1.11.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.1.tgz#d4bd7d7de54b9a75599f59a00bd698c1f1c6549b" - integrity sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA== - -object-is@^1.0.1: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-keys@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" - integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0, object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.getownpropertydescriptors@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" - integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -oboe@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6" - integrity sha1-IMiM2wwVNxuwQRklfU/dNLCqSfY= - dependencies: - http-https "^1.0.0" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= +npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== dependencies: - ee-first "1.1.1" + path-key "^4.0.0" -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" -onetime@^5.1.0, onetime@^5.1.2: +onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" -open@^7.4.2: - version "7.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" + mimic-fn "^4.0.0" -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== +onetime@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-7.0.0.tgz#9f16c92d8c9ef5120e3acd9dd9957cceecc1ab60" + integrity sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ== 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" + mimic-function "^5.0.0" -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" os-shim@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" - integrity sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc= - -os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -p-cancelable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" - integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== - -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + integrity sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A== p-limit@^2.2.0: version "2.3.0" @@ -8327,6 +4166,13 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.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" @@ -8334,19 +4180,12 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-timeout@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" - integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: - p-finally "^1.0.0" + p-limit "^3.0.2" p-try@^2.0.0: version "2.2.0" @@ -8360,216 +4199,83 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-headers@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.4.tgz#9eaf2d02bed2d1eff494331ce3df36d7924760bf" - integrity sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw== - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: + "@babel/code-frame" "^7.0.0" error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse5@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -patch-package@6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.2.2.tgz#71d170d650c65c26556f0d0fbbb48d92b6cc5f39" - integrity sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg== - dependencies: - "@yarnpkg/lockfile" "^1.1.0" - chalk "^2.4.2" - cross-spawn "^6.0.5" - find-yarn-workspace-root "^1.2.1" - fs-extra "^7.0.1" - is-ci "^2.0.0" - klaw-sync "^6.0.0" - minimist "^1.2.0" - rimraf "^2.6.3" - semver "^5.6.0" - slash "^2.0.0" - tmp "^0.0.33" - -patch-package@^6.2.2: - version "6.4.7" - resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.4.7.tgz#2282d53c397909a0d9ef92dae3fdeb558382b148" - integrity sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ== - dependencies: - "@yarnpkg/lockfile" "^1.1.0" - chalk "^2.4.2" - cross-spawn "^6.0.5" - find-yarn-workspace-root "^2.0.0" - fs-extra "^7.0.1" - is-ci "^2.0.0" - klaw-sync "^6.0.0" - minimist "^1.2.0" - open "^7.4.2" - rimraf "^2.6.3" - semver "^5.6.0" - slash "^2.0.0" - tmp "^0.0.33" - -path-browserify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" - integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - dependencies: - pinkie-promise "^2.0.0" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +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" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 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" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6, path-parse@^1.0.7: +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + +path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== +path-scurry@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== dependencies: - pify "^3.0.0" + lru-cache "^9.1.1 || ^10.0.0" + minipass "^5.0.0 || ^6.0.2 || ^7.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" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - 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" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== - -pidtree@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" - integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== - -pify@^2.0.0, pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= +picocolors@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" +picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= +pidtree@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" + integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== pirates@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.4.tgz#07df81e61028e402735cdd49db701e4885b4e6e6" - integrity sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw== + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== pkg-dir@^4.2.0: version "4.2.0" @@ -8578,97 +4284,48 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postinstall-postinstall@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" - integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== - pre-commit@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/pre-commit/-/pre-commit-1.2.2.tgz#dbcee0ee9de7235e57f79c56d7ce94641a69eec6" - integrity sha1-287g7p3nI15X95xW186UZBpp7sY= + integrity sha512-qokTiqxD6GjODy5ETAIgzsRgnBWWQHQH2ghy86PU7mIn/wuWeTwF3otyNQZxWBwVn8XNr8Tdzj/QfUXpH+gRZA== dependencies: cross-spawn "^5.0.1" spawn-sync "^1.0.15" which "1.2.x" -precond@0.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" - integrity sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw= - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 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" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= - -prettier@2.5.1, prettier@^2.1.2: - version "2.5.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" - integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== +prettier@3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.6.2.tgz#ccda02a1003ebbb2bfda6f83a074978f608b9393" + integrity sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ== -pretty-format@^27.0.0, pretty-format@^27.4.2: - version "27.4.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.4.2.tgz#e4ce92ad66c3888423d332b40477c87d1dac1fb8" - integrity sha512-p0wNtJ9oLuvgOQDEIZ9zQjZffK7KtyR6Si0jnXULIDwrlNF8Cuir3AZP0hHv0jmKuNN/edOnbMjnzd4uTcmWiw== +pretty-format@^29.0.0, pretty-format@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.6.1.tgz#ec838c288850b7c4f9090b867c2d4f4edbfb0f3e" + integrity sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog== dependencies: - "@jest/types" "^27.4.2" - ansi-regex "^5.0.1" + "@jest/schemas" "^29.6.0" ansi-styles "^5.0.0" - react-is "^17.0.1" + react-is "^18.0.0" -pretty-format@^27.4.6: - version "27.4.6" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.4.6.tgz#1b784d2f53c68db31797b2348fa39b49e31846b7" - integrity sha512-NblstegA1y/RJW2VyML+3LlpFjzx62cUrtBIKIWDXEDkjNeleA7Od7nrzcs/VLQvAeV4CgSYhrN39DRN88Qi/g== +pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== dependencies: - ansi-regex "^5.0.1" + "@jest/schemas" "^29.6.3" ansi-styles "^5.0.0" - react-is "^17.0.1" - -private@^0.1.6, private@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + react-is "^18.0.0" 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" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -promise-to-callback@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/promise-to-callback/-/promise-to-callback-1.0.0.tgz#5d2a749010bfb67d963598fcd3960746a68feef7" - integrity sha1-XSp0kBC/tn2WNZj805YHRqaP7vc= - dependencies: - is-fn "^1.0.0" - set-immediate-shim "^1.0.1" - prompts@^2.0.1: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -8677,226 +4334,53 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -pseudomap@^1.0.1, pseudomap@^1.0.2: +pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -psl@^1.1.28, psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pull-cat@^1.1.9: - version "1.1.11" - resolved "https://registry.yarnpkg.com/pull-cat/-/pull-cat-1.1.11.tgz#b642dd1255da376a706b6db4fa962f5fdb74c31b" - integrity sha1-tkLdElXaN2pwa220+pYvX9t0wxs= - -pull-defer@^0.2.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/pull-defer/-/pull-defer-0.2.3.tgz#4ee09c6d9e227bede9938db80391c3dac489d113" - integrity sha512-/An3KE7mVjZCqNhZsr22k1Tx8MACnUnHZZNPSJ0S62td8JtYr/AiRG42Vz7Syu31SoTLUzVIe61jtT/pNdjVYA== - -pull-level@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pull-level/-/pull-level-2.0.4.tgz#4822e61757c10bdcc7cf4a03af04c92734c9afac" - integrity sha512-fW6pljDeUThpq5KXwKbRG3X7Ogk3vc75d5OQU/TvXXui65ykm+Bn+fiktg+MOx2jJ85cd+sheufPL+rw9QSVZg== - dependencies: - level-post "^1.0.7" - pull-cat "^1.1.9" - pull-live "^1.0.1" - pull-pushable "^2.0.0" - pull-stream "^3.4.0" - pull-window "^2.1.4" - stream-to-pull-stream "^1.7.1" - -pull-live@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/pull-live/-/pull-live-1.0.1.tgz#a4ecee01e330155e9124bbbcf4761f21b38f51f5" - integrity sha1-pOzuAeMwFV6RJLu89HYfIbOPUfU= - dependencies: - pull-cat "^1.1.9" - pull-stream "^3.4.0" - -pull-pushable@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/pull-pushable/-/pull-pushable-2.2.0.tgz#5f2f3aed47ad86919f01b12a2e99d6f1bd776581" - integrity sha1-Xy867UethpGfAbEqLpnW8b13ZYE= - -pull-stream@^3.2.3, pull-stream@^3.4.0, pull-stream@^3.6.8: - version "3.6.14" - resolved "https://registry.yarnpkg.com/pull-stream/-/pull-stream-3.6.14.tgz#529dbd5b86131f4a5ed636fdf7f6af00781357ee" - integrity sha512-KIqdvpqHHaTUA2mCYcLG1ibEbu/LCKoJZsBWyv9lSYtPkJPBq8m3Hxa103xHi6D2thj5YXa0TqK3L3GUkwgnew== - -pull-window@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/pull-window/-/pull-window-2.1.4.tgz#fc3b86feebd1920c7ae297691e23f705f88552f0" - integrity sha1-/DuG/uvRkgx64pdpHiP3BfiFUvA= - dependencies: - looper "^2.0.0" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" - integrity sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0= - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -qs@6.9.6: - version "6.9.6" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" - integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== + integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - -query-string@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" - integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== - dependencies: - decode-uri-component "^0.2.0" - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" +punycode@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= +pure-rand@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.2.tgz#a9c2ddcae9b68d736a8163036f088a2781c8b306" + integrity sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ== queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -ramda@^0.27.1: - version "0.27.2" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.2.tgz#84463226f7f36dc33592f6f4ed6374c48306c3f1" - integrity sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA== - -ramda@^0.28.0: - version "0.28.0" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.28.0.tgz#acd785690100337e8b063cab3470019be427cc97" - integrity sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.0.6, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.2.tgz#baf3e9c21eebced59dd6533ac872b71f7b61cb32" - integrity sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ== - dependencies: - bytes "3.1.1" - http-errors "1.8.1" - iconv-lite "0.4.24" - unpipe "1.0.0" - -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" +ramda@^0.29.0: + version "0.29.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.29.1.tgz#408a6165b9555b7ba2fc62555804b6c5a2eca196" + integrity sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA== -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" +ramda@^0.31.0: + version "0.31.3" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.31.3.tgz#0f54199ec99a7bd6702277d28d6bf7f93b916bb9" + integrity sha512-xKADKRNnqmDdX59PPKLm3gGmk1ZgNnj3k7DryqWwkamp4TJ6B36DdpyKEQ0EoEYmH2R62bV4Q+S0ym2z8N2f3Q== -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -readable-stream@^1.0.33: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= +read-package-json-fast@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-4.0.0.tgz#8ccbc05740bb9f58264f400acc0b4b4eee8d1b39" + integrity sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg== dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" + json-parse-even-better-errors "^4.0.0" + npm-normalize-package-bin "^4.0.0" -readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== +readable-stream@^2.2.2: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -8906,191 +4390,72 @@ readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.2.2, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@~1.0.15: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= +regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" + regenerate "^1.4.2" -regenerate-unicode-properties@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326" - integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA== +regenerate-unicode-properties@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz#626e39df8c372338ea9b8028d1f99dc3fd9c3db0" + integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA== dependencies: regenerate "^1.4.2" -regenerate@^1.2.1, regenerate@^1.4.2: +regenerate@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" 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" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-runtime@^0.13.4: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== - -regenerator-transform@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" - integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== - dependencies: - "@babel/runtime" "^7.8.4" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp.prototype.flags@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" -regexpu-core@^4.7.1: - version "4.8.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0" - integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg== +regexpu-core@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.2.0.tgz#0e5190d79e542bf294955dccabae04d3c7d53826" + integrity sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA== dependencies: regenerate "^1.4.2" - regenerate-unicode-properties "^9.0.0" - regjsgen "^0.5.2" - regjsparser "^0.7.0" + regenerate-unicode-properties "^10.2.0" + regjsgen "^0.8.0" + regjsparser "^0.12.0" unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= + unicode-match-property-value-ecmascript "^2.1.0" -regjsgen@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== +regjsgen@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" + integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= +regjsparser@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.12.0.tgz#0e846df6c6530586429377de56e0475583b088dc" + integrity sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ== dependencies: - jsesc "~0.5.0" + jsesc "~3.0.2" -regjsparser@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968" - integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ== +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== dependencies: jsesc "~0.5.0" -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - dependencies: - is-finite "^1.0.0" - -request@^2.79.0, request@^2.85.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-from-string@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" - integrity sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg= - -require-from-string@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== resolve-cwd@^3.0.0: version "3.0.0" @@ -9109,113 +4474,97 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve.exports@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" - integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== - -resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@~1.20.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" +resolve.exports@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== -resolve@^1.8.1: - version "1.21.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f" - integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA== +resolve@^1.20.0, resolve@^1.22.1: + version "1.22.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== dependencies: - is-core-module "^2.8.0" + is-core-module "^2.11.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= - dependencies: - lowercase-keys "^1.0.0" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== +resolve@^1.22.10: + version "1.22.10" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" -resumer@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" - integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= +restore-cursor@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-5.1.0.tgz#0766d95699efacb14150993f55baf0953ea1ebe7" + integrity sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA== dependencies: - through "~2.3.4" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + onetime "^7.0.0" + signal-exit "^4.1.0" reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rfdc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" - integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== +rfdc@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" + integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== + +rimraf@5.0.10: + version "5.0.10" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.10.tgz#23b9843d3dc92db71f96e1a2ce92e39fd2a8221c" + integrity sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ== + dependencies: + glob "^10.3.7" -rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" -rimraf@^2.2.8, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - 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" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3, rlp@^2.2.4: - version "2.2.7" - resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" - integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== - dependencies: - bn.js "^5.2.0" - -rollup-plugin-dts@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-dts/-/rollup-plugin-dts-4.1.0.tgz#63b1e7de3970bb6d50877e60df2150a3892bc49c" - integrity sha512-rriXIm3jdUiYeiAAd1Fv+x2AxK6Kq6IybB2Z/IdoAW95fb4uRUurYsEYKa8L1seedezDeJhy8cfo8FEL9aZzqg== +rollup-plugin-dts@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-dts/-/rollup-plugin-dts-6.2.1.tgz#120a40734f740115da44931d7915a370fe420701" + integrity sha512-sR3CxYUl7i2CHa0O7bA45mCrgADyAQ0tVtGSqi3yvH28M+eg1+g5d7kQ9hLvEz5dorK3XVsH5L2jwHLQf72DzA== dependencies: - magic-string "^0.25.7" + magic-string "^0.30.17" optionalDependencies: - "@babel/code-frame" "^7.16.0" + "@babel/code-frame" "^7.26.2" -rollup@2.66.1: - version "2.66.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.66.1.tgz#366b0404de353c4331d538c3ad2963934fcb4937" - integrity sha512-crSgLhSkLMnKr4s9iZ/1qJCplgAgrRY+igWv8KhG/AjKOJ0YX/WpmANyn8oxrw+zenF3BXWDLa7Xl/QZISH+7w== +rollup@4.46.2: + version "4.46.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.46.2.tgz#09b1a45d811e26d09bed63dc3ecfb6831c16ce32" + integrity sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg== + dependencies: + "@types/estree" "1.0.8" optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.46.2" + "@rollup/rollup-android-arm64" "4.46.2" + "@rollup/rollup-darwin-arm64" "4.46.2" + "@rollup/rollup-darwin-x64" "4.46.2" + "@rollup/rollup-freebsd-arm64" "4.46.2" + "@rollup/rollup-freebsd-x64" "4.46.2" + "@rollup/rollup-linux-arm-gnueabihf" "4.46.2" + "@rollup/rollup-linux-arm-musleabihf" "4.46.2" + "@rollup/rollup-linux-arm64-gnu" "4.46.2" + "@rollup/rollup-linux-arm64-musl" "4.46.2" + "@rollup/rollup-linux-loongarch64-gnu" "4.46.2" + "@rollup/rollup-linux-ppc64-gnu" "4.46.2" + "@rollup/rollup-linux-riscv64-gnu" "4.46.2" + "@rollup/rollup-linux-riscv64-musl" "4.46.2" + "@rollup/rollup-linux-s390x-gnu" "4.46.2" + "@rollup/rollup-linux-x64-gnu" "4.46.2" + "@rollup/rollup-linux-x64-musl" "4.46.2" + "@rollup/rollup-win32-arm64-msvc" "4.46.2" + "@rollup/rollup-win32-ia32-msvc" "4.46.2" + "@rollup/rollup-win32-x64-msvc" "4.46.2" fsevents "~2.3.2" run-parallel@^1.1.9: @@ -9225,194 +4574,37 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rustbn.js@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" - integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== - -rxjs@^7.5.2: - version "7.5.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.2.tgz#11e4a3a1dfad85dbf7fb6e33cbba17668497490b" - integrity sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w== - dependencies: - tslib "^2.1.0" - -safe-buffer@5.2.1, 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.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - 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" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-event-emitter@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz#5b692ef22329ed8f69fdce607e50ca734f6f20af" - integrity sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg== - dependencies: - events "^3.0.0" - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - -scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== - -scryptsy@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-1.2.1.tgz#a3225fa4b2524f802700761e2855bdf3b2d92163" - integrity sha1-oyJfpLJST4AnAHYeKFW987LZIWM= - dependencies: - pbkdf2 "^3.0.3" - -secp256k1@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" - integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== - dependencies: - elliptic "^6.5.4" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -seedrandom@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.1.tgz#eb3dde015bcf55df05a233514e5df44ef9dce083" - integrity sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg== - -semaphore@>=1.0.1, semaphore@^1.0.3, semaphore@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" - integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== - -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== +semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@7.x, semver@^7.3.2, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== +semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" -semver@^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" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@~5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" - integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== - -send@0.17.2: - version "0.17.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" - integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "1.8.1" - mime "1.6.0" - ms "2.1.3" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serve-static@1.14.2: - version "1.14.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" - integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.2" - -servify@^0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95" - integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== - dependencies: - body-parser "^1.16.0" - cors "^2.8.1" - express "^4.14.0" - request "^2.79.0" - xhr "^2.3.3" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== +semver@^7.6.0: + version "7.6.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== -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" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" +semver@^7.7.2: + version "7.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== dependencies: shebang-regex "^1.0.0" @@ -9426,96 +4618,43 @@ shebang-command@^2.0.0: shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.6.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" - integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== +shell-quote@^1.7.3: + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== -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.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -signal-exit@^3.0.2, signal-exit@^3.0.3: - version "3.0.6" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" - integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== +signal-exit@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.0.2.tgz#ff55bb1d9ff2114c13b400688fa544ac63c36967" + integrity sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q== -simple-concat@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" - integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== - -simple-get@^2.7.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d" - integrity sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw== - dependencies: - decompress-response "^3.3.0" - once "^1.3.1" - simple-concat "^1.0.0" - -sinon@9.2.4: - version "9.2.4" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-9.2.4.tgz#e55af4d3b174a4443a8762fa8421c2976683752b" - integrity sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg== - dependencies: - "@sinonjs/commons" "^1.8.1" - "@sinonjs/fake-timers" "^6.0.1" - "@sinonjs/samsam" "^5.3.1" - diff "^4.0.2" - nise "^4.0.4" - supports-color "^7.1.0" +signal-exit@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - slice-ansi@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" @@ -9524,218 +4663,51 @@ slice-ansi@^5.0.0: ansi-styles "^6.0.0" is-fullwidth-code-point "^4.0.0" -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -solc@^0.4.20: - version "0.4.26" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.26.tgz#5390a62a99f40806b86258c737c1cf653cc35cb5" - integrity sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA== - dependencies: - fs-extra "^0.30.0" - memorystream "^0.3.1" - require-from-string "^1.1.0" - semver "^5.3.0" - yargs "^4.7.1" - -solc@^0.6.3: - version "0.6.12" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.6.12.tgz#48ac854e0c729361b22a7483645077f58cba080e" - integrity sha512-Lm0Ql2G9Qc7yPP2Ba+WNmzw2jwsrd3u4PobHYlSOxaut3TtUbj9+5ZrT6f4DUpNPEoBaFUOEg9Op9C0mk7ge9g== - dependencies: - command-exists "^1.2.8" - commander "3.0.2" - fs-extra "^0.30.0" - js-sha3 "0.8.0" - memorystream "^0.3.1" - require-from-string "^2.0.0" - semver "^5.5.0" - tmp "0.0.33" - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@0.5.12: - version "0.5.12" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" - integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== +slice-ansi@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-7.1.0.tgz#cd6b4655e298a8d1bdeb04250a433094b347b9a9" + integrity sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg== dependencies: - source-map "^0.5.6" + ansi-styles "^6.2.1" + is-fullwidth-code-point "^5.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" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, 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" 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" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -sourcemap-codec@^1.4.4: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - spawn-sync@^1.0.15: version "1.0.15" resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-1.0.15.tgz#b00799557eb7fb0c8376c29d44e8a1ea67e57476" - integrity sha1-sAeZVX63+wyDdsKdROih6mfldHY= + integrity sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw== dependencies: concat-stream "^1.4.7" os-shim "^0.1.2" -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^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" - 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" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.11" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" - integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== stack-utils@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" - integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== dependencies: escape-string-regexp "^2.0.0" -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -stream-to-pull-stream@^1.7.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz#4161aa2d2eb9964de60bfa1af7feaf917e874ece" - integrity sha512-6sNyqJpr5dIOQdgNy/xcDWwDuzAsAwVzhzrWlAPAQ7Lkjx/rv0wgvxEyKwTq6FmNd5rjTrELt/CLmaSw7crMGg== - dependencies: - looper "^3.0.0" - pull-stream "^3.2.3" - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - -string-argv@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" - integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== +string-argv@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" + integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== string-length@^4.0.1: version "4.0.2" @@ -9745,16 +4717,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^4.1.0, string-width@^4.2.0: +"string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -9763,60 +4726,32 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.0.1.tgz#0d8158335a6cfd8eb95da9b6b262ce314a036ffd" - integrity sha512-5ohWO/M4//8lErlUUtrFy3b11GtNOuMOU0ysKCDXFcfXuuvUXu95akgj/i8ofmaGdN0hCqyl6uu9i8dS/mQp5g== - dependencies: - emoji-regex "^9.2.2" - is-fullwidth-code-point "^4.0.0" - strip-ansi "^7.0.1" - -string.prototype.padend@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz#997a6de12c92c7cb34dc8a201a6c53d9bd88a5f1" - integrity sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -string.prototype.trim@~1.2.4: - version "1.2.5" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz#a587bcc8bfad8cb9829a577f5de30dd170c1682c" - integrity sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== +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" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== +string-width@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.0.0.tgz#14aa1b7aaa126d5b64fa79d3c894da8a9650ba06" + integrity sha512-GPQHj7row82Hjo9hKZieKcHIhaAIKOJvFSIZXuCU9OASVZrMNUaZuz++SPVrBjnLsnk4k+z9f2EIypgxf2vNFw== dependencies: - safe-buffer "~5.2.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + emoji-regex "^10.3.0" + get-east-asian-width "^1.0.0" + strip-ansi "^7.1.0" string_decoder@~1.1.1: version "1.1.1" @@ -9825,12 +4760,12 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - ansi-regex "^2.0.0" + ansi-regex "^5.0.1" strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" @@ -9839,25 +4774,13 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-ansi@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" - integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== +strip-ansi@^7.0.1, strip-ansi@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== dependencies: ansi-regex "^6.0.1" -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= - dependencies: - is-utf8 "^0.2.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - 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" @@ -9868,23 +4791,16 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 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" - integrity sha1-DF8VX+8RUTczd96du1iNoFUA428= - dependencies: - is-hex-prefixed "1.0.0" +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +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" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -9892,7 +4808,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -9906,88 +4822,11 @@ supports-color@^8.0.0: dependencies: has-flag "^4.0.0" -supports-color@^9.2.1: - version "9.2.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.2.1.tgz#599dc9d45acf74c6176e0d880bab1d7d718fe891" - integrity sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ== - -supports-hyperlinks@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== - dependencies: - has-flag "^4.0.0" - supports-color "^7.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" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -swarm-js@^0.1.40: - version "0.1.40" - resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.40.tgz#b1bc7b6dcc76061f6c772203e004c11997e06b99" - integrity sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA== - dependencies: - bluebird "^3.5.0" - buffer "^5.0.5" - eth-lib "^0.1.26" - fs-extra "^4.0.2" - got "^7.1.0" - mime-types "^2.1.16" - mkdirp-promise "^5.0.1" - mock-fs "^4.1.0" - setimmediate "^1.0.5" - tar "^4.0.2" - xhr-request "^1.0.1" - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -tape@^4.6.3: - version "4.14.0" - resolved "https://registry.yarnpkg.com/tape/-/tape-4.14.0.tgz#e4d46097e129817175b90925f2385f6b1bcfa826" - integrity sha512-z0+WrUUJuG6wIdWrl4W3rTte2CR26G6qcPOj3w1hfRdcmhF3kHBhOBW9VHsPVAkz08ZmGzp7phVpDupbLzrYKQ== - dependencies: - call-bind "~1.0.2" - deep-equal "~1.1.1" - defined "~1.0.0" - dotignore "~0.1.2" - for-each "~0.3.3" - glob "~7.1.7" - has "~1.0.3" - inherits "~2.0.4" - is-regex "~1.1.3" - minimist "~1.2.5" - object-inspect "~1.11.0" - resolve "~1.20.0" - resumer "~0.0.0" - string.prototype.trim "~1.2.4" - through "~2.3.8" - -tar@^4.0.2: - version "4.4.19" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" - integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== - dependencies: - chownr "^1.1.4" - fs-minipass "^1.2.7" - minipass "^2.9.0" - minizlib "^1.3.3" - mkdirp "^0.5.5" - safe-buffer "^5.2.1" - yallist "^3.1.1" - -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^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" @@ -9997,95 +4836,20 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -test-value@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/test-value/-/test-value-2.1.0.tgz#11da6ff670f3471a73b625ca4f3fdcf7bb748291" - integrity sha1-Edpv9nDzRxpztiXKTz/c97t0gpE= - dependencies: - array-back "^1.0.3" - typical "^2.6.0" - -testrpc@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/testrpc/-/testrpc-0.0.1.tgz#83e2195b1f5873aec7be1af8cbe6dcf39edb7aed" - integrity sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA== - text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -throat@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" - integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== - -through2@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through@^2.3.8, through@~2.3.4, through@~2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -timed-out@^4.0.0, timed-out@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= - -tmp@0.0.33, tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -tmp@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" - integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== - dependencies: - rimraf "^2.6.3" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" 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" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= - 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" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== to-regex-range@^5.0.1: version "5.0.1" @@ -10094,109 +4858,41 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= +ts-api-utils@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" + integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== + +ts-jest@29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.4.1.tgz#42d33beb74657751d315efb9a871fe99e3b9b519" + integrity sha512-SaeUtjfpg9Uqu8IbeDKtdaS0g8lS6FT6OzM3ezrDfErPJPHNDo/Ey+VFGP1bQIDfagYDLyRpd7O15XpG1Es2Uw== + dependencies: + bs-logger "^0.2.6" + fast-json-stable-stringify "^2.1.0" + handlebars "^4.7.8" + json5 "^2.2.3" + lodash.memoize "^4.1.2" + make-error "^1.3.6" + semver "^7.7.2" + type-fest "^4.41.0" + yargs-parser "^21.1.1" + +ts-toolbelt@^9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz#50a25426cfed500d4a09bd1b3afb6f28879edfd5" + integrity sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w== -ts-essentials@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-1.0.4.tgz#ce3b5dade5f5d97cf69889c11bf7d2da8555b15a" - integrity sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ== - -ts-essentials@^6.0.3: - version "6.0.7" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-6.0.7.tgz#5f4880911b7581a873783740ce8b94da163d18a6" - integrity sha512-2E4HIIj4tQJlIHuATRHayv0EfMGK3ris/GRk1E3CFnsZzeNV+hUmelbaTZHLtXaZppM5oLhHRtO04gINC4Jusw== - -ts-generator@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ts-generator/-/ts-generator-0.1.1.tgz#af46f2fb88a6db1f9785977e9590e7bcd79220ab" - integrity sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ== - dependencies: - "@types/mkdirp" "^0.5.2" - "@types/prettier" "^2.1.1" - "@types/resolve" "^0.0.8" - chalk "^2.4.1" - glob "^7.1.2" - mkdirp "^0.5.1" - prettier "^2.1.2" - resolve "^1.8.1" - ts-essentials "^1.0.0" - -ts-jest@27.1.3: - version "27.1.3" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.3.tgz#1f723e7e74027c4da92c0ffbd73287e8af2b2957" - integrity sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA== - dependencies: - bs-logger "0.x" - fast-json-stable-stringify "2.x" - jest-util "^27.0.0" - json5 "2.x" - lodash.memoize "4.x" - make-error "1.x" - semver "7.x" - yargs-parser "20.x" - -ts-toolbelt@^6.15.1: - version "6.15.5" - resolved "https://registry.yarnpkg.com/ts-toolbelt/-/ts-toolbelt-6.15.5.tgz#cb3b43ed725cb63644782c64fbcad7d8f28c0a83" - integrity sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A== +tslib@2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" + integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== - tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -10204,28 +4900,6 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl-util@^0.15.0: - version "0.15.1" - resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" - integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -tweetnacl@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== - 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" @@ -10233,14 +4907,7 @@ type-check@^0.4.0, type-check@~0.4.0: 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" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8, type-detect@^4.0.8: +type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== @@ -10255,95 +4922,37 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d" - integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== - -typechain@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/typechain/-/typechain-3.0.0.tgz#d5a47700831f238e43f7429b987b4bb54849b92e" - integrity sha512-ft4KVmiN3zH4JUFu2WJBrwfHeDf772Tt2d8bssDTo/YcckKW2D+OwFrHXRC6hJvO3mHjFQTihoMV6fJOi0Hngg== - dependencies: - command-line-args "^4.0.7" - debug "^4.1.1" - fs-extra "^7.0.0" - js-sha3 "^0.8.0" - lodash "^4.17.15" - ts-essentials "^6.0.3" - ts-generator "^0.1.1" - -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" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" +type-fest@^4.41.0: + version "4.41.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58" + integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -typescript@4.5.5: - version "4.5.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" - integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typewise-core@^1.2, typewise-core@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/typewise-core/-/typewise-core-1.2.0.tgz#97eb91805c7f55d2f941748fa50d315d991ef195" - integrity sha1-l+uRgFx/VdL5QXSPpQ0xXZke8ZU= - -typewise@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/typewise/-/typewise-1.0.3.tgz#1067936540af97937cc5dcf9922486e9fa284651" - integrity sha1-EGeTZUCvl5N8xdz5kiSG6fooRlE= +types-ramda@^0.31.0: + version "0.31.0" + resolved "https://registry.yarnpkg.com/types-ramda/-/types-ramda-0.31.0.tgz#7cb72d1133107679855aab1e57a0cbffff3ea8b1" + integrity sha512-vaoC35CRC3xvL8Z6HkshDbi6KWM1ezK0LHN0YyxXWUn9HKzBNg/T3xSGlJZjCYspnOD3jE7bcizsp0bUXZDxnQ== dependencies: - typewise-core "^1.2.0" - -typewiselite@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typewiselite/-/typewiselite-1.0.0.tgz#c8882fa1bb1092c06005a97f34ef5c8508e3664e" - integrity sha1-yIgvobsQksBgBal/NO9chQjjZk4= - -typical@^2.6.0, typical@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d" - integrity sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0= + ts-toolbelt "^9.6.0" -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== +typescript@5.9.2: + version "5.9.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.2.tgz#d93450cddec5154a2d5cabe3b8102b83316fb2a6" + integrity sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A== -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" +uglify-js@^3.1.4: + version "3.19.3" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.19.3.tgz#82315e9bbc6f2b25888858acd1fff8441035b77f" + integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ== -underscore@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" - integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" @@ -10358,48 +4967,39 @@ unicode-match-property-ecmascript@^2.0.0: unicode-canonical-property-names-ecmascript "^2.0.0" unicode-property-aliases-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" - integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== 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" - integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== +update-browserslist-db@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" + integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -universalify@^0.1.0, universalify@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -unorm@^1.3.3: - version "1.6.0" - resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" - integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== + escalade "^3.1.1" + picocolors "^1.0.0" -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= +update-browserslist-db@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" + integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== + dependencies: + escalade "^3.1.2" + picocolors "^1.0.1" -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= +update-browserslist-db@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" + integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== dependencies: - has-value "^0.3.1" - isobject "^3.0.0" + escalade "^3.2.0" + picocolors "^1.1.1" uri-js@^4.2.2: version "4.4.1" @@ -10408,529 +5008,31 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-join@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" - integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= - dependencies: - prepend-http "^1.0.1" - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= - dependencies: - prepend-http "^2.0.0" - -url-set-query@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" - integrity sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk= - -url-to-options@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" - integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -utf-8-validate@^5.0.2: - version "5.0.8" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.8.tgz#4a735a61661dbb1c59a0868c397d2fe263f14e58" - integrity sha512-k4dW/Qja1BYDl2qD4tOMB9PFVha/UJtxTc1cXYOe3WwA/2m0Yn4qB7wLMpJyLJ/7DR0XnTut3HsCSzDT4ZvKgA== - dependencies: - node-gyp-build "^4.3.0" - -utf8@3.0.0, utf8@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" - integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: +util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util.promisify@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" - integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - for-each "^0.3.3" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.1" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -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" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -v8-to-istanbul@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz#0aeb763894f1a0a1676adf8a8b7612a38902446c" - integrity sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA== +v8-to-istanbul@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" + integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== dependencies: + "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" - source-map "^0.7.3" - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -varint@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" - integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== - -vary@^1, vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.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" - 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" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -walker@^1.0.7: +walker@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: makeerror "1.0.12" -web3-bzz@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.11.tgz#41bc19a77444bd5365744596d778b811880f707f" - integrity sha512-XGpWUEElGypBjeFyUhTkiPXFbDVD6Nr/S5jznE3t8cWUA0FxRf1n3n/NuIZeb0H9RkN2Ctd/jNma/k8XGa3YKg== - dependencies: - "@types/node" "^12.12.6" - got "9.6.0" - swarm-js "^0.1.40" - underscore "1.9.1" - -web3-core-helpers@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.11.tgz#84c681ed0b942c0203f3b324a245a127e8c67a99" - integrity sha512-PEPoAoZd5ME7UfbnCZBdzIerpe74GEvlwT4AjOmHeCVZoIFk7EqvOZDejJHt+feJA6kMVTdd0xzRNN295UhC1A== - dependencies: - underscore "1.9.1" - web3-eth-iban "1.2.11" - web3-utils "1.2.11" - -web3-core-method@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.11.tgz#f880137d1507a0124912bf052534f168b8d8fbb6" - integrity sha512-ff0q76Cde94HAxLDZ6DbdmKniYCQVtvuaYh+rtOUMB6kssa5FX0q3vPmixi7NPooFnbKmmZCM6NvXg4IreTPIw== - dependencies: - "@ethersproject/transactions" "^5.0.0-beta.135" - underscore "1.9.1" - web3-core-helpers "1.2.11" - web3-core-promievent "1.2.11" - web3-core-subscriptions "1.2.11" - web3-utils "1.2.11" - -web3-core-promievent@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz#51fe97ca0ddec2f99bf8c3306a7a8e4b094ea3cf" - integrity sha512-il4McoDa/Ox9Agh4kyfQ8Ak/9ABYpnF8poBLL33R/EnxLsJOGQG2nZhkJa3I067hocrPSjEdlPt/0bHXsln4qA== - dependencies: - eventemitter3 "4.0.4" - -web3-core-requestmanager@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz#fe6eb603fbaee18530293a91f8cf26d8ae28c45a" - integrity sha512-oFhBtLfOiIbmfl6T6gYjjj9igOvtyxJ+fjS+byRxiwFJyJ5BQOz4/9/17gWR1Cq74paTlI7vDGxYfuvfE/mKvA== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.11" - web3-providers-http "1.2.11" - web3-providers-ipc "1.2.11" - web3-providers-ws "1.2.11" - -web3-core-subscriptions@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz#beca908fbfcb050c16f45f3f0f4c205e8505accd" - integrity sha512-qEF/OVqkCvQ7MPs1JylIZCZkin0aKK9lDxpAtQ1F8niEDGFqn7DT8E/vzbIa0GsOjL2fZjDhWJsaW+BSoAW1gg== - dependencies: - eventemitter3 "4.0.4" - underscore "1.9.1" - web3-core-helpers "1.2.11" - -web3-core@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.11.tgz#1043cacc1becb80638453cc5b2a14be9050288a7" - integrity sha512-CN7MEYOY5ryo5iVleIWRE3a3cZqVaLlIbIzDPsvQRUfzYnvzZQRZBm9Mq+ttDi2STOOzc1MKylspz/o3yq/LjQ== - dependencies: - "@types/bn.js" "^4.11.5" - "@types/node" "^12.12.6" - bignumber.js "^9.0.0" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-core-requestmanager "1.2.11" - web3-utils "1.2.11" - -web3-eth-abi@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz#a887494e5d447c2926d557a3834edd66e17af9b0" - integrity sha512-PkRYc0+MjuLSgg03QVWqWlQivJqRwKItKtEpRUaxUAeLE7i/uU39gmzm2keHGcQXo3POXAbOnMqkDvOep89Crg== - dependencies: - "@ethersproject/abi" "5.0.0-beta.153" - underscore "1.9.1" - web3-utils "1.2.11" - -web3-eth-accounts@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz#a9e3044da442d31903a7ce035a86d8fa33f90520" - integrity sha512-6FwPqEpCfKIh3nSSGeo3uBm2iFSnFJDfwL3oS9pyegRBXNsGRVpgiW63yhNzL0796StsvjHWwQnQHsZNxWAkGw== - dependencies: - crypto-browserify "3.12.0" - eth-lib "0.2.8" - ethereumjs-common "^1.3.2" - ethereumjs-tx "^2.1.1" - scrypt-js "^3.0.1" - underscore "1.9.1" - uuid "3.3.2" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-utils "1.2.11" - -web3-eth-contract@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.11.tgz#917065902bc27ce89da9a1da26e62ef663663b90" - integrity sha512-MzYuI/Rq2o6gn7vCGcnQgco63isPNK5lMAan2E51AJLknjSLnOxwNY3gM8BcKoy4Z+v5Dv00a03Xuk78JowFow== - dependencies: - "@types/bn.js" "^4.11.5" - underscore "1.9.1" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-core-promievent "1.2.11" - web3-core-subscriptions "1.2.11" - web3-eth-abi "1.2.11" - web3-utils "1.2.11" - -web3-eth-ens@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz#26d4d7f16d6cbcfff918e39832b939edc3162532" - integrity sha512-dbW7dXP6HqT1EAPvnniZVnmw6TmQEKF6/1KgAxbo8iBBYrVTMDGFQUUnZ+C4VETGrwwaqtX4L9d/FrQhZ6SUiA== - dependencies: - content-hash "^2.5.2" - eth-ens-namehash "2.0.8" - underscore "1.9.1" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-promievent "1.2.11" - web3-eth-abi "1.2.11" - web3-eth-contract "1.2.11" - web3-utils "1.2.11" - -web3-eth-iban@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.11.tgz#f5f73298305bc7392e2f188bf38a7362b42144ef" - integrity sha512-ozuVlZ5jwFC2hJY4+fH9pIcuH1xP0HEFhtWsR69u9uDIANHLPQQtWYmdj7xQ3p2YT4bQLq/axKhZi7EZVetmxQ== - dependencies: - bn.js "^4.11.9" - web3-utils "1.2.11" - -web3-eth-personal@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz#a38b3942a1d87a62070ce0622a941553c3d5aa70" - integrity sha512-42IzUtKq9iHZ8K9VN0vAI50iSU9tOA1V7XU2BhF/tb7We2iKBVdkley2fg26TxlOcKNEHm7o6HRtiiFsVK4Ifw== - dependencies: - "@types/node" "^12.12.6" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-net "1.2.11" - web3-utils "1.2.11" - -web3-eth@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.11.tgz#4c81fcb6285b8caf544058fba3ae802968fdc793" - integrity sha512-REvxW1wJ58AgHPcXPJOL49d1K/dPmuw4LjPLBPStOVkQjzDTVmJEIsiLwn2YeuNDd4pfakBwT8L3bz1G1/wVsQ== - dependencies: - underscore "1.9.1" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-core-subscriptions "1.2.11" - web3-eth-abi "1.2.11" - web3-eth-accounts "1.2.11" - web3-eth-contract "1.2.11" - web3-eth-ens "1.2.11" - web3-eth-iban "1.2.11" - web3-eth-personal "1.2.11" - web3-net "1.2.11" - web3-utils "1.2.11" - -web3-net@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.11.tgz#eda68ef25e5cdb64c96c39085cdb74669aabbe1b" - integrity sha512-sjrSDj0pTfZouR5BSTItCuZ5K/oZPVdVciPQ6981PPPIwJJkCMeVjD7I4zO3qDPCnBjBSbWvVnLdwqUBPtHxyg== - dependencies: - web3-core "1.2.11" - web3-core-method "1.2.11" - web3-utils "1.2.11" - -web3-provider-engine@14.2.1: - version "14.2.1" - resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-14.2.1.tgz#ef351578797bf170e08d529cb5b02f8751329b95" - integrity sha512-iSv31h2qXkr9vrL6UZDm4leZMc32SjWJFGOp/D92JXfcEboCqraZyuExDkpxKw8ziTufXieNM7LSXNHzszYdJw== - dependencies: - async "^2.5.0" - backoff "^2.5.0" - clone "^2.0.0" - cross-fetch "^2.1.0" - eth-block-tracker "^3.0.0" - eth-json-rpc-infura "^3.1.0" - eth-sig-util "^1.4.2" - ethereumjs-block "^1.2.2" - ethereumjs-tx "^1.2.0" - ethereumjs-util "^5.1.5" - ethereumjs-vm "^2.3.4" - json-rpc-error "^2.0.0" - json-stable-stringify "^1.0.1" - promise-to-callback "^1.0.0" - readable-stream "^2.2.9" - request "^2.85.0" - semaphore "^1.0.3" - ws "^5.1.1" - xhr "^2.2.0" - xtend "^4.0.1" - -web3-providers-http@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.11.tgz#1cd03442c61670572d40e4dcdf1faff8bd91e7c6" - integrity sha512-psh4hYGb1+ijWywfwpB2cvvOIMISlR44F/rJtYkRmQ5jMvG4FOCPlQJPiHQZo+2cc3HbktvvSJzIhkWQJdmvrA== - dependencies: - web3-core-helpers "1.2.11" - xhr2-cookies "1.1.0" - -web3-providers-ipc@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz#d16d6c9be1be6e0b4f4536c4acc16b0f4f27ef21" - integrity sha512-yhc7Y/k8hBV/KlELxynWjJDzmgDEDjIjBzXK+e0rHBsYEhdCNdIH5Psa456c+l0qTEU2YzycF8VAjYpWfPnBpQ== - dependencies: - oboe "2.1.4" - underscore "1.9.1" - web3-core-helpers "1.2.11" - -web3-providers-ws@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz#a1dfd6d9778d840561d9ec13dd453046451a96bb" - integrity sha512-ZxnjIY1Er8Ty+cE4migzr43zA/+72AF1myzsLaU5eVgdsfV7Jqx7Dix1hbevNZDKFlSoEyq/3j/jYalh3So1Zg== - dependencies: - eventemitter3 "4.0.4" - underscore "1.9.1" - web3-core-helpers "1.2.11" - websocket "^1.0.31" - -web3-shh@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.11.tgz#f5d086f9621c9a47e98d438010385b5f059fd88f" - integrity sha512-B3OrO3oG1L+bv3E1sTwCx66injW1A8hhwpknDUbV+sw3fehFazA06z9SGXUefuFI1kVs4q2vRi0n4oCcI4dZDg== - dependencies: - web3-core "1.2.11" - web3-core-method "1.2.11" - web3-core-subscriptions "1.2.11" - web3-net "1.2.11" - -web3-utils@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.11.tgz#af1942aead3fb166ae851a985bed8ef2c2d95a82" - integrity sha512-3Tq09izhD+ThqHEaWYX4VOT7dNPdZiO+c/1QMA0s5X2lDFKK/xHJb7cyTRRVzN2LvlHbR7baS1tmQhSua51TcQ== - dependencies: - bn.js "^4.11.9" - eth-lib "0.2.8" - ethereum-bloom-filters "^1.0.6" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randombytes "^2.1.0" - underscore "1.9.1" - utf8 "3.0.0" - -web3-utils@^1.0.0-beta.31: - version "1.6.1" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.6.1.tgz#befcb23922b00603ab56d8c5b4158468dc494aca" - integrity sha512-RidGKv5kOkcerI6jQqDFDoTllQQqV+rPhTzZHhmbqtFObbYpU93uc+yG1LHivRTQhA6llIx67iudc/vzisgO+w== - dependencies: - bn.js "^4.11.9" - ethereum-bloom-filters "^1.0.6" - ethereumjs-util "^7.1.0" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randombytes "^2.1.0" - utf8 "3.0.0" - -web3@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.11.tgz#50f458b2e8b11aa37302071c170ed61cff332975" - integrity sha512-mjQ8HeU41G6hgOYm1pmeH0mRAeNKJGnJEUzDMoerkpw7QUQT4exVREgF1MYPvL/z6vAshOXei25LE/t/Bxl8yQ== - dependencies: - web3-bzz "1.2.11" - web3-core "1.2.11" - web3-eth "1.2.11" - web3-eth-personal "1.2.11" - web3-net "1.2.11" - web3-shh "1.2.11" - web3-utils "1.2.11" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= - -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - 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" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -websocket@1.0.32: - version "1.0.32" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.32.tgz#1f16ddab3a21a2d929dec1687ab21cfdc6d3dbb1" - integrity sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q== - dependencies: - bufferutil "^4.0.1" - debug "^2.2.0" - es5-ext "^0.10.50" - typedarray-to-buffer "^3.1.5" - utf-8-validate "^5.0.2" - yaeti "^0.0.6" - -websocket@^1.0.31: - version "1.0.34" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" - integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== - dependencies: - bufferutil "^4.0.1" - debug "^2.2.0" - es5-ext "^0.10.50" - typedarray-to-buffer "^3.1.5" - utf-8-validate "^5.0.2" - yaeti "^0.0.6" - -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-fetch@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" - integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - 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" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.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" - 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@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= - which@1.2.x: version "1.2.14" resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" - integrity sha1-mofEN48D6CfOyvGs31bHNsAcFOU= + integrity sha512-16uPglFkRPzgiUXYMi1Jf8Z5EzN1iB4V0ZtMXcHZnwsBtQhhHeCqoWw7tsUY42hJGNDWtUsVLTjakIa5BgAxCw== dependencies: isexe "^2.0.0" @@ -10948,28 +5050,22 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -window-size@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" - integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= - -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" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= +which@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/which/-/which-5.0.0.tgz#d93f2d93f79834d4363c7d0c23e00d07c466c8d6" + integrity sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ== dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" + isexe "^3.1.1" -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== +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" string-width "^4.1.0" @@ -10984,127 +5080,53 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -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" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@7.4.6: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== - -ws@^3.0.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" - -ws@^5.1.1: - version "5.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" - integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== - dependencies: - async-limiter "~1.0.0" - -ws@^7.4.6: - version "7.5.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" - integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA== - -xhr-request-promise@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" - integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== - dependencies: - xhr-request "^1.1.0" - -xhr-request@^1.0.1, xhr-request@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" - integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== - dependencies: - buffer-to-arraybuffer "^0.0.5" - object-assign "^4.1.1" - query-string "^5.0.1" - simple-get "^2.7.0" - timed-out "^4.0.1" - url-set-query "^1.0.0" - xhr "^2.0.4" - -xhr2-cookies@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48" - integrity sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg= +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== dependencies: - cookiejar "^2.1.1" + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" -xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: - version "2.6.0" - resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" - integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== +wrap-ansi@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-9.0.0.tgz#1a3dc8b70d85eeb8398ddfb1e4a02cd186e58b3e" + integrity sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q== dependencies: - global "~4.4.0" - is-function "^1.0.1" - parse-headers "^2.0.0" - xtend "^4.0.0" - -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" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + ansi-styles "^6.2.1" + string-width "^7.0.0" + strip-ansi "^7.1.0" -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: +write-file-atomic@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -xtend@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" - integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os= + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== dependencies: - object-keys "~0.4.0" + imurmurhash "^0.1.4" + signal-exit "^3.0.7" -y18n@^3.2.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" - integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== +ws@8.17.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yaeti@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" - integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= - yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: +yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== @@ -11114,53 +5136,30 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yaml@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98" + integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA== -yargs-parser@20.x, yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" - integrity sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ= - dependencies: - camelcase "^3.0.0" - lodash.assign "^4.0.6" +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== +yargs@^17.3.1: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== dependencies: - cliui "^7.0.2" + cliui "^8.0.1" escalade "^3.1.1" get-caller-file "^2.0.5" require-directory "^2.1.1" - string-width "^4.2.0" + string-width "^4.2.3" y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@^4.7.1: - version "4.8.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" - integrity sha1-wMQpJMpKqmsObaFznfshZDn53cA= - dependencies: - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - lodash.assign "^4.0.3" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.1" - which-module "^1.0.0" - window-size "^0.2.0" - y18n "^3.2.1" - yargs-parser "^2.4.1" + yargs-parser "^21.1.1" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==