diff --git a/e2e/specs/stateless/registerName.spec.ts b/e2e/specs/stateless/registerName.spec.ts index c1f7af0c7..2ca2cf70a 100644 --- a/e2e/specs/stateless/registerName.spec.ts +++ b/e2e/specs/stateless/registerName.spec.ts @@ -1,7 +1,10 @@ import { expect } from '@playwright/test' -import { Hash, isHash } from 'viem' +import { Hash } from 'viem' -import { ethRegistrarControllerCommitSnippet } from '@ensdomains/ensjs/contracts' +import { + ethRegistrarControllerCommitSnippet, + legacyEthRegistrarControllerCommitSnippet, +} from '@ensdomains/ensjs/contracts' import { setPrimaryName } from '@ensdomains/ensjs/wallet' import { Web3RequestKind } from '@ensdomains/headless-web3-provider' @@ -23,7 +26,7 @@ import { test.describe.serial('normal registration', () => { const name = `registration-normal-${Date.now()}.eth` - test('should allow normal registration', async ({ + test('should allow normal registration, if primary name is set, name is wrapped', async ({ page, login, accounts, @@ -233,8 +236,11 @@ test.describe.serial('normal registration', () => { await expect(page.getByText(`You are now the owner of ${name}`)).toBeVisible() // calculate date one year from now - const date = new Date() - date.setFullYear(date.getFullYear() + 1) + const date = await page.evaluate(() => { + const _date = new Date() + _date.setFullYear(_date.getFullYear() + 1) + return _date + }) const formattedDate = date.toLocaleDateString('en-US', { year: 'numeric', month: 'long', @@ -255,6 +261,10 @@ test.describe.serial('normal registration', () => { accounts.getAddress('user', 5), ) }) + + await test.step('confirm name is wrapped', async () => { + await expect(page.getByTestId('permissions-tab')).toBeVisible() + }) }) test('should not direct to the registration page on search, and show all records from registration', async ({ @@ -285,7 +295,7 @@ test.describe.serial('normal registration', () => { ) }) - test('should allow registering a non-primary name', async ({ + test('registering a non-primary name should not be wrapped', async ({ page, accounts, time, @@ -326,10 +336,67 @@ test.describe.serial('normal registration', () => { await expect(page.getByTestId('address-profile-button-eth')).toHaveText( new RegExp(accounts.getAddress('user', 5)), ) + + await test.step('confirm name is unwrapped', async () => { + await expect(page.getByTestId('permissions-tab')).not.toBeVisible() + }) + }) +}) + +test('registering a premium name with no records should not be wrapped', async ({ + page, + login, + accounts, + makeName, + makePageObject, +}) => { + const premiumName = await makeName( + { + label: 'premium', + owner: 'user2', + type: 'legacy', + duration: -7890000 - 4 * 345600, // 3 months 4 days + }, + { timeOffset: 500 }, + ) + + const transactionModal = makePageObject('TransactionModal') + + await page.goto(`/${premiumName}/register`) + await login.connect() + + await page.getByTestId('primary-name-toggle').uncheck() + await page.getByTestId('payment-choice-ethereum').click() + await expect(page.getByTestId('invoice-item-2-amount')).toBeVisible() + await page.getByTestId('next-button').click() + if (await page.getByTestId('profile-submit-button').isVisible()) { + await page.getByTestId('profile-submit-button').click() + } + + await page.getByTestId('next-button').click() + await transactionModal.confirm() + + await expect(page.getByTestId('countdown-complete-check')).toBeVisible() + await testClient.increaseTime({ seconds: 120 }) + await page.getByTestId('finish-button').click() + await transactionModal.confirm() + + await page.getByTestId('view-name').click() + await expect(page.getByTestId('address-profile-button-eth')).toHaveText( + new RegExp(accounts.getAddress('user', 5)), + ) + + await test.step('confirm name is unwrapped', async () => { + await expect(page.getByTestId('permissions-tab')).not.toBeVisible() }) + + const morePage = makePageObject('MorePage') + await morePage.goto(premiumName) + + await expect(morePage.wrapButton).toBeVisible() }) -test('should allow registering a premium name', async ({ +test('registering a premium name with primary name not set should not be wrapped', async ({ page, login, accounts, @@ -346,11 +413,200 @@ test('should allow registering a premium name', async ({ { timeOffset: 500 }, ) + await setPrimaryName(walletClient, { + name: 'premium', + account: createAccounts().getAddress('user2') as `0x${string}`, + }) + + const transactionModal = makePageObject('TransactionModal') + + await page.goto(`/${premiumName}/register`) + await login.connect() + + await page.getByTestId('payment-choice-ethereum').click() + await expect(page.getByTestId('invoice-item-2-amount')).toBeVisible() + await page.getByTestId('next-button').click() + if (await page.getByTestId('profile-submit-button').isVisible()) { + await page.getByTestId('profile-submit-button').click() + } + + await page.getByTestId('next-button').click() + await transactionModal.confirm() + + await expect(page.getByTestId('countdown-complete-check')).toBeVisible() + await testClient.increaseTime({ seconds: 120 }) + await page.getByTestId('finish-button').click() + await transactionModal.confirm() + + await page.getByTestId('view-name').click() + await expect(page.getByTestId('address-profile-button-eth')).toHaveText( + new RegExp(accounts.getAddress('user', 5)), + ) + + await test.step('confirm name is wrapped', async () => { + await expect(page.getByTestId('permissions-tab')).not.toBeVisible() + }) + + const morePage = makePageObject('MorePage') + await morePage.goto(premiumName) + await expect(morePage.wrapButton).toBeVisible() + + const recordsPage = makePageObject('RecordsPage') + await recordsPage.goto(premiumName) + + await expect(recordsPage.getRecordValue('address', 'ETH')).toHaveText( + createAccounts().getAddress('user') as `0x${string}`, + ) +}) + +test('registering a premium name with primary name set should be wrapped', async ({ + page, + login, + accounts, + makeName, + makePageObject, +}) => { + const premiumName = await makeName( + { + label: 'premium', + owner: 'user2', + type: 'legacy', + duration: -7890000 - 4 * 345600, // 3 months 4 days + }, + { timeOffset: 500 }, + ) + + await setPrimaryName(walletClient, { + name: 'premium', + account: createAccounts().getAddress('user') as `0x${string}`, + }) + + const transactionModal = makePageObject('TransactionModal') + + await page.goto(`/${premiumName}/register`) + await login.connect() + + await page.getByTestId('payment-choice-ethereum').click() + await expect(page.getByTestId('invoice-item-2-amount')).toBeVisible() + await page.getByTestId('next-button').click() + if (await page.getByTestId('profile-submit-button').isVisible()) { + await page.getByTestId('profile-submit-button').click() + } + + await page.getByTestId('next-button').click() + await transactionModal.confirm() + + await expect(page.getByTestId('countdown-complete-check')).toBeVisible() + await testClient.increaseTime({ seconds: 120 }) + await page.getByTestId('finish-button').click() + await transactionModal.confirm() + + await page.getByTestId('view-name').click() + await expect(page.getByTestId('address-profile-button-eth')).toHaveText( + new RegExp(accounts.getAddress('user', 5)), + ) + + await test.step('confirm name is wrapped', async () => { + await expect(page.getByTestId('permissions-tab')).toBeVisible() + }) + + const morePage = makePageObject('MorePage') + await morePage.goto(premiumName) + await expect(morePage.wrapButton).toHaveCount(0) + + const recordsPage = makePageObject('RecordsPage') + await recordsPage.goto(premiumName) + + await expect(recordsPage.getRecordValue('address', 'ETH')).toHaveText( + createAccounts().getAddress('user') as `0x${string}`, + ) +}) + +test('registering a premium name with existing records should not be wrapped', async ({ + page, + login, + accounts, + makeName, + makePageObject, +}) => { + const premiumName = await makeName( + { + label: 'premium', + owner: 'user2', + type: 'legacy', + records: { + coins: [ + { + coin: 'etcLegacy', + value: '0x42D63ae25990889E35F215bC95884039Ba354115', + }, + { + coin: 'ETH', + value: createAccounts().getAddress('user') as `0x${string}`, + }, + ], + }, + duration: -7890000 - 4 * 345600, // 3 months 4 days + }, + { timeOffset: 500 }, + ) + + const transactionModal = makePageObject('TransactionModal') + + await page.goto(`/${premiumName}/register`) + await login.connect() + + await page.getByTestId('payment-choice-ethereum').click() + await expect(page.getByTestId('invoice-item-2-amount')).toBeVisible() + await page.getByTestId('next-button').click() + if (await page.getByTestId('profile-submit-button').isVisible()) { + await page.getByTestId('profile-submit-button').click() + } + + await page.getByTestId('next-button').click() + await transactionModal.confirm() + + await expect(page.getByTestId('countdown-complete-check')).toBeVisible() + await testClient.increaseTime({ seconds: 120 }) + await page.getByTestId('finish-button').click() + await transactionModal.confirm() + + await page.getByTestId('view-name').click() + await expect(page.getByTestId('address-profile-button-eth')).toHaveText( + new RegExp(accounts.getAddress('user', 5)), + ) + + const recordsPage = makePageObject('RecordsPage') + await recordsPage.goto(premiumName) + + await expect(recordsPage.getRecordValue('address', 'ETH')).toHaveText( + createAccounts().getAddress('user') as `0x${string}`, + ) +}) + +test('registering a wrapped premium name with no records should not be wrapped', async ({ + page, + login, + accounts, + makeName, + makePageObject, +}) => { + const premiumName = await makeName( + { + label: 'premium', + owner: 'user2', + type: 'wrapped', + duration: -7890000 - 4 * 345600, // 3 months 4 days + }, + { timeOffset: 500 }, + ) + const transactionModal = makePageObject('TransactionModal') await page.goto(`/${premiumName}/register`) await login.connect() + await page.getByTestId('primary-name-toggle').uncheck() await page.getByTestId('payment-choice-ethereum').click() await expect(page.getByTestId('invoice-item-2-amount')).toBeVisible() await page.getByTestId('next-button').click() @@ -370,6 +626,103 @@ test('should allow registering a premium name', async ({ await expect(page.getByTestId('address-profile-button-eth')).toHaveText( new RegExp(accounts.getAddress('user', 5)), ) + + await test.step('confirm name is unwrapped', async () => { + await expect(page.getByTestId('permissions-tab')).not.toBeVisible() + }) + + const morePage = makePageObject('MorePage') + await morePage.goto(premiumName) + + await expect(morePage.wrapButton).toBeVisible() + + const recordsPage = makePageObject('RecordsPage') + await recordsPage.goto(premiumName) + + await expect(recordsPage.getRecordValue('address', 'ETH')).toHaveText( + createAccounts().getAddress('user') as `0x${string}`, + ) +}) + +test('registering a wrapped premium name with records set should be wrapped', async ({ + page, + login, + accounts, + makeName, + makePageObject, +}) => { + const premiumName = await makeName( + { + label: 'premium', + owner: 'user', + type: 'wrapped', + duration: -7890000 - 4 * 345600, // 3 months 4 days + records: { + coins: [ + { + coin: 'ETH', + value: createAccounts().getAddress('user') as `0x${string}`, + }, + { + coin: 'etcLegacy', + value: '0x42D63ae25990889E35F215bC95884039Ba354115', + }, + ], + }, + }, + { timeOffset: 500 }, + ) + + const transactionModal = makePageObject('TransactionModal') + + await page.goto(`/${premiumName}/register`) + await login.connect() + + await page.getByTestId('primary-name-toggle').uncheck() + await page.getByTestId('payment-choice-ethereum').click() + await expect(page.getByTestId('invoice-item-2-amount')).toBeVisible() + await page.getByTestId('next-button').click() + + await page.getByTestId('setup-profile-button').click() + + await test.step('add a text record', async () => { + await page.getByTestId('show-add-profile-records-modal-button').click() + await page.getByTestId('confirmation-dialog-confirm-button').click() + await page.getByTestId('profile-record-option-name').click() + await page.getByTestId('add-profile-records-button').click() + await page.getByTestId('profile-record-input-input-name').fill('Test Name') + await page.getByTestId('profile-submit-button').click() + }) + + await page.getByTestId('next-button').click() + await transactionModal.confirm() + + await expect(page.getByTestId('countdown-complete-check')).toBeVisible() + await testClient.increaseTime({ seconds: 120 }) + await page.getByTestId('finish-button').click() + await transactionModal.confirm() + + await page.getByTestId('view-name').click() + + await expect(page.getByTestId('address-profile-button-eth')).toHaveText( + new RegExp(accounts.getAddress('user', 5)), + ) + + await test.step('confirm name is wrapped', async () => { + await expect(page.getByTestId('permissions-tab')).toBeVisible() + }) + + const morePage = makePageObject('MorePage') + await morePage.goto(premiumName) + await expect(morePage.wrapButton).toHaveCount(0) + + const recordsPage = makePageObject('RecordsPage') + await recordsPage.goto(premiumName) + + await expect(recordsPage.getRecordValue('text', 'name')).toHaveText('Test Name') + await expect(recordsPage.getRecordValue('address', 'ETH')).toHaveText( + createAccounts().getAddress('user') as `0x${string}`, + ) }) test('should allow registering a name and resuming from the commit toast', async ({ @@ -458,9 +811,9 @@ test('should allow registering with a specific date', async ({ page, login, make await expect(page.getByTestId('payment-choice-ethereum')).toBeChecked() await expect(registrationPage.primaryNameToggle).not.toBeChecked() - await test.step('should show correct price data (for 2.5 years)', async () => { - await expect(registrationPage.yearMarker(0)).toHaveText(/11% gas/) - await expect(registrationPage.yearMarker(1)).toHaveText(/6% gas/) + await test.step('should show correct price marker data for unwrapped registration (for 2.5 years)', async () => { + await expect(registrationPage.yearMarker(0)).toHaveText(/9% gas/) + await expect(registrationPage.yearMarker(1)).toHaveText(/5% gas/) await expect(registrationPage.yearMarker(2)).toHaveText(/2% gas/) }) }) @@ -515,6 +868,8 @@ test('should allow registering a premium name with a specific date', async ({ }) await page.getByTestId('payment-choice-ethereum').click() + await page.getByTestId('primary-name-toggle').check() + await expect(page.getByTestId('invoice-item-2-amount')).toBeVisible() await page.getByTestId('next-button').click() if (await page.getByTestId('profile-submit-button').isVisible()) { @@ -533,6 +888,10 @@ test('should allow registering a premium name with a specific date', async ({ await expect(page.getByTestId('address-profile-button-eth')).toHaveText( new RegExp(accounts.getAddress('user', 5)), ) + + await test.step('confirm name is wrapped', async () => { + await expect(page.getByTestId('permissions-tab')).toBeVisible() + }) }) test('should allow registering a premium name for two months', async ({ @@ -601,6 +960,10 @@ test('should allow registering a premium name for two months', async ({ await expect(page.getByTestId('address-profile-button-eth')).toHaveText( new RegExp(accounts.getAddress('user', 5)), ) + + await test.step('confirm name is unwrapped', async () => { + await expect(page.getByTestId('permissions-tab')).not.toBeVisible() + }) }) test('should not allow registering a premium name for less than 28 days', async ({ @@ -680,6 +1043,10 @@ test('should not allow registering a premium name for less than 28 days', async await expect(page.getByTestId('address-profile-button-eth')).toHaveText( new RegExp(accounts.getAddress('user', 5)), ) + + await test.step('confirm name is unwrapped', async () => { + await expect(page.getByTestId('permissions-tab')).not.toBeVisible() + }) }) test('should allow normal registration for a month', async ({ @@ -800,6 +1167,10 @@ test('should allow normal registration for a month', async ({ await expect(page.getByTestId('address-profile-button-eth')).toHaveText( accounts.getAddress('user', 5), ) + + await test.step('confirm name is wrapped', async () => { + await expect(page.getByTestId('permissions-tab')).toBeVisible() + }) }) test('should not allow normal registration less than 28 days', async ({ @@ -931,14 +1302,19 @@ test('should not allow normal registration less than 28 days', async ({ await expect(page.getByTestId('address-profile-button-eth')).toHaveText( accounts.getAddress('user', 5), ) + + await test.step('confirm name is wrapped (set primary name)', async () => { + await expect(page.getByTestId('permissions-tab')).toBeVisible() + }) }) -test('should be able to detect an existing commit created on a private mempool', async ({ +test('should be able to detect an existing commit created on a private mempool for a wrapped registration', async ({ page, login, accounts, time, wallet, + consoleListener, makePageObject, }) => { test.slow() @@ -947,6 +1323,9 @@ test('should be able to detect an existing commit created on a private mempool', const homePage = makePageObject('HomePage') const registrationPage = makePageObject('RegistrationPage') const transactionModal = makePageObject('TransactionModal') + await consoleListener.initialize({ + regex: /commit is:/, + }) await time.sync(500) @@ -958,28 +1337,20 @@ test('should be able to detect an existing commit created on a private mempool', await homePage.searchInput.press('Enter') await expect(page.getByRole('heading', { name: `Register ${name}` })).toBeVisible() - await registrationPage.primaryNameToggle.uncheck() + await registrationPage.primaryNameToggle.check() // should go to profile editor step await page.getByTestId('next-button').click() + await page.getByTestId('profile-submit-button').click() + await test.step('should be able to find an existing commit', async () => { await page.getByTestId('next-button').click() await transactionModal.closeButton.click() - let commitHash: Hash | undefined - let attempts = 0 - while (!commitHash && attempts < 4) { - // eslint-disable-next-line no-await-in-loop - const message = await page.waitForEvent('console') - // eslint-disable-next-line no-await-in-loop - const txt = await message.text() - const hash = txt.split(':')[1]?.trim() as Hash - if (isHash(hash)) commitHash = hash - attempts += 1 - } - expect(commitHash!).toBeDefined() + await expect(consoleListener.getMessages().length).toBeGreaterThan(0) + const commitHash = consoleListener.getMessages()[0].split(':')[1]?.trim() as Hash const approveTx = await walletClient.writeContract({ abi: ethRegistrarControllerCommitSnippet, @@ -1025,15 +1396,116 @@ test('should be able to detect an existing commit created on a private mempool', await expect(transactionModal.transactionModal).toHaveCount(0) await wallet.authorize(Web3RequestKind.SendTransaction) - // await transactionModal.confirm() await page.getByTestId('view-name').click() await expect(page.getByTestId('address-profile-button-eth')).toHaveText( accounts.getAddress('user', 5), ) + + await test.step('confirm name is unwrapped', async () => { + await expect(page.getByTestId('permissions-tab')).toBeVisible() + }) }) }) +test('should be able to detect an existing commit created on a private mempool for a legacy registration', async ({ + page, + login, + accounts, + time, + wallet, + consoleListener, + makePageObject, +}) => { + test.slow() + + const name = `registration-normal-${Date.now()}.eth` + const homePage = makePageObject('HomePage') + const registrationPage = makePageObject('RegistrationPage') + const transactionModal = makePageObject('TransactionModal') + await consoleListener.initialize({ + regex: /commit is:/, + }) + + await time.sync(500) + + await homePage.goto() + await login.connect() + + // should redirect to registration page + await homePage.searchInput.fill(name) + await homePage.searchInput.press('Enter') + await expect(page.getByRole('heading', { name: `Register ${name}` })).toBeVisible() + + await registrationPage.primaryNameToggle.uncheck() + + // should go to profile editor step + await page.getByTestId('next-button').click() + + await test.step('should be able to find an existing commit', async () => { + await page.getByTestId('next-button').click() + + await transactionModal.closeButton.click() + + await expect(consoleListener.getMessages().length).toBeGreaterThan(0) + const commitHash = consoleListener.getMessages()[0].split(':')[1]?.trim() as Hash + + const approveTx = await walletClient.writeContract({ + abi: legacyEthRegistrarControllerCommitSnippet, + address: testClient.chain.contracts.legacyEthRegistrarController.address, + args: [commitHash!], + functionName: 'commit', + account: createAccounts().getAddress('user') as `0x${string}`, + }) + await waitForTransaction(approveTx) + + await page.route('https://api.findblock.xyz/**/*', async (route) => { + await route.fulfill({ + json: { + ok: true, + data: { + hash: approveTx, + }, + }, + }) + }) + + // should show countdown + await expect(page.getByTestId('countdown-circle')).toBeVisible() + await expect(page.getByTestId('countdown-circle')).toContainText(/^[0-6]?[0-9]$/) + await testClient.increaseTime({ seconds: 60 }) + + await expect(page.getByTestId('countdown-complete-check')).toBeVisible({ timeout: 10000 }) + }) + + await test.step('should be able to complete registration when modal is closed', async () => { + await expect(page.getByTestId('finish-button')).toBeEnabled() + + // should save the registration state and the transaction status + await page.reload() + await expect(page.getByTestId('finish-button')).toBeEnabled() + + // should allow finalising registration and automatically go to the complete step + await page.getByTestId('finish-button').click() + await expect(page.getByText('Open Wallet')).toBeVisible() + await transactionModal.confirmButton.click() + + await transactionModal.closeButton.click() + + await expect(transactionModal.transactionModal).toHaveCount(0) + + await wallet.authorize(Web3RequestKind.SendTransaction) + + await page.getByTestId('view-name').click() + await expect(page.getByTestId('address-profile-button-eth')).toHaveText( + accounts.getAddress('user', 5), + ) + + await test.step('confirm name is unwrapped', async () => { + await expect(page.getByTestId('permissions-tab')).not.toBeVisible() + }) + }) +}) test.describe('Error handling', () => { test('should be able to detect an existing commit created on a private mempool', async ({ page, diff --git a/package.json b/package.json index 2e2108f1c..df6479543 100644 --- a/package.json +++ b/package.json @@ -48,8 +48,8 @@ "@ensdomains/address-encoder": "1.1.1", "@ensdomains/content-hash": "^3.0.0-beta.5", "@ensdomains/ens-contracts": "1.2.0-beta.0", + "@ensdomains/ensjs": "4.0.3-alpha.12", "@ensdomains/ens-test-env": "0.6.0", - "@ensdomains/ensjs": "4.0.2", "@ensdomains/thorin": "1.0.0-beta.24", "@metamask/post-message-stream": "^6.1.2", "@metamask/providers": "^14.0.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6e0470e50..6a66d977b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -128,8 +128,8 @@ importers: specifier: 0.6.0 version: 0.6.0 '@ensdomains/ensjs': - specifier: 4.0.2 - version: 4.0.2(typescript@5.4.5)(viem@2.19.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + specifier: 4.0.3-alpha.12 + version: 4.0.3-alpha.12(typescript@5.4.5)(viem@2.19.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) '@ensdomains/thorin': specifier: 1.0.0-beta.24 version: 1.0.0-beta.24(@vanilla-extract/css@1.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -141,13 +141,13 @@ importers: version: 14.0.2 '@noble/hashes': specifier: ^1.3.2 - version: 1.5.0 + version: 1.4.0 '@rainbow-me/rainbowkit': specifier: 2.1.2 version: 2.1.2(@tanstack/react-query@5.22.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(viem@2.19.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.4(@tanstack/query-core@5.22.2)(@tanstack/react-query@5.22.2(react@18.3.1))(@types/react@18.3.12)(bufferutil@4.0.8)(immer@9.0.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.18.0)(typescript@5.4.5)(utf-8-validate@5.0.10)(viem@2.19.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)) '@sentry/nextjs': specifier: 7.43.x - version: 7.43.0(next@13.5.8(@babel/core@7.26.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 7.43.0(next@13.5.8(@babel/core@7.26.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@splidejs/react-splide': specifier: ^0.7.12 version: 0.7.12 @@ -165,7 +165,7 @@ importers: version: 5.22.2(react@18.3.1) '@tanstack/react-query-devtools': specifier: ^5.59.0 - version: 5.59.0(@tanstack/react-query@5.22.2(react@18.3.1))(react@18.3.1) + version: 5.62.1(@tanstack/react-query@5.22.2(react@18.3.1))(react@18.3.1) '@tanstack/react-query-persist-client': specifier: 5.22.2 version: 5.22.2(@tanstack/react-query@5.22.2(react@18.3.1))(react@18.3.1) @@ -204,10 +204,10 @@ importers: version: 2.1.15 markdown-to-jsx: specifier: ^7.7.3 - version: 7.7.3(react@18.3.1) + version: 7.7.4(react@18.3.1) next: specifier: 13.5.8 - version: 13.5.8(@babel/core@7.26.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 13.5.8(@babel/core@7.26.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) node-fetch: specifier: ^3.3.2 version: 3.3.2 @@ -240,10 +240,10 @@ importers: version: 5.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) styled-components: specifier: ^5.3.5 - version: 5.3.11(@babel/core@7.26.8)(react-dom@18.3.1(react@18.3.1))(react-is@17.0.2)(react@18.3.1) + version: 5.3.6(@babel/core@7.26.9)(react-dom@18.3.1(react@18.3.1))(react-is@17.0.2)(react@18.3.1) tinyglobby: specifier: ^0.2.6 - version: 0.2.6 + version: 0.2.9 ts-pattern: specifier: ^4.3.0 version: 4.3.0 @@ -274,7 +274,7 @@ importers: version: 13.5.6(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@nomiclabs/hardhat-ethers': specifier: npm:hardhat-deploy-ethers@0.3.0-beta.13 - version: hardhat-deploy-ethers@0.3.0-beta.13(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.18(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.17.17)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10)) + version: hardhat-deploy-ethers@0.3.0-beta.13(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.18(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.17.19)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10)) '@openzeppelin/contracts': specifier: ^4.7.3 version: 4.9.6 @@ -283,13 +283,13 @@ importers: version: 0.5.16(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@playwright/test': specifier: ^1.48.2 - version: 1.48.2 + version: 1.49.0 '@testing-library/dom': specifier: ^10.4.0 version: 10.4.0 '@testing-library/jest-dom': specifier: ^6.4.2 - version: 6.4.5(vitest@3.0.5(@types/debug@4.1.12)(@types/node@20.17.17)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.17)(typescript@5.4.5))) + version: 6.4.5(vitest@3.0.6(@types/debug@4.1.12)(@types/node@20.17.19)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.19)(typescript@5.4.5))) '@testing-library/react': specifier: ^16.2.0 version: 16.2.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -301,7 +301,7 @@ importers: version: 14.5.2(@testing-library/dom@10.4.0) '@types/node': specifier: ^20.17.17 - version: 20.17.17 + version: 20.17.19 '@types/pako': specifier: ^2.0.0 version: 2.0.3 @@ -328,19 +328,19 @@ importers: version: 6.21.0(eslint@8.50.0)(typescript@5.4.5) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@5.2.11(@types/node@20.17.17)) + version: 4.3.4(vite@5.2.11(@types/node@20.17.19)) '@vitest/coverage-v8': specifier: ^3.0.5 - version: 3.0.5(vitest@3.0.5(@types/debug@4.1.12)(@types/node@20.17.17)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.17)(typescript@5.4.5))) + version: 3.0.6(vitest@3.0.6(@types/debug@4.1.12)(@types/node@20.17.19)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.19)(typescript@5.4.5))) '@vitest/spy': specifier: ^3.0.5 - version: 3.0.5 + version: 3.0.6 cbor: specifier: ^10.0.3 version: 10.0.3 dotenv: specifier: ^16.0.1 - version: 16.4.7 + version: 16.4.5 eslint: specifier: 8.50.0 version: 8.50.0 @@ -382,16 +382,16 @@ importers: version: 6.2.2(eslint@8.50.0)(typescript@5.4.5) eslint-plugin-vitest: specifier: ^0.5.4 - version: 0.5.4(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.50.0)(typescript@5.4.5))(eslint@8.50.0)(typescript@5.4.5))(eslint@8.50.0)(typescript@5.4.5)(vitest@3.0.5(@types/debug@4.1.12)(@types/node@20.17.17)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.17)(typescript@5.4.5))) + version: 0.5.4(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.50.0)(typescript@5.4.5))(eslint@8.50.0)(typescript@5.4.5))(eslint@8.50.0)(typescript@5.4.5)(vitest@3.0.6(@types/debug@4.1.12)(@types/node@20.17.19)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.19)(typescript@5.4.5))) ethers: specifier: ^5.7.2 version: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) hardhat: specifier: ^2.22.18 - version: 2.22.18(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.17.17)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10) + version: 2.22.18(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.17.19)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10) hardhat-dependency-compiler: specifier: ^1.1.3 - version: 1.1.4(hardhat@2.22.18(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.17.17)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10)) + version: 1.1.4(hardhat@2.22.18(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.17.19)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10)) hardhat-deploy: specifier: ^0.11.12 version: 0.11.45(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -403,16 +403,16 @@ importers: version: 24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) knip: specifier: ^5.44.0 - version: 5.44.0(@types/node@20.17.17)(typescript@5.4.5) + version: 5.44.2(@types/node@20.17.19)(typescript@5.4.5) msw: specifier: ^2.7.0 - version: 2.7.0(@types/node@20.17.17)(typescript@5.4.5) + version: 2.7.0(@types/node@20.17.19)(typescript@5.4.5) next-dev-https: specifier: ^0.1.2 - version: 0.1.2(patch_hash=q5l3x5627ujg3rak6l6v24c2cq)(next@13.5.8(@babel/core@7.26.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 0.1.2(patch_hash=q5l3x5627ujg3rak6l6v24c2cq)(next@13.5.8(@babel/core@7.26.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) next-router-mock: specifier: ^0.9.10 - version: 0.9.13(next@13.5.8(@babel/core@7.26.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 0.9.13(next@13.5.8(@babel/core@7.26.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) pako: specifier: ^2.1.0 version: 2.1.0 @@ -439,7 +439,7 @@ importers: version: 3.3.2 ts-node: specifier: ^10.9.1 - version: 10.9.2(@types/node@20.17.17)(typescript@5.4.5) + version: 10.9.2(@types/node@20.17.19)(typescript@5.4.5) typescript: specifier: ^5.1.6 version: 5.4.5 @@ -448,13 +448,13 @@ importers: version: 0.18.3 vite-plugin-magical-svg: specifier: ^1.3.0 - version: 1.3.0(vite@5.2.11(@types/node@20.17.17)) + version: 1.3.0(vite@5.2.11(@types/node@20.17.19)) vitest: specifier: ^3.0.5 - version: 3.0.5(@types/debug@4.1.12)(@types/node@20.17.17)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.17)(typescript@5.4.5)) + version: 3.0.6(@types/debug@4.1.12)(@types/node@20.17.19)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.19)(typescript@5.4.5)) vitest-canvas-mock: specifier: ^0.3.3 - version: 0.3.3(vitest@3.0.5(@types/debug@4.1.12)(@types/node@20.17.17)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.17)(typescript@5.4.5))) + version: 0.3.3(vitest@3.0.6(@types/debug@4.1.12)(@types/node@20.17.19)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.19)(typescript@5.4.5))) wait-on: specifier: ^8.0.2 version: 8.0.2 @@ -463,7 +463,7 @@ importers: version: 3.57.1(@cloudflare/workers-types@3.19.0)(bufferutil@4.0.8)(utf-8-validate@5.0.10) ws: specifier: ^8.16.0 - version: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + version: 8.17.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) packages: @@ -480,16 +480,20 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@babel/code-frame@7.24.7': - resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + '@babel/code-frame@7.24.6': + resolution: {integrity: sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==} + engines: {node: '>=6.9.0'} + + '@babel/code-frame@7.25.7': + resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} engines: {node: '>=6.9.0'} '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.25.2': - resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} + '@babel/compat-data@7.24.6': + resolution: {integrity: sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==} engines: {node: '>=6.9.0'} '@babel/compat-data@7.26.8': @@ -500,42 +504,42 @@ packages: resolution: {integrity: sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==} engines: {node: '>=6.9.0'} - '@babel/core@7.26.8': - resolution: {integrity: sha512-l+lkXCHS6tQEc5oUpK28xBOZ6+HwaH7YwoYQbLFiYb4nS2/l1tKnZEtEWkD0GuiYdvArf9qBS0XlQGXzPMsNqQ==} + '@babel/core@7.26.9': + resolution: {integrity: sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==} engines: {node: '>=6.9.0'} - '@babel/generator@7.25.0': - resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} + '@babel/generator@7.24.6': + resolution: {integrity: sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==} engines: {node: '>=6.9.0'} - '@babel/generator@7.26.8': - resolution: {integrity: sha512-ef383X5++iZHWAXX0SXQR6ZyQhw/0KtTkrTz61WXRhFM6dhpHulO/RJz79L8S6ugZHJkOOkUrUdxgdF2YiPFnA==} + '@babel/generator@7.26.9': + resolution: {integrity: sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.24.7': - resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} + '@babel/helper-annotate-as-pure@7.24.6': + resolution: {integrity: sha512-DitEzDfOMnd13kZnDqns1ccmftwJTS9DMkyn9pYTxulS7bZxUxpMly3Nf23QQ6NwA4UB8lAqjbqWtyvElEMAkg==} engines: {node: '>=6.9.0'} '@babel/helper-builder-binary-assignment-operator-visitor@7.24.6': resolution: {integrity: sha512-+wnfqc5uHiMYtvRX7qu80Toef8BXeh4HHR1SPeonGb1SKPniNEd4a/nlaJJMv/OIEYvIVavvo0yR7u10Gqz0Iw==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.25.2': - resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + '@babel/helper-compilation-targets@7.24.6': + resolution: {integrity: sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==} engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.26.5': resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.25.0': - resolution: {integrity: sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==} + '@babel/helper-create-class-features-plugin@7.24.6': + resolution: {integrity: sha512-djsosdPJVZE6Vsw3kk7IPRWethP94WHGOhQTc67SNXE0ZzMhHgALw8iGmYS0TD1bbMM0VDROy43od7/hN6WYcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.25.2': - resolution: {integrity: sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==} + '@babel/helper-create-regexp-features-plugin@7.24.6': + resolution: {integrity: sha512-C875lFBIWWwyv6MHZUG9HmRrlTDgOsLWZfYR0nW69gaKJNe0/Mpxx5r0EID2ZdHQkdUmQo2t0uNckTL08/1BgA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -545,28 +549,32 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - '@babel/helper-environment-visitor@7.24.7': - resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} + '@babel/helper-environment-visitor@7.24.6': + resolution: {integrity: sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-function-name@7.24.6': + resolution: {integrity: sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w==} engines: {node: '>=6.9.0'} '@babel/helper-hoist-variables@7.24.6': resolution: {integrity: sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==} engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.24.8': - resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} + '@babel/helper-member-expression-to-functions@7.24.6': + resolution: {integrity: sha512-OTsCufZTxDUsv2/eDXanw/mUZHWOxSbEmC3pP8cgjcy5rgeVPWWMStnv274DV60JtHxTk0adT0QrCzC4M9NWGg==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.24.7': - resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + '@babel/helper-module-imports@7.24.6': + resolution: {integrity: sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==} engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.25.9': resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.25.2': - resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + '@babel/helper-module-transforms@7.24.6': + resolution: {integrity: sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -577,72 +585,106 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-optimise-call-expression@7.24.7': - resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} + '@babel/helper-optimise-call-expression@7.24.6': + resolution: {integrity: sha512-3SFDJRbx7KuPRl8XDUr8O7GAEB8iGyWPjLKJh/ywP/Iy9WOmEfMrsWbaZpvBu2HSYn4KQygIsz0O7m8y10ncMA==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.24.8': - resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + '@babel/helper-plugin-utils@7.24.6': + resolution: {integrity: sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg==} engines: {node: '>=6.9.0'} '@babel/helper-plugin-utils@7.26.5': resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} engines: {node: '>=6.9.0'} - '@babel/helper-remap-async-to-generator@7.25.0': - resolution: {integrity: sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==} + '@babel/helper-remap-async-to-generator@7.24.6': + resolution: {integrity: sha512-1Qursq9ArRZPAMOZf/nuzVW8HgJLkTB9y9LfP4lW2MVp4e9WkLJDovfKBxoDcCk6VuzIxyqWHyBoaCtSRP10yg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.25.0': - resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} + '@babel/helper-replace-supers@7.24.6': + resolution: {integrity: sha512-mRhfPwDqDpba8o1F8ESxsEkJMQkUF8ZIWrAc0FtWhxnjfextxMWxr22RtFizxxSYLjVHDeMgVsRq8BBZR2ikJQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-simple-access@7.24.7': - resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + '@babel/helper-simple-access@7.24.6': + resolution: {integrity: sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-skip-transparent-expression-wrappers@7.24.6': + resolution: {integrity: sha512-jhbbkK3IUKc4T43WadP96a27oYti9gEf1LdyGSP2rHGH77kwLwfhO7TgwnWvxxQVmke0ImmCSS47vcuxEMGD3Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-split-export-declaration@7.24.6': + resolution: {integrity: sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==} engines: {node: '>=6.9.0'} - '@babel/helper-skip-transparent-expression-wrappers@7.24.7': - resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} + '@babel/helper-string-parser@7.24.6': + resolution: {integrity: sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.7': + resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} engines: {node: '>=6.9.0'} '@babel/helper-string-parser@7.25.9': resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.24.6': + resolution: {integrity: sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.7': + resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.25.9': resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.24.8': - resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + '@babel/helper-validator-option@7.24.6': + resolution: {integrity: sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==} engines: {node: '>=6.9.0'} '@babel/helper-validator-option@7.25.9': resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.25.0': - resolution: {integrity: sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==} + '@babel/helper-wrap-function@7.24.6': + resolution: {integrity: sha512-f1JLrlw/jbiNfxvdrfBgio/gRBk3yTAEJWirpAkiJG2Hb22E7cEYKHWo0dFPTv/niPovzIdPdEDetrv6tC6gPQ==} engines: {node: '>=6.9.0'} '@babel/helpers@7.24.6': resolution: {integrity: sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.26.7': - resolution: {integrity: sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==} + '@babel/helpers@7.26.9': + resolution: {integrity: sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.6': + resolution: {integrity: sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.24.7': - resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + '@babel/highlight@7.25.7': + resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.8': - resolution: {integrity: sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==} + '@babel/parser@7.24.6': + resolution: {integrity: sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/parser@7.25.8': + resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/parser@7.26.9': + resolution: {integrity: sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==} engines: {node: '>=6.0.0'} hasBin: true @@ -724,8 +766,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.24.7': - resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + '@babel/plugin-syntax-jsx@7.24.6': + resolution: {integrity: sha512-lWfvAIFNWMlCsU0DRUun2GpFwZdGTukLaHJqRh1JRb80NdAP5Sb1HDHB5X9P9OtgZHQl089UzQkpYlBq2VTPRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -772,8 +814,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.24.7': - resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} + '@babel/plugin-syntax-typescript@7.24.6': + resolution: {integrity: sha512-TzCtxGgVTEJWWwcYwQhCIQ6WaKlo80/B+Onsk4RRCcYqpYGFcG9etPW94VToGte5AAcxRrhjPUFvUS3Y2qKi4A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -784,8 +826,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-arrow-functions@7.24.7': - resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==} + '@babel/plugin-transform-arrow-functions@7.24.6': + resolution: {integrity: sha512-jSSSDt4ZidNMggcLx8SaKsbGNEfIl0PHx/4mFEulorE7bpYLbN0d3pDW3eJ7Y5Z3yPhy3L3NaPCYyTUY7TuugQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -796,8 +838,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-to-generator@7.24.7': - resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==} + '@babel/plugin-transform-async-to-generator@7.24.6': + resolution: {integrity: sha512-NTBA2SioI3OsHeIn6sQmhvXleSl9T70YY/hostQLveWs0ic+qvbA3fa0kwAwQ0OA/XGaAerNZRQGJyRfhbJK4g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -808,8 +850,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.25.0': - resolution: {integrity: sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==} + '@babel/plugin-transform-block-scoping@7.24.6': + resolution: {integrity: sha512-S/t1Xh4ehW7sGA7c1j/hiOBLnEYCp/c2sEG4ZkL8kI1xX9tW2pqJTCHKtdhe/jHKt8nG0pFCrDHUXd4DvjHS9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -826,20 +868,20 @@ packages: peerDependencies: '@babel/core': ^7.12.0 - '@babel/plugin-transform-classes@7.25.0': - resolution: {integrity: sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==} + '@babel/plugin-transform-classes@7.24.6': + resolution: {integrity: sha512-+fN+NO2gh8JtRmDSOB6gaCVo36ha8kfCW1nMq2Gc0DABln0VcHN4PrALDvF5/diLzIRKptC7z/d7Lp64zk92Fg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-computed-properties@7.24.7': - resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==} + '@babel/plugin-transform-computed-properties@7.24.6': + resolution: {integrity: sha512-cRzPobcfRP0ZtuIEkA8QzghoUpSB3X3qSH5W2+FzG+VjWbJXExtx0nbRqwumdBN1x/ot2SlTNQLfBCnPdzp6kg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-destructuring@7.24.8': - resolution: {integrity: sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==} + '@babel/plugin-transform-destructuring@7.24.6': + resolution: {integrity: sha512-YLW6AE5LQpk5npNXL7i/O+U9CE4XsBCuRPgyjl1EICZYKmcitV+ayuuUGMJm2lC1WWjXYszeTnIxF/dq/GhIZQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -880,8 +922,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-function-name@7.25.1': - resolution: {integrity: sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==} + '@babel/plugin-transform-function-name@7.24.6': + resolution: {integrity: sha512-sOajCu6V0P1KPljWHKiDq6ymgqB+vfo3isUS4McqW1DZtvSVU2v/wuMhmRmkg3sFoq6GMaUUf8W4WtoSLkOV/Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -892,8 +934,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-literals@7.25.2': - resolution: {integrity: sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==} + '@babel/plugin-transform-literals@7.24.6': + resolution: {integrity: sha512-f2wHfR2HF6yMj+y+/y07+SLqnOSwRp8KYLpQKOzS58XLVlULhXbiYcygfXQxJlMbhII9+yXDwOUFLf60/TL5tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -916,8 +958,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.24.8': - resolution: {integrity: sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==} + '@babel/plugin-transform-modules-commonjs@7.24.6': + resolution: {integrity: sha512-JEV8l3MHdmmdb7S7Cmx6rbNEjRCgTQMZxllveHO0mx6uiclB0NflCawlQQ6+o5ZrwjUBYPzHm2XoK4wqGVUFuw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -934,8 +976,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-named-capturing-groups-regex@7.24.7': - resolution: {integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==} + '@babel/plugin-transform-named-capturing-groups-regex@7.24.6': + resolution: {integrity: sha512-6DneiCiu91wm3YiNIGDWZsl6GfTTbspuj/toTEqLh9d4cx50UIzSdg+T96p8DuT7aJOBRhFyaE9ZvTHkXrXr6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -982,20 +1024,20 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-parameters@7.24.7': - resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==} + '@babel/plugin-transform-parameters@7.24.6': + resolution: {integrity: sha512-ST7guE8vLV+vI70wmAxuZpIKzVjvFX9Qs8bl5w6tN/6gOypPWUmMQL2p7LJz5E63vEGrDhAiYetniJFyBH1RkA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-methods@7.24.7': - resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==} + '@babel/plugin-transform-private-methods@7.24.6': + resolution: {integrity: sha512-T9LtDI0BgwXOzyXrvgLTT8DFjCC/XgWLjflczTLXyvxbnSR/gpv0hbmzlHE/kmh9nOvlygbamLKRo6Op4yB6aw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-property-in-object@7.24.7': - resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} + '@babel/plugin-transform-private-property-in-object@7.24.6': + resolution: {integrity: sha512-Qu/ypFxCY5NkAnEhCF86Mvg3NSabKsh/TPpBVswEdkGl7+FbsYHy1ziRqJpwGH4thBdQHh8zx+z7vMYmcJ7iaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1012,8 +1054,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-display-name@7.24.7': - resolution: {integrity: sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==} + '@babel/plugin-transform-react-display-name@7.24.6': + resolution: {integrity: sha512-/3iiEEHDsJuj9QU09gbyWGSUxDboFcD7Nj6dnHIlboWSodxXAoaY/zlNMHeYAC0WsERMqgO9a7UaM77CsYgWcg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1036,8 +1078,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx@7.25.2': - resolution: {integrity: sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==} + '@babel/plugin-transform-react-jsx@7.24.6': + resolution: {integrity: sha512-pCtPHhpRZHfwdA5G1Gpk5mIzMA99hv0R8S/Ket50Rw+S+8hkt3wBWqdqHaPw0CuUYxdshUgsPiLQ5fAs4ASMhw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1060,20 +1102,20 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-shorthand-properties@7.24.7': - resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==} + '@babel/plugin-transform-shorthand-properties@7.24.6': + resolution: {integrity: sha512-xnEUvHSMr9eOWS5Al2YPfc32ten7CXdH7Zwyyk7IqITg4nX61oHj+GxpNvl+y5JHjfN3KXE2IV55wAWowBYMVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-spread@7.24.7': - resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==} + '@babel/plugin-transform-spread@7.24.6': + resolution: {integrity: sha512-h/2j7oIUDjS+ULsIrNZ6/TKG97FgmEk1PXryk/HQq6op4XUUUwif2f69fJrzK0wza2zjCS1xhXmouACaWV5uPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-sticky-regex@7.24.7': - resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==} + '@babel/plugin-transform-sticky-regex@7.24.6': + resolution: {integrity: sha512-fN8OcTLfGmYv7FnDrsjodYBo1DhPL3Pze/9mIIE2MGCT1KgADYIOD7rEglpLHZj8PZlC/JFX5WcD+85FLAQusw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1090,8 +1132,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.25.2': - resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==} + '@babel/plugin-transform-typescript@7.24.6': + resolution: {integrity: sha512-H0i+hDLmaYYSt6KU9cZE0gb3Cbssa/oxWis7PX4ofQzbvsfix9Lbh8SRk7LCPDlLWJHUiFeHU0qRRpF/4Zv7mQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1108,8 +1150,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-regex@7.24.7': - resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==} + '@babel/plugin-transform-unicode-regex@7.24.6': + resolution: {integrity: sha512-pssN6ExsvxaKU638qcWb81RrvvgZom3jDgU/r5xFZ7TONkZGFf4MhI2ltMb8OcQWhHyxgIavEU+hgqtbKOmsPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1137,8 +1179,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/preset-typescript@7.24.7': - resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} + '@babel/preset-typescript@7.24.6': + resolution: {integrity: sha512-U10aHPDnokCFRXgyT/MaIRTivUu2K/mu0vJlwRS9LxJmJet+PFQNKpggPyFCUtC6zWSBPjvxjnpNkAn3Uw2m5w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1146,28 +1188,36 @@ packages: '@babel/regjsgen@0.8.0': resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - '@babel/runtime@7.25.0': - resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} + '@babel/runtime@7.24.6': + resolution: {integrity: sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==} engines: {node: '>=6.9.0'} - '@babel/template@7.25.0': - resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + '@babel/template@7.24.6': + resolution: {integrity: sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw==} engines: {node: '>=6.9.0'} - '@babel/template@7.26.8': - resolution: {integrity: sha512-iNKaX3ZebKIsCvJ+0jd6embf+Aulaa3vNBqZ41kM7iTWjx5qzWKXGHiJUW3+nTpQ18SG11hdF8OAzKrpXkb96Q==} + '@babel/template@7.26.9': + resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.25.3': - resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} + '@babel/traverse@7.24.6': + resolution: {integrity: sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.26.8': - resolution: {integrity: sha512-nic9tRkjYH0oB2dzr/JoGIm+4Q6SuYeLEiIiZDwBscRMYFJ+tMAz98fuel9ZnbXViA2I0HVSSRRK8DW5fjXStA==} + '@babel/traverse@7.26.9': + resolution: {integrity: sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==} engines: {node: '>=6.9.0'} - '@babel/types@7.26.8': - resolution: {integrity: sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==} + '@babel/types@7.24.6': + resolution: {integrity: sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.25.8': + resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.26.9': + resolution: {integrity: sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@1.0.2': @@ -1317,8 +1367,8 @@ packages: '@ensdomains/ensjs@2.1.0': resolution: {integrity: sha512-GRbGPT8Z/OJMDuxs75U/jUNEC0tbL0aj7/L/QQznGYKm/tiasp+ndLOaoULy9kKJFC0TBByqfFliEHDgoLhyog==} - '@ensdomains/ensjs@4.0.2': - resolution: {integrity: sha512-4vDIZEFAa1doNA3H9MppUHxflSDYYPVNyaDbdHLksTa4taq3y4dGpletX67Xea8nxI+cMfjEi4nOzLJmPzRE/g==} + '@ensdomains/ensjs@4.0.3-alpha.12': + resolution: {integrity: sha512-tJX+URJtSOtLgydE4V6uLOuG7hrMDah/ZOA2u/0hZuzhPwpVhS1jQRXU1aVnyT3klaLH5QqRL2J3SebzdxqGLQ==} peerDependencies: viem: ^2.9.2 @@ -1776,7 +1826,6 @@ packages: '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} @@ -1784,7 +1833,6 @@ packages: '@humanwhocodes/object-schema@2.0.3': resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead '@ianvs/prettier-plugin-sort-imports@4.2.1': resolution: {integrity: sha512-NKN1LVFWUDGDGr3vt+6Ey3qPeN/163uR1pOPAlkWpgvAqgxQ6kSdUf1F0it8aHUtKRUzEGcK38Wxd07O61d7+Q==} @@ -1795,22 +1843,22 @@ packages: '@vue/compiler-sfc': optional: true - '@inquirer/confirm@5.1.0': - resolution: {integrity: sha512-osaBbIMEqVFjTX5exoqPXs6PilWQdjaLhGtMDXMXg/yxkHXNq43GlxGyTA35lK2HpzUgDN+Cjh/2AmqCN0QJpw==} + '@inquirer/confirm@5.1.3': + resolution: {integrity: sha512-fuF9laMmHoOgWapF9h9hv6opA5WvmGFHsTYGCmuFxcghIhEhb3dN0CdQR4BUMqa2H506NCj8cGX4jwMsE4t6dA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' - '@inquirer/core@10.1.1': - resolution: {integrity: sha512-rmZVXy9iZvO3ZStEe/ayuuwIJ23LSF13aPMlLMTQARX6lGUBDHGV8UB5i9MRrfy0+mZwt5/9bdy8llszSD3NQA==} + '@inquirer/core@10.1.4': + resolution: {integrity: sha512-5y4/PUJVnRb4bwWY67KLdebWOhOc7xj5IP2J80oWXa64mVag24rwQ1VAdnj7/eDY/odhguW0zQ1Mp1pj6fO/2w==} engines: {node: '>=18'} - '@inquirer/figures@1.0.8': - resolution: {integrity: sha512-tKd+jsmhq21AP1LhexC0pPwsCxEhGgAkg28byjJAd+xhmIs8LUX8JbUc3vBf3PhLxWiB5EvyBE5X7JSPAqMAqg==} + '@inquirer/figures@1.0.9': + resolution: {integrity: sha512-BXvGj0ehzrngHTPTDqUoDT3NXL8U0RxUk2zJm2A66RhCEIWdtU1v6GuUqNAgArW4PQ9CinqIWyHdQgdwOj06zQ==} engines: {node: '>=18'} - '@inquirer/type@3.0.1': - resolution: {integrity: sha512-+ksJMIy92sOAiAccGpcKZUc3bYO07cADnscIxHBknEm3uNts3movSmBofc1908BNy5edKscxYeAdaX1NXkHS6A==} + '@inquirer/type@3.0.2': + resolution: {integrity: sha512-ZhQ4TvhwHZF+lGhQ2O/rsjo80XoZR5/5qhOY3t6FJuX5XBg5Be8YzYTvaUGJnc12AUGI2nr4QSUE4PhKSigx7g==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1843,6 +1891,9 @@ packages: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} @@ -1852,8 +1903,8 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@keyv/serialize@1.0.2': - resolution: {integrity: sha512-+E/LyaAeuABniD/RvUezWVXKpeuvwLEA9//nE9952zBaOdBd2mQ3pPoM8cUe2X6IcMByfuSLzmYqnYshG60+HQ==} + '@keyv/serialize@1.0.3': + resolution: {integrity: sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==} '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} @@ -1880,8 +1931,8 @@ packages: resolution: {integrity: sha512-IoQPmql8q7ABLruW7i4EYVHWUbF74yrp63bRuXV5Zf9BQwcn5H9Ww1eLtROYvI1bUXwOiHZ6qT5CWTrDc/t/AA==} engines: {node: '>=16.0.0'} - '@metamask/json-rpc-engine@9.0.2': - resolution: {integrity: sha512-wteoGUDhiqCgyO6Gdjnm6n+7raoRS+dRHOIsTc7LK2zpezAynav9BIK7QWPcJZeieMTSG5HuYrQf+epLbcdB/g==} + '@metamask/json-rpc-engine@9.0.3': + resolution: {integrity: sha512-efeRXW7KaL0BJcAeudSGhzu6sD3hMpxx9nl3V+Yemm1bsyc66yVUhYPR+XH+Y6ZvB2p05ywgvd1Ev5PBwFzr/g==} engines: {node: ^18.18 || >=20} '@metamask/json-rpc-middleware-stream@7.0.2': @@ -1907,8 +1958,12 @@ packages: resolution: {integrity: sha512-znVCvux30+3SaUwcUGaSf+pUckzT5ukPRpcBmy+muBLC0yaWnBcvDqGfcsw6CBIenUdFrVoAFa8B6jsuCY/a+g==} engines: {node: ^18.18 || >=20} - '@metamask/rpc-errors@6.3.1': - resolution: {integrity: sha512-ugDY7cKjF4/yH5LtBaOIKHw/AiGGSAmzptAUEiAEGr/78LwuzcXAxmzEQfSfMIfI+f9Djr8cttq1pRJJKfTuCg==} + '@metamask/rpc-errors@6.2.1': + resolution: {integrity: sha512-VTgWkjWLzb0nupkFl1duQi9Mk8TGT9rsdnQg6DeRrYEFxtFOh0IF8nAwxM/4GWqDl6uIB06lqUBgUrAVWl62Bw==} + engines: {node: '>=16.0.0'} + + '@metamask/rpc-errors@6.4.0': + resolution: {integrity: sha512-1ugFO1UoirU2esS3juZanS/Fo8C8XYocCuBpfZI5N7ECtoG+zu0wF+uWZASik6CkO6w9n/Iebt4iI4pT0vptpg==} engines: {node: '>=16.0.0'} '@metamask/safe-event-emitter@2.0.0': @@ -1965,8 +2020,8 @@ packages: resolution: {integrity: sha512-dbIc3C7alOe0agCuBHM1h71UaEaEqOk2W8rAtEn8QGz4haH2Qq7MoK6i7v2guzvkJVVh79c+QCzIqphC3KvrJg==} engines: {node: '>=16.0.0'} - '@metamask/utils@9.2.0': - resolution: {integrity: sha512-01riKC6oc6YJVJBL6g6TgCBwcmzwuVSIIMhnwvWanPWs3ZpUabJzy3GR9PlsBPa2pHd1p0Q6WMVRExWWEHzsQA==} + '@metamask/utils@9.3.0': + resolution: {integrity: sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==} engines: {node: '>=16.0.0'} '@motionone/animation@10.17.0': @@ -1994,8 +2049,8 @@ packages: resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==} deprecated: Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion - '@mswjs/interceptors@0.37.3': - resolution: {integrity: sha512-USvgCL/uOGFtVa6SVyRrC8kIAedzRohxIXN5LISlg5C5vLZCn7dgMFVSNhSF9cuBEFrm/O2spDWEZeMnw4ZXYg==} + '@mswjs/interceptors@0.37.5': + resolution: {integrity: sha512-AAwRb5vXFcY4L+FvZ7LZusDuZ0vEe0Zm8ohn1FM6/X7A3bj4mqmkAcGRWuvC2JwSygNwHAAmMnAI73vPHeqsHA==} engines: {node: '>=18'} '@multiformats/sha3@2.0.17': @@ -2070,10 +2125,6 @@ packages: '@noble/curves@1.4.0': resolution: {integrity: sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==} - '@noble/curves@1.6.0': - resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} - engines: {node: ^14.21.3 || >=16} - '@noble/hashes@1.2.0': resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} @@ -2255,7 +2306,6 @@ packages: '@openzeppelin/test-helpers@0.5.16': resolution: {integrity: sha512-T1EvspSfH1qQO/sgGlskLfYVBbqzJR23SZzYl/6B2JnT4EhThcI85UpvDk0BkLWKaDScQTabGHt4GzHW+3SfZg==} - deprecated: Package no longer maintained. Consider using @nomicfoundation/hardhat-chai-matchers and @nomicfoundation/hardhat-network-helpers instead. '@parcel/watcher-android-arm64@2.4.1': resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} @@ -2347,8 +2397,8 @@ packages: resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@playwright/test@1.48.2': - resolution: {integrity: sha512-54w1xCWfXuax7dz4W2M9uw0gDyh+ti/0K/MxcCUxChFh37kkdxPdfZDw5QBbuPUJHr1CiHJ1hXgSs+GgeQc5Zw==} + '@playwright/test@1.49.0': + resolution: {integrity: sha512-DMulbwQURa8rNIQrf94+jPJQ4FmOVdpE5ZppRNvWVjvhC+6sOeo28r8MgIpQRYouXRtt/FCCXU7zn20jnHR4Qw==} engines: {node: '>=18'} hasBin: true @@ -2476,8 +2526,8 @@ packages: resolution: {integrity: sha512-7nakIjcRSs6781LkizYpIfXh1DYlkUDqyALciqz/BjFU/S97sVjZdL4cuKsG9NEarytE+f6p0Qbq2Bo1aocVUA==} engines: {node: '>=16'} - '@scure/base@1.1.9': - resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} + '@scure/base@1.1.6': + resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==} '@scure/bip32@1.1.5': resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} @@ -2895,8 +2945,8 @@ packages: '@tanstack/query-core@5.22.2': resolution: {integrity: sha512-z3PwKFUFACMUqe1eyesCIKg3Jv1mysSrYfrEW5ww5DCDUD4zlpTKBvUDaEjsfZzL3ULrFLDM9yVUxI/fega1Qg==} - '@tanstack/query-devtools@5.58.0': - resolution: {integrity: sha512-iFdQEFXaYYxqgrv63ots+65FGI+tNp5ZS5PdMU1DWisxk3fez5HG3FyVlbUva+RdYS5hSLbxZ9aw3yEs97GNTw==} + '@tanstack/query-devtools@5.61.4': + resolution: {integrity: sha512-21Tw+u8E3IJJj4A/Bct4H0uBaDTEu7zBrR79FeSyY+mS2gx5/m316oDtJiKkILc819VSTYt+sFzODoJNcpPqZQ==} '@tanstack/query-persist-client-core@5.22.2': resolution: {integrity: sha512-sFDgWoN54uclIDIoImPmDzxTq8HhZEt9pO0JbVHjI6LPZqunMMF9yAq9zFKrpH//jD5f+rBCQsdGyhdpUo9e8Q==} @@ -2904,10 +2954,10 @@ packages: '@tanstack/query-sync-storage-persister@5.22.2': resolution: {integrity: sha512-mDxXURiMPzWXVc+FwDu94VfIt/uHk5+9EgcxJRYtj8Vsx18T0DiiKk1VgVOBLd97C+Sa7z7ujP2D6Y5lphW+hQ==} - '@tanstack/react-query-devtools@5.59.0': - resolution: {integrity: sha512-Kz7577FQGU8qmJxROIT/aOwmkTcxfBqgTP6r1AIvuJxVMVHPkp8eQxWQ7BnfBsy/KTJHiV9vMtRVo1+R1tB3vg==} + '@tanstack/react-query-devtools@5.62.1': + resolution: {integrity: sha512-fxf9m9nwWcP36wY5Vc2OQ9pLbCcTgHmsaBfjD4PQ+Aphze4cmsC8QF9UeAy7LpYHbOA4wycE7MFjD541BRm9+g==} peerDependencies: - '@tanstack/react-query': ^5.59.0 + '@tanstack/react-query': ^5.62.1 react: ^18.2.0 '@tanstack/react-query-persist-client@5.22.2': @@ -3083,9 +3133,6 @@ packages: '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - '@types/gensync@1.0.4': - resolution: {integrity: sha512-C3YYeRQWp2fmq9OryX+FoDy8nXS6scQ7dPptD8LnFDAUNcKWJjXQKDNJD3HVm+kOUsXhTOkpi69vI4EuAr95bA==} - '@types/hoist-non-react-statics@3.3.5': resolution: {integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==} @@ -3128,8 +3175,8 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@20.17.17': - resolution: {integrity: sha512-/WndGO4kIfMicEQLTi/mDANUu/iVUhT7KboZPdEqqHQ4aTS+3qT3U5gIqWDFV+XouorjfgGqvKILJeHhuQgFYg==} + '@types/node@20.17.19': + resolution: {integrity: sha512-LEwC7o1ifqg/6r2gn9Dns0f1rhK+fPFDoMiceTJ6kWmVk6bgXBI/9IOWfVan4WiAavK9pIVWdX0/e3J+eEUh5A==} '@types/pako@2.0.3': resolution: {integrity: sha512-bq0hMV9opAcrmE0Byyo0fY3Ew4tgOevJmQ9grUhpXQhYfyLJ1Kqg3P33JT5fdbT2AjeAjR51zqqVjAL/HMkx7Q==} @@ -3182,8 +3229,8 @@ packages: '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@types/yargs@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + '@types/yargs@17.0.32': + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} '@typescript-eslint/eslint-plugin@6.21.0': resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} @@ -3322,20 +3369,20 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 - '@vitest/coverage-v8@3.0.5': - resolution: {integrity: sha512-zOOWIsj5fHh3jjGwQg+P+J1FW3s4jBu1Zqga0qW60yutsBtqEqNEJKWYh7cYn1yGD+1bdPsPdC/eL4eVK56xMg==} + '@vitest/coverage-v8@3.0.6': + resolution: {integrity: sha512-JRTlR8Bw+4BcmVTICa7tJsxqphAktakiLsAmibVLAWbu1lauFddY/tXeM6sAyl1cgkPuXtpnUgaCPhTdz1Qapg==} peerDependencies: - '@vitest/browser': 3.0.5 - vitest: 3.0.5 + '@vitest/browser': 3.0.6 + vitest: 3.0.6 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@3.0.5': - resolution: {integrity: sha512-nNIOqupgZ4v5jWuQx2DSlHLEs7Q4Oh/7AYwNyE+k0UQzG7tSmjPXShUikn1mpNGzYEN2jJbTvLejwShMitovBA==} + '@vitest/expect@3.0.6': + resolution: {integrity: sha512-zBduHf/ja7/QRX4HdP1DSq5XrPgdN+jzLOwaTq/0qZjYfgETNFCKf9nOAp2j3hmom3oTbczuUzrzg9Hafh7hNg==} - '@vitest/mocker@3.0.5': - resolution: {integrity: sha512-CLPNBFBIE7x6aEGbIjaQAX03ZZlBMaWwAjBdMkIf/cAn6xzLTiM3zYqO/WAbieEjsAZir6tO71mzeHZoodThvw==} + '@vitest/mocker@3.0.6': + resolution: {integrity: sha512-KPztr4/tn7qDGZfqlSPQoF2VgJcKxnDNhmfR3VgZ6Fy1bO8T9Fc1stUiTXtqz0yG24VpD00pZP5f8EOFknjNuQ==} peerDependencies: msw: ^2.4.9 vite: ^5.0.0 || ^6.0.0 @@ -3345,20 +3392,20 @@ packages: vite: optional: true - '@vitest/pretty-format@3.0.5': - resolution: {integrity: sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==} + '@vitest/pretty-format@3.0.6': + resolution: {integrity: sha512-Zyctv3dbNL+67qtHfRnUE/k8qxduOamRfAL1BurEIQSyOEFffoMvx2pnDSSbKAAVxY0Ej2J/GH2dQKI0W2JyVg==} - '@vitest/runner@3.0.5': - resolution: {integrity: sha512-BAiZFityFexZQi2yN4OX3OkJC6scwRo8EhRB0Z5HIGGgd2q+Nq29LgHU/+ovCtd0fOfXj5ZI6pwdlUmC5bpi8A==} + '@vitest/runner@3.0.6': + resolution: {integrity: sha512-JopP4m/jGoaG1+CBqubV/5VMbi7L+NQCJTu1J1Pf6YaUbk7bZtaq5CX7p+8sY64Sjn1UQ1XJparHfcvTTdu9cA==} - '@vitest/snapshot@3.0.5': - resolution: {integrity: sha512-GJPZYcd7v8QNUJ7vRvLDmRwl+a1fGg4T/54lZXe+UOGy47F9yUfE18hRCtXL5aHN/AONu29NGzIXSVFh9K0feA==} + '@vitest/snapshot@3.0.6': + resolution: {integrity: sha512-qKSmxNQwT60kNwwJHMVwavvZsMGXWmngD023OHSgn873pV0lylK7dwBTfYP7e4URy5NiBCHHiQGA9DHkYkqRqg==} - '@vitest/spy@3.0.5': - resolution: {integrity: sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg==} + '@vitest/spy@3.0.6': + resolution: {integrity: sha512-HfOGx/bXtjy24fDlTOpgiAEJbRfFxoX3zIGagCqACkFKKZ/TTOE6gYMKXlqecvxEndKFuNHcHqP081ggZ2yM0Q==} - '@vitest/utils@3.0.5': - resolution: {integrity: sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==} + '@vitest/utils@3.0.6': + resolution: {integrity: sha512-18ktZpf4GQFTbf9jK543uspU03Q2qya7ZGya5yiZ0Gx0nnnalBvd5ZBislbl2EhLjM8A8rt4OilqKG7QwcGkvQ==} '@wagmi/connectors@5.1.4': resolution: {integrity: sha512-LY8RAHy5ichhc7zknFrfrQ3RYZ/fHGgojBz0zMFae5rRrjkR3fG4gRQ9mauPwykGJmOSZshGiFryG1F1gLBm3A==} @@ -3449,7 +3496,6 @@ packages: '@walletconnect/sign-client@2.11.1': resolution: {integrity: sha512-s3oKSx6/F5X2WmkV1jfJImBFACf9Km5HpTb+n5q+mobJVpUQw/clvoVyIrNNppLhm1V1S/ylHXh0qCrDppDpCA==} - deprecated: Reliability and performance greatly improved - please see https://github.com/WalletConnect/walletconnect-monorepo/releases '@walletconnect/time@1.0.2': resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} @@ -3483,17 +3529,6 @@ packages: zod: optional: true - abitype@1.0.6: - resolution: {integrity: sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -3514,8 +3549,8 @@ packages: resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} - acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} hasBin: true @@ -3579,8 +3614,8 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} ansi-styles@3.2.1: @@ -3683,8 +3718,8 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-corejs3@0.10.6: - resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} + babel-plugin-polyfill-corejs3@0.10.4: + resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -3803,13 +3838,13 @@ packages: browserify-aes@1.2.0: resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} - browserslist@4.23.3: - resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - browserslist@4.24.4: - resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + browserslist@4.24.0: + resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -3894,11 +3929,11 @@ packages: camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - caniuse-lite@1.0.30001651: - resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} + caniuse-lite@1.0.30001621: + resolution: {integrity: sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==} - caniuse-lite@1.0.30001699: - resolution: {integrity: sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==} + caniuse-lite@1.0.30001669: + resolution: {integrity: sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==} capnp-ts@0.7.0: resolution: {integrity: sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==} @@ -3924,8 +3959,8 @@ packages: resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} engines: {node: '>=4'} - chai@5.1.2: - resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} + chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} engines: {node: '>=12'} chalk@2.4.2: @@ -4154,8 +4189,8 @@ packages: copy-to-clipboard@3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} - core-js-compat@3.38.0: - resolution: {integrity: sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A==} + core-js-compat@3.37.1: + resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -4308,8 +4343,8 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} - dayjs@1.11.12: - resolution: {integrity: sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==} + dayjs@1.11.11: + resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -4336,8 +4371,8 @@ packages: supports-color: optional: true - debug@4.3.6: - resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -4462,8 +4497,8 @@ packages: resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} engines: {node: '>=6'} - docker-compose@1.1.0: - resolution: {integrity: sha512-VrkQJNafPQ5d6bGULW0P6KqcxSkv3ZU5Wn2wQA19oB71o7+55vQ9ogFe2MMeNbK+jc9rrKVy280DnHO5JLMWOQ==} + docker-compose@1.1.1: + resolution: {integrity: sha512-UkIUz0LtzuO17Ijm6SXMGtfZMs7IvbNwvuJBiBuN93PIhr/n9/sbJMqpvYFaCBGfwu1ZM4PPPDgQzeeke4lEoA==} engines: {node: '>= 6.0.0'} doctrine@2.1.0: @@ -4502,6 +4537,10 @@ packages: dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + dotenv@16.4.7: resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} engines: {node: '>=12'} @@ -4527,16 +4566,15 @@ packages: eciesjs@0.3.18: resolution: {integrity: sha512-RQhegEtLSyIiGJmFTZfvCTHER/fymipXFVx6OwSRYD6hOuy+6Kjpk0dGvIfP9kxn/smBpxQy71uxpGO406ITCw==} - deprecated: Please upgrade to v0.4+ ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.6: - resolution: {integrity: sha512-jwXWsM5RPf6j9dPYzaorcBSUg6AiqocPEyMpkchkvntaH9HGfOOMZwxMJjDY/XEs3T5dM7uyH1VhRMkqUU9qVw==} + electron-to-chromium@1.4.783: + resolution: {integrity: sha512-bT0jEz/Xz1fahQpbZ1D7LgmPYZ3iHVY39NcWWro1+hA2IvjiPeaXtfSqrQ+nXjApMvQRE2ASt1itSLRrebHMRQ==} - electron-to-chromium@1.5.97: - resolution: {integrity: sha512-HKLtaH02augM7ZOdYRuO19rWDeY+QSJ1VxnXFa/XDFLf07HvM90pALIJFgrO+UVaajI3+aJMMpojoUTLZyQ7JQ==} + electron-to-chromium@1.5.41: + resolution: {integrity: sha512-dfdv/2xNjX0P8Vzme4cfzHqnPm5xsZXwsolTYr0eyW18IUmNyG08vL+fttvinTfhKfIKdRoqkDIC9e9iWQCNYQ==} elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -4570,8 +4608,8 @@ packages: resolution: {integrity: sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==} engines: {node: '>=10.0.0'} - enhanced-resolve@5.17.1: - resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + enhanced-resolve@5.16.1: + resolution: {integrity: sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==} engines: {node: '>=10.13.0'} enhanced-resolve@5.18.1: @@ -4792,7 +4830,6 @@ packages: eslint@8.50.0: resolution: {integrity: sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true esniff@2.0.1: @@ -4861,7 +4898,6 @@ packages: ethereum-bloom-filters@1.1.0: resolution: {integrity: sha512-J1gDRkLpuGNvWYzWslBQR9cDV4nd4kfvVTE/Wy4Kkm4yb3EYRSlyi0eB/inTsSTTVyA0+HyzHgbr95Fn/Z1fSw==} - deprecated: do not use this package use package versions above as this can miss some topics ethereum-cryptography@0.1.3: resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} @@ -5001,8 +5037,8 @@ packages: fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - fdir@6.3.0: - resolution: {integrity: sha512-QOnuT+BOtivR77wYvCWHfGt9s4Pz1VIMbD463vegT5MLqNXy8rYFT/lPVEqf/bhYeT6qmqrNHhsX+rWwe3rOCQ==} + fdir@6.4.2: + resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -5058,8 +5094,8 @@ packages: flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - flatted@3.3.2: - resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} fmix@0.1.0: resolution: {integrity: sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==} @@ -5352,8 +5388,8 @@ packages: hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - hookified@1.7.0: - resolution: {integrity: sha512-XQdMjqC1AyeOzfs+17cnIk7Wdfu1hh2JtcyNfBf5u9jHrT3iZUlGHxLTntFBuk5lwkqJ6l3+daeQdHK5yByHVA==} + hookified@1.7.1: + resolution: {integrity: sha512-OXcdHsXeOiD7OJ5zvWj8Oy/6RCdLwntAX+wUrfemNcMGn6sux4xbEHi2QXwqePYhjQ/yvxxq2MvCRirdlHscBw==} hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -5667,8 +5703,8 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jiti@1.21.6: - resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true jiti@2.4.2: @@ -5718,8 +5754,8 @@ packages: engines: {node: '>=4'} hasBin: true - jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} hasBin: true @@ -5808,8 +5844,8 @@ packages: klaw@1.3.1: resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==} - knip@5.44.0: - resolution: {integrity: sha512-j39v3LYCmU6P6HN/TG14bc0Dlthl12g6NogdEZHQdhlVS6BqfnGGS3ospYYwLill6Sdc68eptwGtThunqq7lxA==} + knip@5.44.2: + resolution: {integrity: sha512-FbNYckASiU73X61cKE8Uw3QuA+jJozrB8z8tDjbcCRqM9e3ji2+PT5sigSSm3IAVDpqWdhdgsIJVZ2B74Tiqrw==} engines: {node: '>=18.18.0'} hasBin: true peerDependencies: @@ -5879,7 +5915,6 @@ packages: lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -5901,6 +5936,9 @@ packages: loupe@2.3.7: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + loupe@3.1.2: + resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} + loupe@3.1.3: resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} @@ -5942,6 +5980,9 @@ packages: resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} engines: {node: '>=12'} + magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} @@ -5955,8 +5996,8 @@ packages: make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - markdown-to-jsx@7.7.3: - resolution: {integrity: sha512-o35IhJDFP6Fv60zPy+hbvZSQMmgvSGdK5j8NRZ7FeZMY+Bgqw+dSg7SC1ZEzC26++CiOUCqkbq96/c3j/FfTEQ==} + markdown-to-jsx@7.7.4: + resolution: {integrity: sha512-1bSfXyBKi+EYS3YY+e0Csuxf8oZ3decdfhOav/Z7Wrk89tjudyL5FOmwZQUoy0/qVXGUl+6Q3s2SWtpDEWITfQ==} engines: {node: '>= 10'} peerDependencies: react: ^18.2.0 @@ -6014,6 +6055,10 @@ packages: micro-ftch@0.3.1: resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -6320,12 +6365,12 @@ packages: resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} hasBin: true + node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - nofilter@1.0.4: resolution: {integrity: sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA==} engines: {node: '>=8'} @@ -6449,8 +6494,8 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} pako@2.1.0: resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} @@ -6520,6 +6565,9 @@ packages: path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + path-to-regexp@6.2.2: + resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} + path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} @@ -6551,6 +6599,9 @@ packages: performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -6595,13 +6646,13 @@ packages: pkg-types@1.1.1: resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} - playwright-core@1.48.2: - resolution: {integrity: sha512-sjjw+qrLFlriJo64du+EK0kJgZzoQPsabGF4lBvsid+3CNIZIYLgnMj9V6JY5VhM2Peh20DJWIVpVljLLnlawA==} + playwright-core@1.49.0: + resolution: {integrity: sha512-R+3KKTQF3npy5GTiKH/T+kdhoJfJojjHESR1YEWhYuEKRVfVaxH3+4+GvXE5xyCngCxhxnykk0Vlah9v8fs3jA==} engines: {node: '>=18'} hasBin: true - playwright@1.48.2: - resolution: {integrity: sha512-NjYvYgp4BPmiwfe31j4gHLa3J7bD2WiBz8Lk2RoSsmX38SVIARZ18VYjxLjAcDsAhA+F4iSEXTSGgjua0rrlgQ==} + playwright@1.49.0: + resolution: {integrity: sha512-eKpmys0UFDnfNb3vfsf8Vx2LEOtflgRebl0Im2eQQnYMA4Aqd+Zw8bEOB+7ZKvN76901mRnqdsiOGKxzVTbi7A==} engines: {node: '>=18'} hasBin: true @@ -6647,8 +6698,8 @@ packages: resolution: {integrity: sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==} engines: {node: ^10 || ^12 || >=14} - preact@10.23.1: - resolution: {integrity: sha512-O5UdRsNh4vdZaTieWe3XOgSpdMAmkIYBCT3VhQDlKrzyCm8lUYsk0fmVEvoQQifoOjFRTaHZO69ylrzTW2BH+A==} + preact@10.22.0: + resolution: {integrity: sha512-RRurnSjJPj4rp5K6XoP45Ui33ncb7e4H7WiOHVpjbkvqvA3U+N8Z6Qbo0AE6leGYBV66n8EhEaFixvIu3SkxFw==} prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -6931,8 +6982,8 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - readdirp@4.1.1: - resolution: {integrity: sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==} + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} real-require@0.1.0: @@ -7143,8 +7194,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} engines: {node: '>=10'} hasBin: true @@ -7353,6 +7404,9 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} + std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + std-env@3.8.0: resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} @@ -7450,8 +7504,8 @@ packages: resolution: {integrity: sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==} engines: {node: '>=14.16'} - styled-components@5.3.11: - resolution: {integrity: sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==} + styled-components@5.3.6: + resolution: {integrity: sha512-hGTZquGAaTqhGWldX7hhfzjnIYBZ0IXQXkCYdvF1Sq3DsUaLx6+NTHC5Jj1ooM2F68sBiVz3lvhfwQs/S3l6qg==} engines: {node: '>=10'} peerDependencies: react: ^18.2.0 @@ -7602,8 +7656,8 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyglobby@0.2.6: - resolution: {integrity: sha512-NbBoFBpqfcgd1tCiO8Lkfdk+xrA7mlLR9zgvZcZWQQwU63XAfUePyd6wZBaU93Hqw347lHnwFzttAkemHzzz4g==} + tinyglobby@0.2.9: + resolution: {integrity: sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==} engines: {node: '>=12.0.0'} tinypool@1.0.2: @@ -7625,6 +7679,10 @@ packages: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -7685,6 +7743,9 @@ packages: ts-pattern@4.3.0: resolution: {integrity: sha512-pefrkcd4lmIVR0LA49Imjf9DYLK8vtWhqBPA3Ya1ir8xCW0O2yjL9dsCVvI7pCodLC5q7smNpEtDR2yVulQxOg==} + ts-pattern@5.5.0: + resolution: {integrity: sha512-jqbIpTsa/KKTJYWgPNsFNbLVpwCgzXfFJ1ukNn4I8hMwyQzHMJnk/BqWzggB0xpkILuKzaO/aMYhS0SkaJyKXg==} + ts-pattern@5.6.2: resolution: {integrity: sha512-d4IxJUXROL5NCa3amvMg6VQW2HVtZYmUTPfvVtO7zJWGYLJ+mry9v2OmYm+z67aniQoQ8/yFNadiEwtNS9qQiw==} @@ -7694,8 +7755,8 @@ packages: tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - tslib@2.6.3: - resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} tsort@0.0.1: resolution: {integrity: sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==} @@ -7741,8 +7802,8 @@ packages: resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} engines: {node: '>=8'} - type-fest@4.30.0: - resolution: {integrity: sha512-G6zXWS1dLj6eagy6sVhOMQiLtJdxQBHIA9Z6HFUNLOlr6MFOgzV8wvmidtPONfPtEUv0uZsy77XJNzTAfwPDaA==} + type-fest@4.32.0: + resolution: {integrity: sha512-rfgpoi08xagF3JSdtJlCwMq9DGNDE0IMh3Mkpc1wUypg9vPi786AiqeBBKcqvIkq42azsBM85N490fyZjeUftw==} engines: {node: '>=16'} type-is@1.6.18: @@ -7775,8 +7836,9 @@ packages: engines: {node: '>=14.17'} hasBin: true - ua-parser-js@1.0.37: - resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} + ua-parser-js@1.0.39: + resolution: {integrity: sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw==} + hasBin: true ufo@1.5.3: resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} @@ -7883,14 +7945,14 @@ packages: resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} hasBin: true - update-browserslist-db@1.1.0: - resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + update-browserslist-db@1.0.16: + resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' - update-browserslist-db@1.1.2: - resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -8015,8 +8077,8 @@ packages: typescript: optional: true - vite-node@3.0.5: - resolution: {integrity: sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A==} + vite-node@3.0.6: + resolution: {integrity: sha512-s51RzrTkXKJrhNbUzQRsarjmAae7VmMPAsRT7lppVpIg6mK3zGthP9Hgz0YQQKuNcF+Ii7DfYk3Fxz40jRmePw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -8058,16 +8120,16 @@ packages: peerDependencies: vitest: '*' - vitest@3.0.5: - resolution: {integrity: sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q==} + vitest@3.0.6: + resolution: {integrity: sha512-/iL1Sc5VeDZKPDe58oGK4HUFLhw6b5XdY1MYawjuSaDA4sEfYlY9HnS6aCEG26fX+MgUi7MwlduTBHHAI/OvMA==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.0.5 - '@vitest/ui': 3.0.5 + '@vitest/browser': 3.0.6 + '@vitest/ui': 3.0.6 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -8449,8 +8511,8 @@ packages: utf-8-validate: optional: true - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + ws@7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 @@ -8473,8 +8535,8 @@ packages: utf-8-validate: optional: true - ws@8.17.1: - resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + ws@8.17.0: + resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -8485,8 +8547,8 @@ packages: utf-8-validate: optional: true - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -8553,8 +8615,8 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yaml@2.5.0: - resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} + yaml@2.4.2: + resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} engines: {node: '>= 14'} hasBin: true @@ -8617,8 +8679,8 @@ packages: peerDependencies: ethers: ^5.7.0 - zod-validation-error@3.3.1: - resolution: {integrity: sha512-uFzCZz7FQis256dqw4AhPQgD6f3pzNca/Zh62RNELavlumQB3nDIUFbF5JQfFLcMbO1s02Q7Xg/gpcOBlEnYZA==} + zod-validation-error@3.4.0: + resolution: {integrity: sha512-ZOPR9SVY6Pb2qqO5XHt+MkkTRxGXb4EVtnjc9JpXUOtUB1T9Ru7mZOT361AN3MsetVe7R0a1KZshJDZdgp9miQ==} engines: {node: '>=18.0.0'} peerDependencies: zod: ^3.18.0 @@ -8654,9 +8716,14 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@babel/code-frame@7.24.7': + '@babel/code-frame@7.24.6': + dependencies: + '@babel/highlight': 7.24.6 + picocolors: 1.0.1 + + '@babel/code-frame@7.25.7': dependencies: - '@babel/highlight': 7.24.7 + '@babel/highlight': 7.25.7 picocolors: 1.1.1 '@babel/code-frame@7.26.2': @@ -8665,79 +8732,78 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.25.2': {} + '@babel/compat-data@7.24.6': {} '@babel/compat-data@7.26.8': {} '@babel/core@7.24.6': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.6) + '@babel/code-frame': 7.24.6 + '@babel/generator': 7.24.6 + '@babel/helper-compilation-targets': 7.24.6 + '@babel/helper-module-transforms': 7.24.6(@babel/core@7.24.6) '@babel/helpers': 7.24.6 - '@babel/parser': 7.26.8 - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.3(supports-color@5.5.0) - '@babel/types': 7.26.8 + '@babel/parser': 7.24.6 + '@babel/template': 7.24.6 + '@babel/traverse': 7.24.6(supports-color@5.5.0) + '@babel/types': 7.24.6 convert-source-map: 2.0.0 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.4(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/core@7.26.8': + '@babel/core@7.26.9': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.8 + '@babel/generator': 7.26.9 '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.8) - '@babel/helpers': 7.26.7 - '@babel/parser': 7.26.8 - '@babel/template': 7.26.8 - '@babel/traverse': 7.26.8 - '@babel/types': 7.26.8 - '@types/gensync': 1.0.4 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.9) + '@babel/helpers': 7.26.9 + '@babel/parser': 7.26.9 + '@babel/template': 7.26.9 + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 convert-source-map: 2.0.0 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.7 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/generator@7.25.0': + '@babel/generator@7.24.6': dependencies: - '@babel/types': 7.26.8 + '@babel/types': 7.24.6 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - '@babel/generator@7.26.8': + '@babel/generator@7.26.9': dependencies: - '@babel/parser': 7.26.8 - '@babel/types': 7.26.8 + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 + jsesc: 3.0.2 - '@babel/helper-annotate-as-pure@7.24.7': + '@babel/helper-annotate-as-pure@7.24.6': dependencies: - '@babel/types': 7.26.8 + '@babel/types': 7.24.6 '@babel/helper-builder-binary-assignment-operator-visitor@7.24.6': dependencies: - '@babel/types': 7.26.8 + '@babel/types': 7.24.6 - '@babel/helper-compilation-targets@7.25.2': + '@babel/helper-compilation-targets@7.24.6': dependencies: - '@babel/compat-data': 7.25.2 - '@babel/helper-validator-option': 7.24.8 - browserslist: 4.23.3 + '@babel/compat-data': 7.24.6 + '@babel/helper-validator-option': 7.24.6 + browserslist: 4.23.0 lru-cache: 5.1.1 semver: 6.3.1 @@ -8745,191 +8811,200 @@ snapshots: dependencies: '@babel/compat-data': 7.26.8 '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.4 + browserslist: 4.24.0 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.24.6)': + '@babel/helper-create-class-features-plugin@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.8 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.24.6) - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/traverse': 7.25.3(supports-color@5.5.0) + '@babel/helper-annotate-as-pure': 7.24.6 + '@babel/helper-environment-visitor': 7.24.6 + '@babel/helper-function-name': 7.24.6 + '@babel/helper-member-expression-to-functions': 7.24.6 + '@babel/helper-optimise-call-expression': 7.24.6 + '@babel/helper-replace-supers': 7.24.6(@babel/core@7.24.6) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.6 + '@babel/helper-split-export-declaration': 7.24.6 semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.24.6)': + '@babel/helper-create-regexp-features-plugin@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.6 regexpu-core: 5.3.2 semver: 6.3.1 '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - debug: 4.4.0(supports-color@5.5.0) + '@babel/helper-compilation-targets': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + debug: 4.3.7 lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: - supports-color - '@babel/helper-environment-visitor@7.24.7': + '@babel/helper-environment-visitor@7.24.6': {} + + '@babel/helper-function-name@7.24.6': dependencies: - '@babel/types': 7.26.8 + '@babel/template': 7.24.6 + '@babel/types': 7.24.6 '@babel/helper-hoist-variables@7.24.6': dependencies: - '@babel/types': 7.26.8 + '@babel/types': 7.24.6 - '@babel/helper-member-expression-to-functions@7.24.8': + '@babel/helper-member-expression-to-functions@7.24.6': dependencies: - '@babel/traverse': 7.25.3(supports-color@5.5.0) - '@babel/types': 7.26.8 - transitivePeerDependencies: - - supports-color + '@babel/types': 7.24.6 - '@babel/helper-module-imports@7.24.7(supports-color@5.5.0)': + '@babel/helper-module-imports@7.24.6': dependencies: - '@babel/traverse': 7.25.3(supports-color@5.5.0) - '@babel/types': 7.26.8 - transitivePeerDependencies: - - supports-color + '@babel/types': 7.24.6 '@babel/helper-module-imports@7.25.9': dependencies: - '@babel/traverse': 7.26.8 - '@babel/types': 7.26.8 + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.25.2(@babel/core@7.24.6)': + '@babel/helper-module-transforms@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.3(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color + '@babel/helper-environment-visitor': 7.24.6 + '@babel/helper-module-imports': 7.24.6 + '@babel/helper-simple-access': 7.24.6 + '@babel/helper-split-export-declaration': 7.24.6 + '@babel/helper-validator-identifier': 7.24.6 - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.8)': + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.9)': dependencies: - '@babel/core': 7.26.8 + '@babel/core': 7.26.9 '@babel/helper-module-imports': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.8 + '@babel/traverse': 7.26.9 transitivePeerDependencies: - supports-color - '@babel/helper-optimise-call-expression@7.24.7': + '@babel/helper-optimise-call-expression@7.24.6': dependencies: - '@babel/types': 7.26.8 + '@babel/types': 7.24.6 - '@babel/helper-plugin-utils@7.24.8': {} + '@babel/helper-plugin-utils@7.24.6': {} '@babel/helper-plugin-utils@7.26.5': {} - '@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.24.6)': + '@babel/helper-remap-async-to-generator@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-wrap-function': 7.25.0 - '@babel/traverse': 7.25.3(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color + '@babel/helper-annotate-as-pure': 7.24.6 + '@babel/helper-environment-visitor': 7.24.6 + '@babel/helper-wrap-function': 7.24.6 - '@babel/helper-replace-supers@7.25.0(@babel/core@7.24.6)': + '@babel/helper-replace-supers@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-member-expression-to-functions': 7.24.8 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/traverse': 7.25.3(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color + '@babel/helper-environment-visitor': 7.24.6 + '@babel/helper-member-expression-to-functions': 7.24.6 + '@babel/helper-optimise-call-expression': 7.24.6 - '@babel/helper-simple-access@7.24.7': + '@babel/helper-simple-access@7.24.6': dependencies: - '@babel/traverse': 7.25.3(supports-color@5.5.0) - '@babel/types': 7.26.8 - transitivePeerDependencies: - - supports-color + '@babel/types': 7.24.6 - '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + '@babel/helper-skip-transparent-expression-wrappers@7.24.6': dependencies: - '@babel/traverse': 7.25.3(supports-color@5.5.0) - '@babel/types': 7.26.8 - transitivePeerDependencies: - - supports-color + '@babel/types': 7.24.6 + + '@babel/helper-split-export-declaration@7.24.6': + dependencies: + '@babel/types': 7.24.6 + + '@babel/helper-string-parser@7.24.6': {} + + '@babel/helper-string-parser@7.25.7': {} '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-validator-identifier@7.24.6': {} + + '@babel/helper-validator-identifier@7.25.7': {} + '@babel/helper-validator-identifier@7.25.9': {} - '@babel/helper-validator-option@7.24.8': {} + '@babel/helper-validator-option@7.24.6': {} '@babel/helper-validator-option@7.25.9': {} - '@babel/helper-wrap-function@7.25.0': + '@babel/helper-wrap-function@7.24.6': dependencies: - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.3(supports-color@5.5.0) - '@babel/types': 7.26.8 - transitivePeerDependencies: - - supports-color + '@babel/helper-function-name': 7.24.6 + '@babel/template': 7.24.6 + '@babel/types': 7.24.6 '@babel/helpers@7.24.6': dependencies: - '@babel/template': 7.25.0 - '@babel/types': 7.26.8 + '@babel/template': 7.24.6 + '@babel/types': 7.24.6 - '@babel/helpers@7.26.7': + '@babel/helpers@7.26.9': dependencies: - '@babel/template': 7.26.8 - '@babel/types': 7.26.8 + '@babel/template': 7.26.9 + '@babel/types': 7.26.9 - '@babel/highlight@7.24.7': + '@babel/highlight@7.24.6': dependencies: - '@babel/helper-validator-identifier': 7.25.9 + '@babel/helper-validator-identifier': 7.24.6 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/parser@7.26.8': + '@babel/highlight@7.25.7': dependencies: - '@babel/types': 7.26.8 + '@babel/helper-validator-identifier': 7.25.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/parser@7.24.6': + dependencies: + '@babel/types': 7.24.6 + + '@babel/parser@7.25.8': + dependencies: + '@babel/types': 7.25.8 + + '@babel/parser@7.26.9': + dependencies: + '@babel/types': 7.26.9 '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-environment-visitor': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.6 '@babel/plugin-transform-optional-chaining': 7.24.6(@babel/core@7.24.6) - transitivePeerDependencies: - - supports-color '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-environment-visitor': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.6)': dependencies: @@ -8938,492 +9013,455 @@ snapshots: '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-import-assertions@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-import-attributes@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.6)': + '@babel/plugin-syntax-jsx@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.26.8)': + '@babel/plugin-syntax-jsx@7.24.6(@babel/core@7.26.9)': dependencies: - '@babel/core': 7.26.8 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.6)': + '@babel/plugin-syntax-typescript@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-create-regexp-features-plugin': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.24.6)': + '@babel/plugin-transform-arrow-functions@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-transform-async-generator-functions@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.24.6) + '@babel/helper-environment-visitor': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-remap-async-to-generator': 7.24.6(@babel/core@7.24.6) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.6) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.24.6)': + '@babel/plugin-transform-async-to-generator@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.24.6) - transitivePeerDependencies: - - supports-color + '@babel/helper-module-imports': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-remap-async-to-generator': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-block-scoped-functions@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.24.6)': + '@babel/plugin-transform-block-scoping@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-transform-class-properties@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color + '@babel/helper-create-class-features-plugin': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-transform-class-static-block@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-create-class-features-plugin': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.6) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-classes@7.25.0(@babel/core@7.24.6)': + '@babel/plugin-transform-classes@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.24.6) - '@babel/traverse': 7.25.3(supports-color@5.5.0) + '@babel/helper-annotate-as-pure': 7.24.6 + '@babel/helper-compilation-targets': 7.24.6 + '@babel/helper-environment-visitor': 7.24.6 + '@babel/helper-function-name': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-replace-supers': 7.24.6(@babel/core@7.24.6) + '@babel/helper-split-export-declaration': 7.24.6 globals: 11.12.0 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.24.6)': + '@babel/plugin-transform-computed-properties@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/template': 7.25.0 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/template': 7.24.6 - '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.24.6)': + '@babel/plugin-transform-destructuring@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-transform-dotall-regex@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-create-regexp-features-plugin': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-transform-duplicate-keys@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-transform-dynamic-import@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.6) '@babel/plugin-transform-exponentiation-operator@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-transform-export-namespace-from@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.6) '@babel/plugin-transform-for-of@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.6 - '@babel/plugin-transform-function-name@7.25.1(@babel/core@7.24.6)': + '@babel/plugin-transform-function-name@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.3(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color + '@babel/helper-compilation-targets': 7.24.6 + '@babel/helper-function-name': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-transform-json-strings@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.6) - '@babel/plugin-transform-literals@7.25.2(@babel/core@7.24.6)': + '@babel/plugin-transform-literals@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-transform-logical-assignment-operators@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.6) '@babel/plugin-transform-member-expression-literals@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-transform-modules-amd@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color + '@babel/helper-module-transforms': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.24.6)': + '@babel/plugin-transform-modules-commonjs@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-simple-access': 7.24.7 - transitivePeerDependencies: - - supports-color + '@babel/helper-module-transforms': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-simple-access': 7.24.6 '@babel/plugin-transform-modules-systemjs@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 '@babel/helper-hoist-variables': 7.24.6 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-identifier': 7.25.9 - transitivePeerDependencies: - - supports-color + '@babel/helper-module-transforms': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-validator-identifier': 7.24.6 '@babel/plugin-transform-modules-umd@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color + '@babel/helper-module-transforms': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.24.6)': + '@babel/plugin-transform-named-capturing-groups-regex@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-create-regexp-features-plugin': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-transform-new-target@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-transform-nullish-coalescing-operator@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.6) '@babel/plugin-transform-numeric-separator@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.6) '@babel/plugin-transform-object-rest-spread@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-compilation-targets': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.6) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.6) + '@babel/plugin-transform-parameters': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-object-super@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.24.6) - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-replace-supers': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-optional-catch-binding@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.6) '@babel/plugin-transform-optional-chaining@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.6 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.6) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.24.6)': + '@babel/plugin-transform-parameters@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.24.6)': + '@babel/plugin-transform-private-methods@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color + '@babel/helper-create-class-features-plugin': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.24.6)': + '@babel/plugin-transform-private-property-in-object@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-annotate-as-pure': 7.24.6 + '@babel/helper-create-class-features-plugin': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.6) - transitivePeerDependencies: - - supports-color '@babel/plugin-transform-property-literals@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-transform-react-constant-elements@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.24.6)': + '@babel/plugin-transform-react-display-name@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-transform-react-jsx-development@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.24.6) - transitivePeerDependencies: - - supports-color + '@babel/plugin-transform-react-jsx': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.8)': + '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.9)': dependencies: - '@babel/core': 7.26.8 + '@babel/core': 7.26.9 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.8)': + '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.9)': dependencies: - '@babel/core': 7.26.8 + '@babel/core': 7.26.9 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.24.6)': + '@babel/plugin-transform-react-jsx@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.6) - '@babel/types': 7.26.8 - transitivePeerDependencies: - - supports-color + '@babel/helper-annotate-as-pure': 7.24.6 + '@babel/helper-module-imports': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-syntax-jsx': 7.24.6(@babel/core@7.24.6) + '@babel/types': 7.24.6 '@babel/plugin-transform-react-pure-annotations@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-annotate-as-pure': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-transform-regenerator@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 regenerator-transform: 0.15.2 '@babel/plugin-transform-reserved-words@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.24.6)': + '@babel/plugin-transform-shorthand-properties@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-transform-spread@7.24.7(@babel/core@7.24.6)': + '@babel/plugin-transform-spread@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.6 - '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.24.6)': + '@babel/plugin-transform-sticky-regex@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-transform-template-literals@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-transform-typeof-symbol@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.24.6)': + '@babel/plugin-transform-typescript@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.6) - transitivePeerDependencies: - - supports-color + '@babel/helper-annotate-as-pure': 7.24.6 + '@babel/helper-create-class-features-plugin': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 + '@babel/plugin-syntax-typescript': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-unicode-escapes@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-transform-unicode-property-regex@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-create-regexp-features-plugin': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.24.6)': + '@babel/plugin-transform-unicode-regex@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-create-regexp-features-plugin': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 '@babel/plugin-transform-unicode-sets-regex@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-create-regexp-features-plugin': 7.24.6(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 '@babel/preset-env@7.24.6(@babel/core@7.24.6)': dependencies: - '@babel/compat-data': 7.25.2 + '@babel/compat-data': 7.24.6 '@babel/core': 7.24.6 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 + '@babel/helper-compilation-targets': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-validator-option': 7.24.6 '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.6(@babel/core@7.24.6) '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.6(@babel/core@7.24.6) '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.6(@babel/core@7.24.6) @@ -9447,32 +9485,32 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.6) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.6) '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.6) - '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.24.6) + '@babel/plugin-transform-arrow-functions': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-async-generator-functions': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.24.6) + '@babel/plugin-transform-async-to-generator': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-block-scoped-functions': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.24.6) + '@babel/plugin-transform-block-scoping': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-class-properties': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-class-static-block': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.24.6) - '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.24.6) - '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.24.6) + '@babel/plugin-transform-classes': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-computed-properties': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-destructuring': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-dotall-regex': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-duplicate-keys': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-dynamic-import': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-exponentiation-operator': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-export-namespace-from': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-for-of': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.24.6) + '@babel/plugin-transform-function-name': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-json-strings': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.24.6) + '@babel/plugin-transform-literals': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-logical-assignment-operators': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-member-expression-literals': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-modules-amd': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.6) + '@babel/plugin-transform-modules-commonjs': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-modules-systemjs': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-modules-umd': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.24.6) + '@babel/plugin-transform-named-capturing-groups-regex': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-new-target': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-nullish-coalescing-operator': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-numeric-separator': 7.24.6(@babel/core@7.24.6) @@ -9480,26 +9518,26 @@ snapshots: '@babel/plugin-transform-object-super': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-optional-catch-binding': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-optional-chaining': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.6) - '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.6) - '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.24.6) + '@babel/plugin-transform-parameters': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-private-methods': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-private-property-in-object': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-property-literals': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-regenerator': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-reserved-words': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.24.6) - '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.24.6) - '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.24.6) + '@babel/plugin-transform-shorthand-properties': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-spread': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-sticky-regex': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-template-literals': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-typeof-symbol': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-unicode-escapes': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-unicode-property-regex': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.24.6) + '@babel/plugin-transform-unicode-regex': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-unicode-sets-regex': 7.24.6(@babel/core@7.24.6) '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.6) babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.6) - babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.24.6) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.6) babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.6) - core-js-compat: 3.38.0 + core-js-compat: 3.37.1 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -9507,76 +9545,87 @@ snapshots: '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/types': 7.26.8 + '@babel/helper-plugin-utils': 7.24.6 + '@babel/types': 7.24.6 esutils: 2.0.3 '@babel/preset-react@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.24.6) - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.24.6) + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-validator-option': 7.24.6 + '@babel/plugin-transform-react-display-name': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-react-jsx': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-react-jsx-development': 7.24.6(@babel/core@7.24.6) '@babel/plugin-transform-react-pure-annotations': 7.24.6(@babel/core@7.24.6) - transitivePeerDependencies: - - supports-color - '@babel/preset-typescript@7.24.7(@babel/core@7.24.6)': + '@babel/preset-typescript@7.24.6(@babel/core@7.24.6)': dependencies: '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.6) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.6) - '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.24.6) - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.24.6 + '@babel/helper-validator-option': 7.24.6 + '@babel/plugin-syntax-jsx': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-modules-commonjs': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-typescript': 7.24.6(@babel/core@7.24.6) '@babel/regjsgen@0.8.0': {} - '@babel/runtime@7.25.0': + '@babel/runtime@7.24.6': dependencies: regenerator-runtime: 0.14.1 - '@babel/template@7.25.0': + '@babel/template@7.24.6': dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.8 - '@babel/types': 7.26.8 + '@babel/code-frame': 7.25.7 + '@babel/parser': 7.24.6 + '@babel/types': 7.24.6 - '@babel/template@7.26.8': + '@babel/template@7.26.9': dependencies: '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.8 - '@babel/types': 7.26.8 + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 - '@babel/traverse@7.25.3(supports-color@5.5.0)': + '@babel/traverse@7.24.6(supports-color@5.5.0)': dependencies: - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 - '@babel/parser': 7.26.8 - '@babel/template': 7.25.0 - '@babel/types': 7.26.8 - debug: 4.4.0(supports-color@5.5.0) + '@babel/code-frame': 7.24.6 + '@babel/generator': 7.24.6 + '@babel/helper-environment-visitor': 7.24.6 + '@babel/helper-function-name': 7.24.6 + '@babel/helper-hoist-variables': 7.24.6 + '@babel/helper-split-export-declaration': 7.24.6 + '@babel/parser': 7.24.6 + '@babel/types': 7.24.6 + debug: 4.3.4(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/traverse@7.26.8': + '@babel/traverse@7.26.9': dependencies: '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.8 - '@babel/parser': 7.26.8 - '@babel/template': 7.26.8 - '@babel/types': 7.26.8 - debug: 4.4.0(supports-color@5.5.0) + '@babel/generator': 7.26.9 + '@babel/parser': 7.26.9 + '@babel/template': 7.26.9 + '@babel/types': 7.26.9 + debug: 4.3.7 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.26.8': + '@babel/types@7.24.6': + dependencies: + '@babel/helper-string-parser': 7.24.6 + '@babel/helper-validator-identifier': 7.24.6 + to-fast-properties: 2.0.0 + + '@babel/types@7.25.8': + dependencies: + '@babel/helper-string-parser': 7.25.7 + '@babel/helper-validator-identifier': 7.25.7 + to-fast-properties: 2.0.0 + + '@babel/types@7.26.9': dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 @@ -9626,7 +9675,7 @@ snapshots: eth-json-rpc-filters: 6.0.1 eventemitter3: 5.0.1 keccak: 3.0.4 - preact: 10.23.1 + preact: 10.22.0 sha.js: 2.4.11 transitivePeerDependencies: - supports-color @@ -9637,7 +9686,7 @@ snapshots: clsx: 1.2.1 eventemitter3: 5.0.1 keccak: 3.0.4 - preact: 10.23.1 + preact: 10.22.0 sha.js: 2.4.11 '@cspotcode/source-map-support@0.8.1': @@ -9695,15 +9744,15 @@ snapshots: '@ensdomains/address-encoder@1.0.0-rc.3': dependencies: - '@noble/curves': 1.6.0 + '@noble/curves': 1.4.0 '@noble/hashes': 1.5.0 - '@scure/base': 1.1.9 + '@scure/base': 1.1.6 '@ensdomains/address-encoder@1.1.1': dependencies: - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - '@scure/base': 1.1.9 + '@noble/curves': 1.4.0 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.6 '@ensdomains/buffer@0.1.1': {} @@ -9715,8 +9764,8 @@ snapshots: '@ensdomains/content-hash@3.1.0-rc.1': dependencies: '@ensdomains/address-encoder': 1.0.0-rc.3 - '@noble/curves': 1.6.0 - '@scure/base': 1.1.9 + '@noble/curves': 1.4.0 + '@scure/base': 1.1.6 '@ensdomains/dnsprovejs@0.5.1': dependencies: @@ -9736,7 +9785,7 @@ snapshots: cli-progress: 3.12.0 commander: 13.1.0 concurrently: 9.1.2 - docker-compose: 1.1.0 + docker-compose: 1.1.1 dotenv: 16.4.7 dunai: 0.0.0-dev.2 js-yaml: 4.1.0 @@ -9757,7 +9806,7 @@ snapshots: '@ensdomains/ensjs@2.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.6 '@ensdomains/address-encoder': 0.1.9 '@ensdomains/ens': 0.4.5 '@ensdomains/resolver': 0.2.4 @@ -9769,18 +9818,18 @@ snapshots: - bufferutil - utf-8-validate - '@ensdomains/ensjs@4.0.2(typescript@5.4.5)(viem@2.19.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + '@ensdomains/ensjs@4.0.3-alpha.12(typescript@5.4.5)(viem@2.19.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': dependencies: '@adraffy/ens-normalize': 1.10.1 '@ensdomains/address-encoder': 1.1.1 '@ensdomains/content-hash': 3.1.0-rc.1 '@ensdomains/dnsprovejs': 0.5.1 - abitype: 1.0.6(typescript@5.4.5)(zod@3.23.8) + abitype: 1.0.5(typescript@5.4.5)(zod@3.23.8) dns-packet: 5.6.1 graphql: 16.8.1 graphql-request: 6.1.0(graphql@16.8.1) pako: 2.1.0 - ts-pattern: 5.6.2 + ts-pattern: 5.5.0 viem: 2.19.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8) transitivePeerDependencies: - encoding @@ -9789,8 +9838,8 @@ snapshots: '@ensdomains/headless-web3-provider@1.0.8(viem@2.19.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8))': dependencies: - '@metamask/json-rpc-engine': 9.0.2 - '@metamask/utils': 9.2.0 + '@metamask/json-rpc-engine': 9.0.3 + '@metamask/utils': 9.3.0 viem: 2.19.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8) transitivePeerDependencies: - supports-color @@ -9967,7 +10016,7 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.4(supports-color@5.5.0) espree: 9.6.1 globals: 13.24.0 ignore: 5.3.1 @@ -9999,7 +10048,7 @@ snapshots: '@ethereumjs/tx@3.3.2': dependencies: - '@ethereumjs/common': 2.6.5 + '@ethereumjs/common': 2.5.0 ethereumjs-util: 7.1.5 '@ethereumjs/tx@3.5.2': @@ -10290,7 +10339,7 @@ snapshots: '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.4(supports-color@5.5.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -10302,25 +10351,25 @@ snapshots: '@ianvs/prettier-plugin-sort-imports@4.2.1(prettier@3.0.3)': dependencies: '@babel/core': 7.24.6 - '@babel/generator': 7.25.0 - '@babel/parser': 7.26.8 - '@babel/traverse': 7.25.3(supports-color@5.5.0) - '@babel/types': 7.26.8 + '@babel/generator': 7.24.6 + '@babel/parser': 7.24.6 + '@babel/traverse': 7.24.6(supports-color@5.5.0) + '@babel/types': 7.24.6 prettier: 3.0.3 - semver: 7.6.3 + semver: 7.6.2 transitivePeerDependencies: - supports-color - '@inquirer/confirm@5.1.0(@types/node@20.17.17)': + '@inquirer/confirm@5.1.3(@types/node@20.17.19)': dependencies: - '@inquirer/core': 10.1.1(@types/node@20.17.17) - '@inquirer/type': 3.0.1(@types/node@20.17.17) - '@types/node': 20.17.17 + '@inquirer/core': 10.1.4(@types/node@20.17.19) + '@inquirer/type': 3.0.2(@types/node@20.17.19) + '@types/node': 20.17.19 - '@inquirer/core@10.1.1(@types/node@20.17.17)': + '@inquirer/core@10.1.4(@types/node@20.17.19)': dependencies: - '@inquirer/figures': 1.0.8 - '@inquirer/type': 3.0.1(@types/node@20.17.17) + '@inquirer/figures': 1.0.9 + '@inquirer/type': 3.0.2(@types/node@20.17.19) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -10331,11 +10380,11 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@inquirer/figures@1.0.8': {} + '@inquirer/figures@1.0.9': {} - '@inquirer/type@3.0.1(@types/node@20.17.17)': + '@inquirer/type@3.0.2(@types/node@20.17.19)': dependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.19 '@isaacs/cliui@8.0.2': dependencies: @@ -10357,33 +10406,35 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.17.17 - '@types/yargs': 17.0.33 + '@types/node': 20.17.19 + '@types/yargs': 17.0.32 chalk: 4.1.2 '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.2.1': {} + '@jridgewell/sourcemap-codec@1.4.15': {} + '@jridgewell/sourcemap-codec@1.5.0': {} '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.4.15 - '@keyv/serialize@1.0.2': + '@keyv/serialize@1.0.3': dependencies: buffer: 6.0.3 @@ -10413,7 +10464,7 @@ snapshots: '@metamask/json-rpc-engine@7.3.3': dependencies: - '@metamask/rpc-errors': 6.3.1 + '@metamask/rpc-errors': 6.2.1 '@metamask/safe-event-emitter': 3.1.1 '@metamask/utils': 8.4.0 transitivePeerDependencies: @@ -10421,17 +10472,17 @@ snapshots: '@metamask/json-rpc-engine@8.0.2': dependencies: - '@metamask/rpc-errors': 6.3.1 + '@metamask/rpc-errors': 6.2.1 '@metamask/safe-event-emitter': 3.1.1 '@metamask/utils': 8.4.0 transitivePeerDependencies: - supports-color - '@metamask/json-rpc-engine@9.0.2': + '@metamask/json-rpc-engine@9.0.3': dependencies: - '@metamask/rpc-errors': 6.3.1 + '@metamask/rpc-errors': 6.4.0 '@metamask/safe-event-emitter': 3.1.1 - '@metamask/utils': 9.2.0 + '@metamask/utils': 9.3.0 transitivePeerDependencies: - supports-color @@ -10464,7 +10515,7 @@ snapshots: dependencies: '@metamask/json-rpc-engine': 7.3.3 '@metamask/object-multiplex': 2.0.0 - '@metamask/rpc-errors': 6.3.1 + '@metamask/rpc-errors': 6.2.1 '@metamask/safe-event-emitter': 3.1.1 '@metamask/utils': 8.4.0 detect-browser: 5.3.0 @@ -10482,7 +10533,7 @@ snapshots: '@metamask/json-rpc-engine': 8.0.2 '@metamask/json-rpc-middleware-stream': 7.0.2 '@metamask/object-multiplex': 2.0.0 - '@metamask/rpc-errors': 6.3.1 + '@metamask/rpc-errors': 6.2.1 '@metamask/safe-event-emitter': 3.1.1 '@metamask/utils': 8.4.0 detect-browser: 5.3.0 @@ -10494,9 +10545,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@metamask/rpc-errors@6.3.1': + '@metamask/rpc-errors@6.2.1': dependencies: - '@metamask/utils': 9.2.0 + '@metamask/utils': 8.4.0 + fast-safe-stringify: 2.1.1 + transitivePeerDependencies: + - supports-color + + '@metamask/rpc-errors@6.4.0': + dependencies: + '@metamask/utils': 9.3.0 fast-safe-stringify: 2.1.1 transitivePeerDependencies: - supports-color @@ -10510,7 +10568,7 @@ snapshots: bufferutil: 4.0.8 cross-fetch: 4.0.0 date-fns: 2.30.0 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.7 eciesjs: 0.3.18 eventemitter2: 6.4.9 readable-stream: 3.6.2 @@ -10537,7 +10595,7 @@ snapshots: '@types/dom-screen-wake-lock': 1.0.3 bowser: 2.11.0 cross-fetch: 4.0.0 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.7 eciesjs: 0.3.18 eth-rpc-errors: 4.0.3 eventemitter2: 6.4.9 @@ -10569,8 +10627,8 @@ snapshots: dependencies: '@ethereumjs/tx': 4.2.0 '@types/debug': 4.1.12 - debug: 4.4.0(supports-color@5.5.0) - semver: 7.6.3 + debug: 4.3.7 + semver: 7.6.2 superstruct: 1.0.4 transitivePeerDependencies: - supports-color @@ -10578,27 +10636,27 @@ snapshots: '@metamask/utils@8.4.0': dependencies: '@ethereumjs/tx': 4.2.0 - '@noble/hashes': 1.5.0 - '@scure/base': 1.1.9 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.6 '@types/debug': 4.1.12 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.7 pony-cause: 2.1.11 - semver: 7.6.3 + semver: 7.6.2 superstruct: 1.0.4 uuid: 9.0.1 transitivePeerDependencies: - supports-color - '@metamask/utils@9.2.0': + '@metamask/utils@9.3.0': dependencies: '@ethereumjs/tx': 4.2.0 '@metamask/superstruct': 3.1.0 - '@noble/hashes': 1.5.0 - '@scure/base': 1.1.9 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.6 '@types/debug': 4.1.12 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.4(supports-color@5.5.0) pony-cause: 2.1.11 - semver: 7.6.3 + semver: 7.6.2 uuid: 9.0.1 transitivePeerDependencies: - supports-color @@ -10608,7 +10666,7 @@ snapshots: '@motionone/easing': 10.17.0 '@motionone/types': 10.17.0 '@motionone/utils': 10.17.0 - tslib: 2.6.3 + tslib: 2.6.2 '@motionone/dom@10.17.0': dependencies: @@ -10617,23 +10675,23 @@ snapshots: '@motionone/types': 10.17.0 '@motionone/utils': 10.17.0 hey-listen: 1.0.8 - tslib: 2.6.3 + tslib: 2.6.2 '@motionone/easing@10.17.0': dependencies: '@motionone/utils': 10.17.0 - tslib: 2.6.3 + tslib: 2.6.2 '@motionone/generators@10.17.0': dependencies: '@motionone/types': 10.17.0 '@motionone/utils': 10.17.0 - tslib: 2.6.3 + tslib: 2.6.2 '@motionone/svelte@10.16.4': dependencies: '@motionone/dom': 10.17.0 - tslib: 2.6.3 + tslib: 2.6.2 '@motionone/types@10.17.0': {} @@ -10641,14 +10699,14 @@ snapshots: dependencies: '@motionone/types': 10.17.0 hey-listen: 1.0.8 - tslib: 2.6.3 + tslib: 2.6.2 '@motionone/vue@10.16.4': dependencies: '@motionone/dom': 10.17.0 - tslib: 2.6.3 + tslib: 2.6.2 - '@mswjs/interceptors@0.37.3': + '@mswjs/interceptors@0.37.5': dependencies: '@open-draft/deferred-promise': 2.2.0 '@open-draft/logger': 0.3.0 @@ -10710,10 +10768,6 @@ snapshots: dependencies: '@noble/hashes': 1.4.0 - '@noble/curves@1.6.0': - dependencies: - '@noble/hashes': 1.5.0 - '@noble/hashes@1.2.0': {} '@noble/hashes@1.3.3': {} @@ -10900,7 +10954,7 @@ snapshots: '@parcel/watcher-wasm@2.4.1': dependencies: is-glob: 4.0.3 - micromatch: 4.0.8 + micromatch: 4.0.7 '@parcel/watcher-win32-arm64@2.4.1': optional: true @@ -10915,7 +10969,7 @@ snapshots: dependencies: detect-libc: 1.0.3 is-glob: 4.0.3 - micromatch: 4.0.8 + micromatch: 4.0.7 node-addon-api: 7.1.0 optionalDependencies: '@parcel/watcher-android-arm64': 2.4.1 @@ -10936,9 +10990,9 @@ snapshots: '@pkgr/core@0.1.1': {} - '@playwright/test@1.48.2': + '@playwright/test@1.49.0': dependencies: - playwright: 1.48.2 + playwright: 1.49.0 '@polka/url@1.0.0-next.25': {} @@ -10953,7 +11007,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-remove-scroll: 2.5.7(@types/react@18.3.12)(react@18.3.1) - ua-parser-js: 1.0.37 + ua-parser-js: 1.0.39 viem: 2.19.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8) wagmi: 2.12.4(@tanstack/query-core@5.22.2)(@tanstack/react-query@5.22.2(react@18.3.1))(@types/react@18.3.12)(bufferutil@4.0.8)(immer@9.0.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.18.0)(typescript@5.4.5)(utf-8-validate@5.0.10)(viem@2.19.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) transitivePeerDependencies: @@ -11050,40 +11104,40 @@ snapshots: '@safe-global/safe-gateway-typescript-sdk@3.21.1': {} - '@scure/base@1.1.9': {} + '@scure/base@1.1.6': {} '@scure/bip32@1.1.5': dependencies: '@noble/hashes': 1.2.0 '@noble/secp256k1': 1.7.1 - '@scure/base': 1.1.9 + '@scure/base': 1.1.6 '@scure/bip32@1.3.3': dependencies: '@noble/curves': 1.3.0 '@noble/hashes': 1.3.3 - '@scure/base': 1.1.9 + '@scure/base': 1.1.6 '@scure/bip32@1.4.0': dependencies: '@noble/curves': 1.4.0 '@noble/hashes': 1.4.0 - '@scure/base': 1.1.9 + '@scure/base': 1.1.6 '@scure/bip39@1.1.1': dependencies: '@noble/hashes': 1.2.0 - '@scure/base': 1.1.9 + '@scure/base': 1.1.6 '@scure/bip39@1.2.2': dependencies: '@noble/hashes': 1.3.3 - '@scure/base': 1.1.9 + '@scure/base': 1.1.6 '@scure/bip39@1.3.0': dependencies: '@noble/hashes': 1.4.0 - '@scure/base': 1.1.9 + '@scure/base': 1.1.6 '@sentry/browser@7.43.0': dependencies: @@ -11138,7 +11192,7 @@ snapshots: '@sentry/types': 5.30.0 tslib: 1.14.1 - '@sentry/nextjs@7.43.0(next@13.5.8(@babel/core@7.26.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@sentry/nextjs@7.43.0(next@13.5.8(@babel/core@7.26.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: '@rollup/plugin-commonjs': 24.0.0(rollup@2.78.0) '@sentry/core': 7.43.0 @@ -11150,7 +11204,7 @@ snapshots: '@sentry/utils': 7.43.0 '@sentry/webpack-plugin': 1.20.0 chalk: 3.0.0 - next: 13.5.8(@babel/core@7.26.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 13.5.8(@babel/core@7.26.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 rollup: 2.78.0 stacktrace-parser: 0.1.10 @@ -11468,7 +11522,7 @@ snapshots: '@svgr/hast-util-to-babel-ast@8.0.0': dependencies: - '@babel/types': 7.26.8 + '@babel/types': 7.24.6 entities: 4.5.0 '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.4.5))': @@ -11496,7 +11550,7 @@ snapshots: '@babel/plugin-transform-react-constant-elements': 7.24.6(@babel/core@7.24.6) '@babel/preset-env': 7.24.6(@babel/core@7.24.6) '@babel/preset-react': 7.24.6(@babel/core@7.24.6) - '@babel/preset-typescript': 7.24.7(@babel/core@7.24.6) + '@babel/preset-typescript': 7.24.6(@babel/core@7.24.6) '@svgr/core': 8.1.0(typescript@5.4.5) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.4.5)) '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.4.5))(typescript@5.4.5) @@ -11506,7 +11560,7 @@ snapshots: '@swc/helpers@0.5.2': dependencies: - tslib: 2.6.3 + tslib: 2.6.2 '@szmarczak/http-timer@4.0.6': dependencies: @@ -11518,7 +11572,7 @@ snapshots: '@tanstack/query-core@5.22.2': {} - '@tanstack/query-devtools@5.58.0': {} + '@tanstack/query-devtools@5.61.4': {} '@tanstack/query-persist-client-core@5.22.2': dependencies: @@ -11529,9 +11583,9 @@ snapshots: '@tanstack/query-core': 5.22.2 '@tanstack/query-persist-client-core': 5.22.2 - '@tanstack/react-query-devtools@5.59.0(@tanstack/react-query@5.22.2(react@18.3.1))(react@18.3.1)': + '@tanstack/react-query-devtools@5.62.1(@tanstack/react-query@5.22.2(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/query-devtools': 5.58.0 + '@tanstack/query-devtools': 5.61.4 '@tanstack/react-query': 5.22.2(react@18.3.1) react: 18.3.1 @@ -11548,8 +11602,8 @@ snapshots: '@testing-library/dom@10.4.0': dependencies: - '@babel/code-frame': 7.26.2 - '@babel/runtime': 7.25.0 + '@babel/code-frame': 7.25.7 + '@babel/runtime': 7.24.6 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 @@ -11557,10 +11611,10 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.4.5(vitest@3.0.5(@types/debug@4.1.12)(@types/node@20.17.17)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.17)(typescript@5.4.5)))': + '@testing-library/jest-dom@6.4.5(vitest@3.0.6(@types/debug@4.1.12)(@types/node@20.17.19)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.19)(typescript@5.4.5)))': dependencies: '@adobe/css-tools': 4.3.3 - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.6 aria-query: 5.3.0 chalk: 3.0.0 css.escape: 1.5.1 @@ -11568,11 +11622,11 @@ snapshots: lodash: 4.17.21 redent: 3.0.0 optionalDependencies: - vitest: 3.0.5(@types/debug@4.1.12)(@types/node@20.17.17)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.17)(typescript@5.4.5)) + vitest: 3.0.6(@types/debug@4.1.12)(@types/node@20.17.19)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.19)(typescript@5.4.5)) '@testing-library/react-hooks@8.0.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.6 react: 18.3.1 react-error-boundary: 3.1.4(react@18.3.1) optionalDependencies: @@ -11581,7 +11635,7 @@ snapshots: '@testing-library/react@16.2.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.6 '@testing-library/dom': 10.4.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -11608,9 +11662,9 @@ snapshots: big.js: 6.2.1 bn.js: 5.2.1 cbor: 5.2.0 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.7 lodash: 4.17.21 - semver: 7.6.3 + semver: 7.6.2 utf8: 3.0.0 web3-utils: 1.10.0 transitivePeerDependencies: @@ -11624,7 +11678,7 @@ snapshots: '@truffle/contract-schema@3.4.16': dependencies: ajv: 6.12.6 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.7 transitivePeerDependencies: - supports-color @@ -11637,7 +11691,7 @@ snapshots: '@truffle/error': 0.2.2 '@truffle/interface-adapter': 0.5.37(bufferutil@4.0.8)(utf-8-validate@5.0.10) bignumber.js: 7.2.1 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.4(supports-color@5.5.0) ethers: 4.0.49 web3: 1.10.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) web3-core-helpers: 1.10.0 @@ -11656,7 +11710,7 @@ snapshots: '@trufflesuite/chromafi': 3.0.0 bn.js: 5.2.1 chalk: 2.4.2 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.7 highlightjs-solidity: 2.0.6 transitivePeerDependencies: - supports-color @@ -11699,38 +11753,38 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.26.8 - '@babel/types': 7.26.8 + '@babel/parser': 7.25.8 + '@babel/types': 7.25.8 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.26.8 + '@babel/types': 7.25.8 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.26.8 - '@babel/types': 7.26.8 + '@babel/parser': 7.25.8 + '@babel/types': 7.25.8 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.26.8 + '@babel/types': 7.25.8 '@types/bn.js@4.11.6': dependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.19 '@types/bn.js@5.1.5': dependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.19 '@types/cacheable-request@6.0.3': dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 20.17.17 + '@types/node': 20.17.19 '@types/responselike': 1.0.3 '@types/cookie@0.6.0': {} @@ -11743,8 +11797,6 @@ snapshots: '@types/estree@1.0.5': {} - '@types/gensync@1.0.4': {} - '@types/hoist-non-react-statics@3.3.5': dependencies: '@types/react': 18.3.12 @@ -11770,7 +11822,7 @@ snapshots: '@types/keyv@3.1.4': dependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.19 '@types/lru-cache@5.1.1': {} @@ -11778,13 +11830,13 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.19 '@types/node@12.20.55': {} '@types/node@17.0.45': {} - '@types/node@20.17.17': + '@types/node@20.17.19': dependencies: undici-types: 6.19.8 @@ -11792,7 +11844,7 @@ snapshots: '@types/pbkdf2@3.1.2': dependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.19 '@types/prettier@2.7.3': {} @@ -11811,15 +11863,15 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.19 '@types/sax@1.2.7': dependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.19 '@types/secp256k1@4.0.6': dependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.19 '@types/semver@7.5.8': {} @@ -11837,11 +11889,11 @@ snapshots: '@types/ws@8.5.10': dependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.19 '@types/yargs-parser@21.0.3': {} - '@types/yargs@17.0.33': + '@types/yargs@17.0.32': dependencies: '@types/yargs-parser': 21.0.3 @@ -11853,12 +11905,12 @@ snapshots: '@typescript-eslint/type-utils': 6.21.0(eslint@8.50.0)(typescript@5.4.5) '@typescript-eslint/utils': 6.21.0(eslint@8.50.0)(typescript@5.4.5) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.4(supports-color@5.5.0) eslint: 8.50.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - semver: 7.6.3 + semver: 7.6.2 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 @@ -11871,7 +11923,7 @@ snapshots: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.4(supports-color@5.5.0) eslint: 8.50.0 optionalDependencies: typescript: 5.4.5 @@ -11897,7 +11949,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) '@typescript-eslint/utils': 6.21.0(eslint@8.50.0)(typescript@5.4.5) - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.4(supports-color@5.5.0) eslint: 8.50.0 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: @@ -11915,10 +11967,10 @@ snapshots: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.7 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.6.3 + semver: 7.6.2 tsutils: 3.21.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 @@ -11929,11 +11981,11 @@ snapshots: dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.4(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 - semver: 7.6.3 + semver: 7.6.2 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 @@ -11944,11 +11996,11 @@ snapshots: dependencies: '@typescript-eslint/types': 7.10.0 '@typescript-eslint/visitor-keys': 7.10.0 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.7 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.4 - semver: 7.6.3 + semver: 7.6.2 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 @@ -11965,7 +12017,7 @@ snapshots: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) eslint: 8.50.0 eslint-scope: 5.1.1 - semver: 7.6.3 + semver: 7.6.2 transitivePeerDependencies: - supports-color - typescript @@ -11979,7 +12031,7 @@ snapshots: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) eslint: 8.50.0 - semver: 7.6.3 + semver: 7.6.2 transitivePeerDependencies: - supports-color - typescript @@ -12038,22 +12090,22 @@ snapshots: dependencies: '@vanilla-extract/css': 1.14.0 - '@vitejs/plugin-react@4.3.4(vite@5.2.11(@types/node@20.17.17))': + '@vitejs/plugin-react@4.3.4(vite@5.2.11(@types/node@20.17.19))': dependencies: - '@babel/core': 7.26.8 - '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.8) - '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.8) + '@babel/core': 7.26.9 + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.9) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.2.11(@types/node@20.17.17) + vite: 5.2.11(@types/node@20.17.19) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@3.0.5(vitest@3.0.5(@types/debug@4.1.12)(@types/node@20.17.17)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.17)(typescript@5.4.5)))': + '@vitest/coverage-v8@3.0.6(vitest@3.0.6(@types/debug@4.1.12)(@types/node@20.17.19)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.19)(typescript@5.4.5)))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.0 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 @@ -12063,48 +12115,48 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.0.5(@types/debug@4.1.12)(@types/node@20.17.17)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.17)(typescript@5.4.5)) + vitest: 3.0.6(@types/debug@4.1.12)(@types/node@20.17.19)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.19)(typescript@5.4.5)) transitivePeerDependencies: - supports-color - '@vitest/expect@3.0.5': + '@vitest/expect@3.0.6': dependencies: - '@vitest/spy': 3.0.5 - '@vitest/utils': 3.0.5 - chai: 5.1.2 + '@vitest/spy': 3.0.6 + '@vitest/utils': 3.0.6 + chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.0.5(msw@2.7.0(@types/node@20.17.17)(typescript@5.4.5))(vite@5.2.11(@types/node@20.17.17))': + '@vitest/mocker@3.0.6(msw@2.7.0(@types/node@20.17.19)(typescript@5.4.5))(vite@5.2.11(@types/node@20.17.19))': dependencies: - '@vitest/spy': 3.0.5 + '@vitest/spy': 3.0.6 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - msw: 2.7.0(@types/node@20.17.17)(typescript@5.4.5) - vite: 5.2.11(@types/node@20.17.17) + msw: 2.7.0(@types/node@20.17.19)(typescript@5.4.5) + vite: 5.2.11(@types/node@20.17.19) - '@vitest/pretty-format@3.0.5': + '@vitest/pretty-format@3.0.6': dependencies: tinyrainbow: 2.0.0 - '@vitest/runner@3.0.5': + '@vitest/runner@3.0.6': dependencies: - '@vitest/utils': 3.0.5 + '@vitest/utils': 3.0.6 pathe: 2.0.3 - '@vitest/snapshot@3.0.5': + '@vitest/snapshot@3.0.6': dependencies: - '@vitest/pretty-format': 3.0.5 + '@vitest/pretty-format': 3.0.6 magic-string: 0.30.17 pathe: 2.0.3 - '@vitest/spy@3.0.5': + '@vitest/spy@3.0.6': dependencies: tinyspy: 3.0.2 - '@vitest/utils@3.0.5': + '@vitest/utils@3.0.6': dependencies: - '@vitest/pretty-format': 3.0.5 + '@vitest/pretty-format': 3.0.6 loupe: 3.1.3 tinyrainbow: 2.0.0 @@ -12289,7 +12341,7 @@ snapshots: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 events: 3.3.0 - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) + ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -12497,11 +12549,6 @@ snapshots: typescript: 5.4.5 zod: 3.23.8 - abitype@1.0.6(typescript@5.4.5)(zod@3.23.8): - optionalDependencies: - typescript: 5.4.5 - zod: 3.23.8 - abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -12513,13 +12560,13 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-jsx@5.3.2(acorn@8.12.1): + acorn-jsx@5.3.2(acorn@8.11.3): dependencies: - acorn: 8.12.1 + acorn: 8.11.3 acorn-walk@8.3.2: {} - acorn@8.12.1: {} + acorn@8.11.3: {} adm-zip@0.4.16: {} @@ -12527,13 +12574,13 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.7 transitivePeerDependencies: - supports-color agent-base@7.1.1: dependencies: - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.7 transitivePeerDependencies: - supports-color @@ -12580,7 +12627,7 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.0.1: {} + ansi-regex@6.1.0: {} ansi-styles@3.2.1: dependencies: @@ -12633,7 +12680,7 @@ snapshots: async-mutex@0.2.6: dependencies: - tslib: 2.6.3 + tslib: 2.6.2 asynckit@0.4.0: {} @@ -12645,15 +12692,15 @@ snapshots: axe-core@4.7.0: {} - axios@0.21.4(debug@4.4.0): + axios@0.21.4(debug@4.3.4): dependencies: - follow-redirects: 1.15.6(debug@4.4.0) + follow-redirects: 1.15.6(debug@4.3.4) transitivePeerDependencies: - debug axios@1.7.9: dependencies: - follow-redirects: 1.15.6(debug@4.4.0) + follow-redirects: 1.15.6(debug@4.3.4) form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: @@ -12667,18 +12714,18 @@ snapshots: babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.6): dependencies: - '@babel/compat-data': 7.25.2 + '@babel/compat-data': 7.24.6 '@babel/core': 7.24.6 '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.6) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.24.6): + babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.6): dependencies: '@babel/core': 7.24.6 '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.6) - core-js-compat: 3.38.0 + core-js-compat: 3.37.1 transitivePeerDependencies: - supports-color @@ -12689,17 +12736,16 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-styled-components@2.1.4(@babel/core@7.26.8)(styled-components@5.3.11(@babel/core@7.26.8)(react-dom@18.3.1(react@18.3.1))(react-is@17.0.2)(react@18.3.1))(supports-color@5.5.0): + babel-plugin-styled-components@2.1.4(@babel/core@7.26.9)(styled-components@5.3.6(@babel/core@7.26.9)(react-dom@18.3.1(react@18.3.1))(react-is@17.0.2)(react@18.3.1)): dependencies: - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.26.8) + '@babel/helper-annotate-as-pure': 7.24.6 + '@babel/helper-module-imports': 7.24.6 + '@babel/plugin-syntax-jsx': 7.24.6(@babel/core@7.26.9) lodash: 4.17.21 picomatch: 2.3.1 - styled-components: 5.3.11(@babel/core@7.26.8)(react-dom@18.3.1(react@18.3.1))(react-is@17.0.2)(react@18.3.1) + styled-components: 5.3.6(@babel/core@7.26.9)(react-dom@18.3.1(react@18.3.1))(react-is@17.0.2)(react@18.3.1) transitivePeerDependencies: - '@babel/core' - - supports-color balanced-match@1.0.2: {} @@ -12820,19 +12866,19 @@ snapshots: inherits: 2.0.4 safe-buffer: '@socketregistry/safe-buffer@1.0.5' - browserslist@4.23.3: + browserslist@4.23.0: dependencies: - caniuse-lite: 1.0.30001651 - electron-to-chromium: 1.5.6 - node-releases: 2.0.18 - update-browserslist-db: 1.1.0(browserslist@4.23.3) + caniuse-lite: 1.0.30001621 + electron-to-chromium: 1.4.783 + node-releases: 2.0.14 + update-browserslist-db: 1.0.16(browserslist@4.23.0) - browserslist@4.24.4: + browserslist@4.24.0: dependencies: - caniuse-lite: 1.0.30001699 - electron-to-chromium: 1.5.97 - node-releases: 2.0.19 - update-browserslist-db: 1.1.2(browserslist@4.24.4) + caniuse-lite: 1.0.30001669 + electron-to-chromium: 1.5.41 + node-releases: 2.0.18 + update-browserslist-db: 1.1.1(browserslist@4.24.0) bs58@4.0.1: dependencies: @@ -12888,12 +12934,12 @@ snapshots: cacheable@1.8.8: dependencies: - hookified: 1.7.0 + hookified: 1.7.1 keyv: 5.2.3 calendar-link@2.8.0: dependencies: - dayjs: 1.11.12 + dayjs: 1.11.11 callsites@3.1.0: {} @@ -12912,14 +12958,14 @@ snapshots: camelize@1.0.1: {} - caniuse-lite@1.0.30001651: {} + caniuse-lite@1.0.30001621: {} - caniuse-lite@1.0.30001699: {} + caniuse-lite@1.0.30001669: {} capnp-ts@0.7.0: dependencies: - debug: 4.4.0(supports-color@5.5.0) - tslib: 2.6.3 + debug: 4.3.7 + tslib: 2.6.2 transitivePeerDependencies: - supports-color @@ -12948,12 +12994,12 @@ snapshots: pathval: 1.1.1 type-detect: 4.0.8 - chai@5.1.2: + chai@5.2.0: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.1.3 + loupe: 3.1.2 pathval: 2.0.0 chalk@2.4.2: @@ -13044,7 +13090,7 @@ snapshots: chokidar@4.0.3: dependencies: - readdirp: 4.1.1 + readdirp: 4.1.2 chownr@1.1.4: {} @@ -13211,9 +13257,9 @@ snapshots: dependencies: toggle-selection: 1.0.6 - core-js-compat@3.38.0: + core-js-compat@3.37.1: dependencies: - browserslist: 4.23.3 + browserslist: 4.23.0 core-util-is@1.0.2: {} @@ -13381,9 +13427,9 @@ snapshots: date-fns@2.30.0: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.6 - dayjs@1.11.12: {} + dayjs@1.11.11: {} debug@2.6.9: dependencies: @@ -13393,21 +13439,25 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.3.4(supports-color@5.5.0): + dependencies: + ms: 2.1.2 + optionalDependencies: + supports-color: 5.5.0 + debug@4.3.4(supports-color@8.1.1): dependencies: ms: 2.1.2 optionalDependencies: supports-color: 8.1.1 - debug@4.3.6: + debug@4.3.7: dependencies: - ms: 2.1.2 + ms: 2.1.3 - debug@4.4.0(supports-color@5.5.0): + debug@4.4.0: dependencies: ms: 2.1.3 - optionalDependencies: - supports-color: 5.5.0 decamelize@1.2.0: {} @@ -13480,9 +13530,9 @@ snapshots: dependencies: '@leichtgewicht/ip-codec': 2.0.5 - docker-compose@1.1.0: + docker-compose@1.1.1: dependencies: - yaml: 2.5.0 + yaml: 2.4.2 doctrine@2.1.0: dependencies: @@ -13523,7 +13573,9 @@ snapshots: dot-case@3.0.4: dependencies: no-case: 3.0.4 - tslib: 2.6.3 + tslib: 2.6.2 + + dotenv@16.4.5: {} dotenv@16.4.7: {} @@ -13559,9 +13611,9 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.6: {} + electron-to-chromium@1.4.783: {} - electron-to-chromium@1.5.97: {} + electron-to-chromium@1.5.41: {} elliptic@6.5.4: dependencies: @@ -13603,7 +13655,7 @@ snapshots: engine.io-client@6.5.3(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.6 + debug: 4.3.7 engine.io-parser: 5.2.2 ws: 8.11.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) xmlhttprequest-ssl: 2.0.0 @@ -13614,7 +13666,7 @@ snapshots: engine.io-parser@5.2.2: {} - enhanced-resolve@5.17.1: + enhanced-resolve@5.16.1: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 @@ -13785,8 +13837,8 @@ snapshots: eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.50.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.50.0): dependencies: - debug: 4.4.0(supports-color@5.5.0) - enhanced-resolve: 5.17.1 + debug: 4.3.4(supports-color@5.5.0) + enhanced-resolve: 5.16.1 eslint: 8.50.0 eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.50.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.50.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.50.0))(eslint@8.50.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.50.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0) @@ -13840,7 +13892,7 @@ snapshots: eslint-plugin-jsx-a11y@6.8.0(eslint@8.50.0): dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.6 aria-query: 5.3.0 array-includes: '@socketregistry/array-includes@1.0.5' array.prototype.flatmap: '@socketregistry/array.prototype.flatmap@1.0.5' @@ -13901,13 +13953,13 @@ snapshots: - supports-color - typescript - eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.50.0)(typescript@5.4.5))(eslint@8.50.0)(typescript@5.4.5))(eslint@8.50.0)(typescript@5.4.5)(vitest@3.0.5(@types/debug@4.1.12)(@types/node@20.17.17)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.17)(typescript@5.4.5))): + eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.50.0)(typescript@5.4.5))(eslint@8.50.0)(typescript@5.4.5))(eslint@8.50.0)(typescript@5.4.5)(vitest@3.0.6(@types/debug@4.1.12)(@types/node@20.17.19)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.19)(typescript@5.4.5))): dependencies: '@typescript-eslint/utils': 7.10.0(eslint@8.50.0)(typescript@5.4.5) eslint: 8.50.0 optionalDependencies: '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.50.0)(typescript@5.4.5))(eslint@8.50.0)(typescript@5.4.5) - vitest: 3.0.5(@types/debug@4.1.12)(@types/node@20.17.17)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.17)(typescript@5.4.5)) + vitest: 3.0.6(@types/debug@4.1.12)(@types/node@20.17.19)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.19)(typescript@5.4.5)) transitivePeerDependencies: - supports-color - typescript @@ -13936,7 +13988,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.4(supports-color@5.5.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -13975,8 +14027,8 @@ snapshots: espree@9.6.1: dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.4.3 esquery@1.5.0: @@ -14056,7 +14108,7 @@ snapshots: ethereum-bloom-filters@1.1.0: dependencies: - '@noble/hashes': 1.5.0 + '@noble/hashes': 1.4.0 ethereum-cryptography@0.1.3: dependencies: @@ -14274,7 +14326,7 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.8 + micromatch: 4.0.7 fast-glob@3.3.3: dependencies: @@ -14304,7 +14356,7 @@ snapshots: dependencies: reusify: 1.0.4 - fdir@6.3.0(picomatch@4.0.2): + fdir@6.4.2(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -14363,22 +14415,26 @@ snapshots: flat-cache@6.1.6: dependencies: cacheable: 1.8.8 - flatted: 3.3.2 - hookified: 1.7.0 + flatted: 3.3.3 + hookified: 1.7.1 flat@5.0.2: {} flatted@3.3.1: {} - flatted@3.3.2: {} + flatted@3.3.3: {} fmix@0.1.0: dependencies: imul: 1.0.1 - follow-redirects@1.15.6(debug@4.4.0): + follow-redirects@1.15.6(debug@4.3.4): + optionalDependencies: + debug: 4.3.4(supports-color@5.5.0) + + follow-redirects@1.15.6(debug@4.3.7): optionalDependencies: - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.7 foreground-child@3.3.0: dependencies: @@ -14506,7 +14562,7 @@ snapshots: jackspeak: 3.4.3 minimatch: 9.0.4 minipass: 7.1.2 - package-json-from-dist: 1.0.0 + package-json-from-dist: 1.0.1 path-scurry: 1.11.1 glob@7.1.7: @@ -14637,14 +14693,14 @@ snapshots: ajv: 6.12.6 har-schema: 2.0.0 - hardhat-dependency-compiler@1.1.4(hardhat@2.22.18(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.17.17)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10)): + hardhat-dependency-compiler@1.1.4(hardhat@2.22.18(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.17.19)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10)): dependencies: - hardhat: 2.22.18(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.17.17)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10) + hardhat: 2.22.18(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.17.19)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10) - hardhat-deploy-ethers@0.3.0-beta.13(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.18(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.17.17)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10)): + hardhat-deploy-ethers@0.3.0-beta.13(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.18(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.17.19)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10)): dependencies: ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - hardhat: 2.22.18(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.17.17)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10) + hardhat: 2.22.18(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.17.19)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10) hardhat-deploy@0.11.45(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: @@ -14660,10 +14716,10 @@ snapshots: '@ethersproject/transactions': 5.7.0 '@ethersproject/wallet': 5.7.0 '@types/qs': 6.9.15 - axios: 0.21.4(debug@4.4.0) + axios: 0.21.4(debug@4.3.4) chalk: 4.1.2 chokidar: 3.6.0 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.4(supports-color@5.5.0) enquirer: 2.4.1 ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) form-data: 4.0.0 @@ -14677,7 +14733,7 @@ snapshots: - supports-color - utf-8-validate - hardhat@2.22.18(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.17.17)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10): + hardhat@2.22.18(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.17.19)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10): dependencies: '@ethersproject/abi': 5.7.0 '@metamask/eth-sig-util': 4.0.1 @@ -14695,7 +14751,7 @@ snapshots: boxen: 5.1.2 chokidar: 4.0.3 ci-info: 2.0.0 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.7 enquirer: 2.4.1 env-paths: 2.2.1 ethereum-cryptography: 1.2.0 @@ -14715,16 +14771,16 @@ snapshots: raw-body: 2.5.2 resolve: 1.17.0 semver: 6.3.1 - solc: 0.8.26(debug@4.4.0) + solc: 0.8.26(debug@4.3.7) source-map-support: 0.5.21 stacktrace-parser: 0.1.10 - tinyglobby: 0.2.6 + tinyglobby: 0.2.9 tsort: 0.0.1 undici: 5.28.4 uuid: 8.3.2 - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) + ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) optionalDependencies: - ts-node: 10.9.2(@types/node@20.17.17)(typescript@5.4.5) + ts-node: 10.9.2(@types/node@20.17.19)(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: - bufferutil @@ -14779,7 +14835,7 @@ snapshots: dependencies: react-is: 16.13.1 - hookified@1.7.0: {} + hookified@1.7.1: {} hosted-git-info@2.8.9: {} @@ -14817,7 +14873,7 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.7 transitivePeerDependencies: - supports-color @@ -14842,14 +14898,14 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.7 transitivePeerDependencies: - supports-color https-proxy-agent@7.0.4: dependencies: agent-base: 7.1.1 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.7 transitivePeerDependencies: - supports-color @@ -14861,11 +14917,11 @@ snapshots: i18next-browser-languagedetector@6.1.8: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.6 i18next-browser-languagedetector@7.1.0: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.6 i18next-http-backend@1.4.5: dependencies: @@ -14875,11 +14931,11 @@ snapshots: i18next@21.10.0: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.6 i18next@23.11.5: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.6 iconv-lite@0.4.24: dependencies: @@ -15046,7 +15102,7 @@ snapshots: istanbul-lib-source-maps@5.0.6: dependencies: '@jridgewell/trace-mapping': 0.3.25 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.0 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -15070,7 +15126,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.17.17 + '@types/node': 20.17.19 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -15078,12 +15134,12 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.19 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jiti@1.21.6: {} + jiti@1.21.0: {} jiti@2.4.2: {} @@ -15132,7 +15188,7 @@ snapshots: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -15143,7 +15199,7 @@ snapshots: jsesc@2.5.2: {} - jsesc@3.1.0: {} + jsesc@3.0.2: {} json-buffer@3.0.1: {} @@ -15225,7 +15281,7 @@ snapshots: keyv@5.2.3: dependencies: - '@keyv/serialize': 1.0.2 + '@keyv/serialize': 1.0.3 keyvaluestorage-interface@1.0.0: {} @@ -15235,11 +15291,11 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - knip@5.44.0(@types/node@20.17.17)(typescript@5.4.5): + knip@5.44.2(@types/node@20.17.19)(typescript@5.4.5): dependencies: '@nodelib/fs.walk': 3.0.1 '@snyk/github-codeowners': 1.1.0 - '@types/node': 20.17.17 + '@types/node': 20.17.19 easy-table: 1.2.0 enhanced-resolve: 5.18.1 fast-glob: 3.3.3 @@ -15254,7 +15310,7 @@ snapshots: summary: 2.1.0 typescript: 5.4.5 zod: 3.23.8 - zod-validation-error: 3.3.1(zod@3.23.8) + zod-validation-error: 3.4.0(zod@3.23.8) known-css-properties@0.35.0: {} @@ -15291,11 +15347,11 @@ snapshots: get-port-please: 3.1.2 h3: 1.11.1 http-shutdown: 1.2.2 - jiti: 1.21.6 + jiti: 1.21.0 mlly: 1.7.0 node-forge: 1.3.1 pathe: 1.1.2 - std-env: 3.8.0 + std-env: 3.7.0 ufo: 1.5.3 untun: 0.1.3 uqr: 0.1.2 @@ -15365,6 +15421,8 @@ snapshots: dependencies: get-func-name: 2.0.2 + loupe@3.1.2: {} + loupe@3.1.3: {} lower-case-first@1.0.2: @@ -15375,7 +15433,7 @@ snapshots: lower-case@2.0.2: dependencies: - tslib: 2.6.3 + tslib: 2.6.2 lowercase-keys@2.0.0: {} @@ -15399,23 +15457,27 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + magic-string@0.30.10: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 magicast@0.3.5: dependencies: - '@babel/parser': 7.26.8 - '@babel/types': 7.26.8 + '@babel/parser': 7.25.8 + '@babel/types': 7.25.8 source-map-js: 1.2.0 make-dir@4.0.0: dependencies: - semver: 7.6.3 + semver: 7.6.2 make-error@1.3.6: {} - markdown-to-jsx@7.7.3(react@18.3.1): + markdown-to-jsx@7.7.4(react@18.3.1): dependencies: react: 18.3.1 @@ -15439,7 +15501,7 @@ snapshots: media-query-parser@2.0.2: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.6 media-typer@0.3.0: {} @@ -15457,6 +15519,11 @@ snapshots: micro-ftch@0.3.1: {} + micromatch@4.0.7: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -15487,7 +15554,7 @@ snapshots: miniflare@3.20240512.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@cspotcode/source-map-support': 0.8.1 - acorn: 8.12.1 + acorn: 8.11.3 acorn-walk: 8.3.2 capnp-ts: 0.7.0 exit-hook: 2.2.1 @@ -15495,7 +15562,7 @@ snapshots: stoppable: 1.1.0 undici: 5.28.4 workerd: 1.20240512.0 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) youch: 3.3.3 zod: 3.23.8 transitivePeerDependencies: @@ -15556,7 +15623,7 @@ snapshots: mlly@1.7.0: dependencies: - acorn: 8.12.1 + acorn: 8.11.3 pathe: 1.1.2 pkg-types: 1.1.1 ufo: 1.5.3 @@ -15615,13 +15682,13 @@ snapshots: ms@2.1.3: {} - msw@2.7.0(@types/node@20.17.17)(typescript@5.4.5): + msw@2.7.0(@types/node@20.17.19)(typescript@5.4.5): dependencies: '@bundled-es-modules/cookie': 2.0.1 '@bundled-es-modules/statuses': 1.0.1 '@bundled-es-modules/tough-cookie': 0.1.6 - '@inquirer/confirm': 5.1.0(@types/node@20.17.17) - '@mswjs/interceptors': 0.37.3 + '@inquirer/confirm': 5.1.3(@types/node@20.17.19) + '@mswjs/interceptors': 0.37.5 '@open-draft/deferred-promise': 2.2.0 '@open-draft/until': 2.1.0 '@types/cookie': 0.6.0 @@ -15633,7 +15700,7 @@ snapshots: path-to-regexp: 6.3.0 picocolors: 1.1.1 strict-event-emitter: 0.5.1 - type-fest: 4.30.0 + type-fest: 4.32.0 yargs: 17.7.2 optionalDependencies: typescript: 5.4.5 @@ -15683,7 +15750,7 @@ snapshots: nano-css@5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.4.15 css-tree: 1.1.3 csstype: 3.1.3 fastest-stable-stringify: 2.0.2 @@ -15704,31 +15771,31 @@ snapshots: negotiator@0.6.3: {} - next-dev-https@0.1.2(patch_hash=q5l3x5627ujg3rak6l6v24c2cq)(next@13.5.8(@babel/core@7.26.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1): + next-dev-https@0.1.2(patch_hash=q5l3x5627ujg3rak6l6v24c2cq)(next@13.5.8(@babel/core@7.26.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1): dependencies: arg: 5.0.2 - next: 13.5.8(@babel/core@7.26.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 13.5.8(@babel/core@7.26.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) qrcode-terminal: 0.12.0 react: 18.3.1 selfsigned: 2.4.1 - next-router-mock@0.9.13(next@13.5.8(@babel/core@7.26.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1): + next-router-mock@0.9.13(next@13.5.8(@babel/core@7.26.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1): dependencies: - next: 13.5.8(@babel/core@7.26.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 13.5.8(@babel/core@7.26.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 next-tick@1.1.0: {} - next@13.5.8(@babel/core@7.26.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@13.5.8(@babel/core@7.26.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@next/env': 13.5.8 '@swc/helpers': 0.5.2 busboy: 1.6.0 - caniuse-lite: 1.0.30001651 + caniuse-lite: 1.0.30001669 postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.1(@babel/core@7.26.8)(react@18.3.1) + styled-jsx: 5.1.1(@babel/core@7.26.9)(react@18.3.1) watchpack: 2.4.0 optionalDependencies: '@next/swc-darwin-arm64': 13.5.8 @@ -15751,7 +15818,7 @@ snapshots: no-case@3.0.4: dependencies: lower-case: 2.0.2 - tslib: 2.6.3 + tslib: 2.6.2 node-addon-api@2.0.2: {} @@ -15781,9 +15848,9 @@ snapshots: node-gyp-build@4.8.1: {} - node-releases@2.0.18: {} + node-releases@2.0.14: {} - node-releases@2.0.19: {} + node-releases@2.0.18: {} nofilter@1.0.4: {} @@ -15904,7 +15971,7 @@ snapshots: p-try@2.2.0: {} - package-json-from-dist@1.0.0: {} + package-json-from-dist@1.0.1: {} pako@2.1.0: {} @@ -15924,7 +15991,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.25.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -15970,6 +16037,8 @@ snapshots: path-to-regexp@0.1.7: {} + path-to-regexp@6.2.2: {} + path-to-regexp@6.3.0: {} path-type@1.1.0: @@ -15998,6 +16067,8 @@ snapshots: performance-now@2.1.0: {} + picocolors@1.0.1: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -16043,11 +16114,11 @@ snapshots: mlly: 1.7.0 pathe: 1.1.2 - playwright-core@1.48.2: {} + playwright-core@1.49.0: {} - playwright@1.48.2: + playwright@1.49.0: dependencies: - playwright-core: 1.48.2 + playwright-core: 1.49.0 optionalDependencies: fsevents: 2.3.2 @@ -16091,7 +16162,7 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - preact@10.23.1: {} + preact@10.22.0: {} prelude-ls@1.2.1: {} @@ -16225,7 +16296,7 @@ snapshots: react-error-boundary@3.1.4(react@18.3.1): dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.6 react: 18.3.1 react-hook-form@7.51.0(react@18.3.1): @@ -16234,7 +16305,7 @@ snapshots: react-i18next@11.18.6(i18next@21.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.6 html-parse-stringify: 3.0.1 i18next: 21.10.0 react: 18.3.1 @@ -16257,7 +16328,7 @@ snapshots: dependencies: react: 18.3.1 react-style-singleton: 2.2.1(@types/react@18.3.12)(react@18.3.1) - tslib: 2.6.3 + tslib: 2.6.2 optionalDependencies: '@types/react': 18.3.12 @@ -16266,7 +16337,7 @@ snapshots: react: 18.3.1 react-remove-scroll-bar: 2.3.6(@types/react@18.3.12)(react@18.3.1) react-style-singleton: 2.2.1(@types/react@18.3.12)(react@18.3.1) - tslib: 2.6.3 + tslib: 2.6.2 use-callback-ref: 1.3.2(@types/react@18.3.12)(react@18.3.1) use-sidecar: 1.1.2(@types/react@18.3.12)(react@18.3.1) optionalDependencies: @@ -16277,7 +16348,7 @@ snapshots: get-nonce: 1.0.1 invariant: 2.2.4 react: 18.3.1 - tslib: 2.6.3 + tslib: 2.6.2 optionalDependencies: '@types/react': 18.3.12 @@ -16291,10 +16362,10 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-universal-interface@0.6.2(react@18.3.1)(tslib@2.6.3): + react-universal-interface@0.6.2(react@18.3.1)(tslib@2.6.2): dependencies: react: 18.3.1 - tslib: 2.6.3 + tslib: 2.6.2 react-use-error-boundary@3.0.0(react@18.3.1): dependencies: @@ -16316,13 +16387,13 @@ snapshots: nano-css: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-universal-interface: 0.6.2(react@18.3.1)(tslib@2.6.3) + react-universal-interface: 0.6.2(react@18.3.1)(tslib@2.6.2) resize-observer-polyfill: 1.5.1 screenfull: 5.2.0 set-harmonic-interval: 1.0.1 throttle-debounce: 3.0.1 ts-easing: 0.2.0 - tslib: 2.6.3 + tslib: 2.6.2 react@18.3.1: dependencies: @@ -16377,7 +16448,7 @@ snapshots: dependencies: picomatch: 2.3.1 - readdirp@4.1.1: {} + readdirp@4.1.2: {} real-require@0.1.0: {} @@ -16396,7 +16467,7 @@ snapshots: regenerator-transform@0.15.2: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.6 regexpu-core@5.3.2: dependencies: @@ -16554,7 +16625,7 @@ snapshots: rtl-css-js@1.16.1: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.6 run-parallel@1.2.0: dependencies: @@ -16562,7 +16633,7 @@ snapshots: rxjs@7.8.1: dependencies: - tslib: 2.6.3 + tslib: 2.6.2 safe-stable-stringify@2.4.3: {} @@ -16610,7 +16681,7 @@ snapshots: semver@6.3.1: {} - semver@7.6.3: {} + semver@7.6.2: {} send@0.18.0: dependencies: @@ -16729,12 +16800,12 @@ snapshots: snake-case@3.0.4: dependencies: dot-case: 3.0.4 - tslib: 2.6.3 + tslib: 2.6.2 socket.io-client@4.7.5(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.6 + debug: 4.3.7 engine.io-client: 6.5.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) socket.io-parser: 4.2.4 transitivePeerDependencies: @@ -16745,7 +16816,7 @@ snapshots: socket.io-parser@4.2.4: dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.6 + debug: 4.3.7 transitivePeerDependencies: - supports-color @@ -16757,11 +16828,11 @@ snapshots: semver: 5.7.2 yargs: 4.8.1 - solc@0.8.26(debug@4.4.0): + solc@0.8.26(debug@4.3.7): dependencies: command-exists: 1.2.9 commander: 8.3.0 - follow-redirects: 1.15.6(debug@4.4.0) + follow-redirects: 1.15.6(debug@4.3.7) js-sha3: 0.8.0 memorystream: 0.3.1 semver: 5.7.2 @@ -16867,6 +16938,8 @@ snapshots: statuses@2.0.1: {} + std-env@3.7.0: {} + std-env@3.8.0: {} stoppable@1.1.0: {} @@ -16932,7 +17005,7 @@ snapshots: strip-ansi@7.1.0: dependencies: - ansi-regex: 6.0.1 + ansi-regex: 6.1.0 strip-bom@2.0.0: dependencies: @@ -16956,14 +17029,14 @@ snapshots: strip-json-comments@5.0.1: {} - styled-components@5.3.11(@babel/core@7.26.8)(react-dom@18.3.1(react@18.3.1))(react-is@17.0.2)(react@18.3.1): + styled-components@5.3.6(@babel/core@7.26.9)(react-dom@18.3.1(react@18.3.1))(react-is@17.0.2)(react@18.3.1): dependencies: - '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) - '@babel/traverse': 7.25.3(supports-color@5.5.0) + '@babel/helper-module-imports': 7.24.6 + '@babel/traverse': 7.24.6(supports-color@5.5.0) '@emotion/is-prop-valid': 1.2.2 '@emotion/stylis': 0.8.5 '@emotion/unitless': 0.7.5 - babel-plugin-styled-components: 2.1.4(@babel/core@7.26.8)(styled-components@5.3.11(@babel/core@7.26.8)(react-dom@18.3.1(react@18.3.1))(react-is@17.0.2)(react@18.3.1))(supports-color@5.5.0) + babel-plugin-styled-components: 2.1.4(@babel/core@7.26.9)(styled-components@5.3.6(@babel/core@7.26.9)(react-dom@18.3.1(react@18.3.1))(react-is@17.0.2)(react@18.3.1)) css-to-react-native: 3.2.0 hoist-non-react-statics: 3.3.2 react: 18.3.1 @@ -16974,12 +17047,12 @@ snapshots: transitivePeerDependencies: - '@babel/core' - styled-jsx@5.1.1(@babel/core@7.26.8)(react@18.3.1): + styled-jsx@5.1.1(@babel/core@7.26.9)(react@18.3.1): dependencies: client-only: 0.0.1 react: 18.3.1 optionalDependencies: - '@babel/core': 7.26.8 + '@babel/core': 7.26.9 stylelint-config-recommended@15.0.0(stylelint@16.14.1(typescript@5.4.5)): dependencies: @@ -16994,7 +17067,7 @@ snapshots: dependencies: globby: 11.1.0 jest-worker: 29.7.0 - micromatch: 4.0.8 + micromatch: 4.0.7 normalize-path: 3.0.0 schema-utils: 4.2.0 stylelint: 16.14.1(typescript@5.4.5) @@ -17011,7 +17084,7 @@ snapshots: cosmiconfig: 9.0.0(typescript@5.4.5) css-functions-list: 3.2.3 css-tree: 3.1.0 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.7 fast-glob: 3.3.3 fastest-levenshtein: 1.0.16 file-entry-cache: 10.0.6 @@ -17080,7 +17153,7 @@ snapshots: css-tree: 2.3.1 css-what: 6.1.0 csso: 5.0.5 - picocolors: 1.1.1 + picocolors: 1.0.1 swap-case@1.1.2: dependencies: @@ -17110,7 +17183,7 @@ snapshots: synckit@0.8.8: dependencies: '@pkgr/core': 0.1.1 - tslib: 2.6.3 + tslib: 2.6.2 system-architecture@0.1.0: {} @@ -17176,9 +17249,9 @@ snapshots: tinyexec@0.3.2: {} - tinyglobby@0.2.6: + tinyglobby@0.2.9: dependencies: - fdir: 6.3.0(picomatch@4.0.2) + fdir: 6.4.2(picomatch@4.0.2) picomatch: 4.0.2 tinypool@1.0.2: {} @@ -17196,6 +17269,8 @@ snapshots: dependencies: os-tmpdir: 1.0.2 + to-fast-properties@2.0.0: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -17232,15 +17307,15 @@ snapshots: ts-easing@0.2.0: {} - ts-node@10.9.2(@types/node@20.17.17)(typescript@5.4.5): + ts-node@10.9.2(@types/node@20.17.19)(typescript@5.4.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.17.17 - acorn: 8.12.1 + '@types/node': 20.17.19 + acorn: 8.11.3 acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 @@ -17252,6 +17327,8 @@ snapshots: ts-pattern@4.3.0: {} + ts-pattern@5.5.0: {} + ts-pattern@5.6.2: {} tsconfig-paths@3.15.0: @@ -17263,7 +17340,7 @@ snapshots: tslib@1.14.1: {} - tslib@2.6.3: {} + tslib@2.6.2: {} tsort@0.0.1: {} @@ -17296,7 +17373,7 @@ snapshots: type-fest@0.7.1: {} - type-fest@4.30.0: {} + type-fest@4.32.0: {} type-is@1.6.18: dependencies: @@ -17327,7 +17404,7 @@ snapshots: typescript@5.7.3: {} - ua-parser-js@1.0.37: {} + ua-parser-js@1.0.39: {} ufo@1.5.3: {} @@ -17397,15 +17474,15 @@ snapshots: consola: 3.2.3 pathe: 1.1.2 - update-browserslist-db@1.1.0(browserslist@4.23.3): + update-browserslist-db@1.0.16(browserslist@4.23.0): dependencies: - browserslist: 4.23.3 + browserslist: 4.23.0 escalade: 3.1.2 picocolors: 1.1.1 - update-browserslist-db@1.1.2(browserslist@4.24.4): + update-browserslist-db@1.1.1(browserslist@4.24.0): dependencies: - browserslist: 4.24.4 + browserslist: 4.24.0 escalade: 3.2.0 picocolors: 1.1.1 @@ -17431,7 +17508,7 @@ snapshots: use-callback-ref@1.3.2(@types/react@18.3.12)(react@18.3.1): dependencies: react: 18.3.1 - tslib: 2.6.3 + tslib: 2.6.2 optionalDependencies: '@types/react': 18.3.12 @@ -17444,7 +17521,7 @@ snapshots: dependencies: detect-node-es: 1.1.0 react: 18.3.1 - tslib: 2.6.3 + tslib: 2.6.2 optionalDependencies: '@types/react': 18.3.12 @@ -17521,13 +17598,13 @@ snapshots: - utf-8-validate - zod - vite-node@3.0.5(@types/node@20.17.17): + vite-node@3.0.6(@types/node@20.17.19): dependencies: cac: 6.7.14 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 5.2.11(@types/node@20.17.17) + vite: 5.2.11(@types/node@20.17.19) transitivePeerDependencies: - '@types/node' - less @@ -17538,38 +17615,38 @@ snapshots: - supports-color - terser - vite-plugin-magical-svg@1.3.0(vite@5.2.11(@types/node@20.17.17)): + vite-plugin-magical-svg@1.3.0(vite@5.2.11(@types/node@20.17.19)): dependencies: - magic-string: 0.30.17 + magic-string: 0.30.10 svgo: 3.3.2 - vite: 5.2.11(@types/node@20.17.17) + vite: 5.2.11(@types/node@20.17.19) xml2js: 0.6.2 - vite@5.2.11(@types/node@20.17.17): + vite@5.2.11(@types/node@20.17.19): dependencies: esbuild: 0.20.2 postcss: 8.4.38 rollup: 4.18.0 optionalDependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.19 fsevents: 2.3.3 - vitest-canvas-mock@0.3.3(vitest@3.0.5(@types/debug@4.1.12)(@types/node@20.17.17)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.17)(typescript@5.4.5))): + vitest-canvas-mock@0.3.3(vitest@3.0.6(@types/debug@4.1.12)(@types/node@20.17.19)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.19)(typescript@5.4.5))): dependencies: jest-canvas-mock: 2.5.2 - vitest: 3.0.5(@types/debug@4.1.12)(@types/node@20.17.17)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.17)(typescript@5.4.5)) - - vitest@3.0.5(@types/debug@4.1.12)(@types/node@20.17.17)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.17)(typescript@5.4.5)): - dependencies: - '@vitest/expect': 3.0.5 - '@vitest/mocker': 3.0.5(msw@2.7.0(@types/node@20.17.17)(typescript@5.4.5))(vite@5.2.11(@types/node@20.17.17)) - '@vitest/pretty-format': 3.0.5 - '@vitest/runner': 3.0.5 - '@vitest/snapshot': 3.0.5 - '@vitest/spy': 3.0.5 - '@vitest/utils': 3.0.5 - chai: 5.1.2 - debug: 4.4.0(supports-color@5.5.0) + vitest: 3.0.6(@types/debug@4.1.12)(@types/node@20.17.19)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.19)(typescript@5.4.5)) + + vitest@3.0.6(@types/debug@4.1.12)(@types/node@20.17.19)(jsdom@24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(msw@2.7.0(@types/node@20.17.19)(typescript@5.4.5)): + dependencies: + '@vitest/expect': 3.0.6 + '@vitest/mocker': 3.0.6(msw@2.7.0(@types/node@20.17.19)(typescript@5.4.5))(vite@5.2.11(@types/node@20.17.19)) + '@vitest/pretty-format': 3.0.6 + '@vitest/runner': 3.0.6 + '@vitest/snapshot': 3.0.6 + '@vitest/spy': 3.0.6 + '@vitest/utils': 3.0.6 + chai: 5.2.0 + debug: 4.4.0 expect-type: 1.1.0 magic-string: 0.30.17 pathe: 2.0.3 @@ -17578,12 +17655,12 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 5.2.11(@types/node@20.17.17) - vite-node: 3.0.5(@types/node@20.17.17) + vite: 5.2.11(@types/node@20.17.19) + vite-node: 3.0.6(@types/node@20.17.19) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 20.17.17 + '@types/node': 20.17.19 jsdom: 24.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - less @@ -18101,8 +18178,8 @@ snapshots: webauthn-p256@0.0.5: dependencies: - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 + '@noble/curves': 1.4.0 + '@noble/hashes': 1.4.0 webextension-polyfill@0.10.0: {} @@ -18112,7 +18189,7 @@ snapshots: webpack-bundle-analyzer@4.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: - acorn: 8.12.1 + acorn: 8.11.3 acorn-walk: 8.3.2 chalk: 4.1.2 commander: 7.2.0 @@ -18120,7 +18197,7 @@ snapshots: lodash: 4.17.21 opener: 1.5.2 sirv: 1.0.19 - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) + ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -18199,7 +18276,7 @@ snapshots: esbuild: 0.17.19 miniflare: 3.20240512.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) nanoid: 3.3.7 - path-to-regexp: 6.3.0 + path-to-regexp: 6.2.2 resolve: 1.22.8 resolve.exports: 2.0.2 selfsigned: 2.4.1 @@ -18257,7 +18334,7 @@ snapshots: bufferutil: 4.0.8 utf-8-validate: 5.0.10 - ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): + ws@7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10): optionalDependencies: bufferutil: 4.0.8 utf-8-validate: 5.0.10 @@ -18267,12 +18344,12 @@ snapshots: bufferutil: 4.0.8 utf-8-validate: 5.0.10 - ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10): + ws@8.17.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): optionalDependencies: bufferutil: 4.0.8 utf-8-validate: 5.0.10 - ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): + ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10): optionalDependencies: bufferutil: 4.0.8 utf-8-validate: 5.0.10 @@ -18327,7 +18404,7 @@ snapshots: yallist@3.1.1: {} - yaml@2.5.0: {} + yaml@2.4.2: {} yargs-parser@18.1.3: dependencies: @@ -18369,7 +18446,7 @@ snapshots: yargs@16.2.0: dependencies: cliui: 7.0.4 - escalade: 3.1.2 + escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 @@ -18379,7 +18456,7 @@ snapshots: yargs@17.7.2: dependencies: cliui: 8.0.1 - escalade: 3.1.2 + escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 @@ -18419,7 +18496,7 @@ snapshots: dependencies: ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - zod-validation-error@3.3.1(zod@3.23.8): + zod-validation-error@3.4.0(zod@3.23.8): dependencies: zod: 3.23.8 diff --git a/src/components/pages/profile/[name]/registration/steps/Complete.tsx b/src/components/pages/profile/[name]/registration/steps/Complete.tsx index b1a3f9790..0f9391abf 100644 --- a/src/components/pages/profile/[name]/registration/steps/Complete.tsx +++ b/src/components/pages/profile/[name]/registration/steps/Complete.tsx @@ -3,7 +3,6 @@ import { Fragment, useEffect, useMemo, useState } from 'react' import type ConfettiT from 'react-confetti' import { useTranslation } from 'react-i18next' import styled, { css } from 'styled-components' -import { decodeEventLog } from 'viem' import { useAccount } from 'wagmi' import { tokenise } from '@ensdomains/ensjs/utils' @@ -12,6 +11,7 @@ import { Button, Typography } from '@ensdomains/thorin' import MobileFullWidth from '@app/components/@atoms/MobileFullWidth' import NFTTemplate from '@app/components/@molecules/NFTTemplate/NFTTemplate' import { Card } from '@app/components/Card' +import { useRegistrationValueFromRegisterReceipt } from '@app/hooks/pages/register/useRegistrationValueFromRegisterReceipt' import useWindowSize from '@app/hooks/useWindowSize' import { useTransactionFlow } from '@app/transaction-flow/TransactionFlowProvider' import { dateFromDateDiff } from '@app/utils/date' @@ -126,47 +126,6 @@ const SubtitleWithGradient = styled(Typography)( `, ) -const nameRegisteredSnippet = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - name: 'name', - type: 'string', - }, - { - indexed: true, - name: 'label', - type: 'bytes32', - }, - { - indexed: true, - internalType: 'address', - name: 'owner', - type: 'address', - }, - { - indexed: false, - name: 'baseCost', - type: 'uint256', - }, - { - indexed: false, - name: 'premium', - type: 'uint256', - }, - { - indexed: false, - name: 'expires', - type: 'uint256', - }, - ], - name: 'NameRegistered', - type: 'event', - }, -] as const - const Confetti = dynamic(() => import('react-confetti').then((mod) => mod.default as typeof ConfettiT), ) @@ -191,26 +150,10 @@ const useEthInvoice = ( const commitReceipt = commitTxFlow?.minedData const registerReceipt = registerTxFlow?.minedData - const registrationValue = useMemo(() => { - if (!registerReceipt) return null - for (const log of registerReceipt.logs) { - try { - const { - args: { baseCost, premium }, - } = decodeEventLog({ - abi: nameRegisteredSnippet, - topics: log.topics, - data: log.data, - eventName: 'NameRegistered', - }) - return baseCost + premium - // eslint-disable-next-line no-empty - } catch {} - } - return null - }, [registerReceipt]) + const { data: registrationValue, isLoading: isRegistrationValueLoading } = + useRegistrationValueFromRegisterReceipt({ registerReceipt }) - const isLoading = !commitReceipt || !registerReceipt + const isLoading = !commitReceipt || !registerReceipt || isRegistrationValueLoading useEffect(() => { const storage = localStorage.getItem(`avatar-src-${name}`) diff --git a/src/components/pages/profile/[name]/registration/steps/Transactions.tsx b/src/components/pages/profile/[name]/registration/steps/Transactions.tsx index 29e9e7524..7ff0280e6 100644 --- a/src/components/pages/profile/[name]/registration/steps/Transactions.tsx +++ b/src/components/pages/profile/[name]/registration/steps/Transactions.tsx @@ -4,7 +4,7 @@ import styled, { css } from 'styled-components' import { match, P } from 'ts-pattern' import { useAccount } from 'wagmi' -import { makeCommitment } from '@ensdomains/ensjs/utils' +import { makeCommitment, makeLegacyCommitment } from '@ensdomains/ensjs/utils' import { Button, CountdownCircle, Dialog, Heading, Spinner } from '@ensdomains/thorin' import MobileFullWidth from '@app/components/@atoms/MobileFullWidth' @@ -19,6 +19,8 @@ import useRegistrationParams from '@app/hooks/useRegistrationParams' import { CenteredTypography } from '@app/transaction-flow/input/ProfileEditor/components/CenteredTypography' import { createTransactionItem } from '@app/transaction-flow/transaction' import { useTransactionFlow } from '@app/transaction-flow/TransactionFlowProvider' +import { isLegacyRegistration } from '@app/utils/registration/isLegacyRegistration' +import { makeLegacyRegistrationParams } from '@app/utils/registration/makeLegacyRegistrationParams' import { ONE_DAY } from '@app/utils/time' import { RegistrationReducerDataItem } from '../types' @@ -258,8 +260,13 @@ const Transactions = ({ registrationData, name, callback, onStart }: Props) => { const commitCouldBeFound = !commitTx?.stage || commitTx.stage === 'confirm' || commitTx.stage === 'failed' + const isLegacyCommit = isLegacyRegistration(registrationParams) useExistingCommitment({ - commitment: makeCommitment(registrationParams), + registrationParams, + commitment: isLegacyCommit + ? makeLegacyCommitment(makeLegacyRegistrationParams(registrationParams)) + : makeCommitment(registrationParams), + isLegacyCommit, enabled: commitCouldBeFound, commitKey, }) diff --git a/src/hooks/chain/useEstimateGasWithStateOverride.ts b/src/hooks/chain/useEstimateGasWithStateOverride.ts index 34c23b8e4..4d4da63f7 100644 --- a/src/hooks/chain/useEstimateGasWithStateOverride.ts +++ b/src/hooks/chain/useEstimateGasWithStateOverride.ts @@ -76,14 +76,14 @@ type StateOverride = { } } -type TransactionItem = { +export type TransactionItem = { [TName in TransactionName]: Omit, 'client' | 'connectorClient'> & { name: TName stateOverride?: UserStateOverrides } }[TransactionName] -type UseEstimateGasWithStateOverrideParameters< +export type UseEstimateGasWithStateOverrideParameters< TransactionItems extends TransactionItem[] | readonly TransactionItem[], > = { transactions: TransactionItems @@ -295,9 +295,10 @@ export const useEstimateGasWithStateOverride = < const data = useMemo(() => { if (!gasPrice || !query.data) { + const transactions = params.transactions ?? [] return { gasEstimate: 0n, - gasEstimateArray: params.transactions.map(() => 0n) as GasEstimateArray, + gasEstimateArray: transactions.map(() => 0n) as GasEstimateArray, gasCost: 0n, gasCostEth: '0', } diff --git a/src/hooks/gasEstimation/calculateTransactions.ts b/src/hooks/gasEstimation/calculateTransactions.ts new file mode 100644 index 000000000..c7a259fb9 --- /dev/null +++ b/src/hooks/gasEstimation/calculateTransactions.ts @@ -0,0 +1,80 @@ +import { match } from 'ts-pattern' +import { Address, parseEther } from 'viem' + +import { + makeCommitment, + makeLegacyCommitment, + RegistrationParameters, +} from '@ensdomains/ensjs/utils' + +import { isLegacyRegistration } from '@app/utils/registration/isLegacyRegistration' +import { makeLegacyRegistrationParams } from '@app/utils/registration/makeLegacyRegistrationParams' + +import { useEstimateGasWithStateOverride } from '../chain/useEstimateGasWithStateOverride' + +type ReturnType = null | Parameters[0]['transactions'] + +export const calculateTransactions = ({ + registrationParams, + ethRegistrarControllerAddress, + legacyEthRegistrarControllerAddress, + fiveMinutesAgoInSeconds, + price, +}: { + registrationParams?: RegistrationParameters + ethRegistrarControllerAddress: unknown + legacyEthRegistrarControllerAddress: unknown + fiveMinutesAgoInSeconds: number + price?: { base: bigint; premium: bigint } +}): ReturnType => { + if ( + !registrationParams || + !ethRegistrarControllerAddress || + !legacyEthRegistrarControllerAddress || + !price + ) + return null + + const isLegacy = isLegacyRegistration(registrationParams) + + const registrationStateOverride = match(isLegacy) + .with(true, () => ({ + address: legacyEthRegistrarControllerAddress as Address, + stateDiff: [ + { + slot: 5, + keys: [makeLegacyCommitment(makeLegacyRegistrationParams(registrationParams))], + value: BigInt(fiveMinutesAgoInSeconds), + }, + ], + })) + .with(false, () => ({ + address: ethRegistrarControllerAddress as Address, + stateDiff: [ + { + slot: 1, + keys: [makeCommitment(registrationParams)], + value: BigInt(fiveMinutesAgoInSeconds), + }, + ], + })) + .exhaustive() + + return [ + { + name: 'commitName', + data: registrationParams, + }, + { + name: 'registerName', + data: registrationParams, + stateOverride: [ + registrationStateOverride, + { + address: registrationParams.owner, + balance: price ? (price.base + price.premium) * 2n + parseEther('10000') : undefined, + }, + ], + }, + ] as const +} diff --git a/src/hooks/gasEstimation/useEstimateRegistration.ts b/src/hooks/gasEstimation/useEstimateRegistration.ts index 3d969e678..d03eea2f7 100644 --- a/src/hooks/gasEstimation/useEstimateRegistration.ts +++ b/src/hooks/gasEstimation/useEstimateRegistration.ts @@ -1,7 +1,4 @@ import { useMemo } from 'react' -import { parseEther } from 'viem' - -import { makeCommitment } from '@ensdomains/ensjs/utils' import { RegistrationReducerDataItem } from '@app/components/pages/profile/[name]/registration/types' import { deriveYearlyFee } from '@app/utils/utils' @@ -13,6 +10,7 @@ import { useEstimateGasWithStateOverride } from '../chain/useEstimateGasWithStat import { useGasPrice } from '../chain/useGasPrice' import { usePrice } from '../ensjs/public/usePrice' import useRegistrationParams from '../useRegistrationParams' +import { calculateTransactions } from './calculateTransactions' type UseEstimateFullRegistrationParameters = { registrationData: RegistrationReducerDataItem @@ -38,7 +36,9 @@ export const useEstimateFullRegistration = ({ contract: 'ensEthRegistrarController', }) - const commitment = useMemo(() => makeCommitment(registrationParams), [registrationParams]) + const legacyEthRegistrarControllerAddress = useContractAddress({ + contract: 'legacyEthRegistrarController', + }) const { data: blockTimestamp } = useBlockTimestamp() // default to use block timestamp as reference @@ -54,34 +54,16 @@ export const useEstimateFullRegistration = ({ [timestampReference], ) + const transactions = calculateTransactions({ + registrationParams, + ethRegistrarControllerAddress, + legacyEthRegistrarControllerAddress, + fiveMinutesAgoInSeconds, + price, + }) const { data, isLoading } = useEstimateGasWithStateOverride({ - transactions: [ - { - name: 'commitName', - data: registrationParams, - }, - { - name: 'registerName', - data: registrationParams, - stateOverride: [ - { - address: ethRegistrarControllerAddress, - stateDiff: [ - { - slot: 1, - keys: [commitment], - value: BigInt(fiveMinutesAgoInSeconds), - }, - ], - }, - { - address: registrationParams.owner, - balance: price ? (price.base + price.premium) * 2n + parseEther('10000') : undefined, - }, - ], - }, - ], - enabled: !!ethRegistrarControllerAddress && !!price, + transactions: transactions!, + enabled: !!transactions, }) const premiumFee = price?.premium diff --git a/src/hooks/pages/register/useRegistrationValueFromRegisterReceipt.ts b/src/hooks/pages/register/useRegistrationValueFromRegisterReceipt.ts new file mode 100644 index 000000000..f0001137f --- /dev/null +++ b/src/hooks/pages/register/useRegistrationValueFromRegisterReceipt.ts @@ -0,0 +1,65 @@ +import { decodeEventLog } from 'viem' + +import { + ethRegistrarControllerNameRegisteredEventSnippet, + legacyEthRegistrarControllerNameRegisteredEventSnippet, +} from '@ensdomains/ensjs/contracts' + +import { MinedData } from '@app/types' +import { useQuery } from '@app/utils/query/useQuery' + +const decodeLegacyNameRegisteredEventLog = (log: MinedData['logs'][number]): Promise => + new Promise((resolve, reject) => { + try { + const t = decodeEventLog({ + abi: legacyEthRegistrarControllerNameRegisteredEventSnippet, + topics: log.topics, + data: log.data, + eventName: 'NameRegistered', + }) + if (!t.args.cost) reject() + resolve(t.args.cost) + } catch { + reject() + } + }) + +const decodeWrappedNameRegisteredEventLog = (log: MinedData['logs'][number]): Promise => + new Promise((resolve, reject) => { + try { + const t = decodeEventLog({ + abi: ethRegistrarControllerNameRegisteredEventSnippet, + topics: log.topics, + data: log.data, + eventName: 'NameRegistered', + }) + resolve(t.args.baseCost + t.args.premium) + } catch { + reject() + } + }) + +export const useRegistrationValueFromRegisterReceipt = ({ + registerReceipt, +}: { + registerReceipt?: MinedData +}) => { + return useQuery({ + queryKey: ['registration-value', registerReceipt], + queryFn: async () => { + try { + const promises = registerReceipt!.logs + .map((log) => [ + decodeLegacyNameRegisteredEventLog(log), + decodeWrappedNameRegisteredEventLog(log), + ]) + .flat() + return await Promise.any(promises) + } catch { + return null + } + }, + enabled: !!registerReceipt, + retry: false, + }) +} diff --git a/src/hooks/registration/useExistingCommitment.ts b/src/hooks/registration/useExistingCommitment.ts index 5af4e5f8a..78a33ea9f 100644 --- a/src/hooks/registration/useExistingCommitment.ts +++ b/src/hooks/registration/useExistingCommitment.ts @@ -13,6 +13,8 @@ import { ethRegistrarControllerCommitmentsSnippet, ethRegistrarControllerCommitSnippet, getChainContractAddress, + legacyEthRegistrarControllerCommitmentsSnippet, + legacyEthRegistrarControllerCommitSnippet, } from '@ensdomains/ensjs/contracts' import { useTransactionFlow } from '@app/transaction-flow/TransactionFlowProvider' @@ -29,6 +31,7 @@ import { getBlockMetadataByTimestamp } from './utils/getBlockMetadataByTimestamp type UseExistingCommitmentParameters = { commitment?: Hex commitKey?: string + isLegacyCommit?: boolean } type UseExistingCommitmentInternalParameters = { @@ -121,7 +124,7 @@ const execTransactionSnippet = [ }, ] as const -const getExistingCommitmentQueryFn = +const getExistingWrappedCommitmentQueryFn = (config: ConfigWithEns) => ({ addRecentTransaction, @@ -244,6 +247,162 @@ const getExistingCommitmentQueryFn = } as const } +const getExistingLegacyCommitmentQueryFn = + (config: ConfigWithEns) => + ({ + addRecentTransaction, + setTransactionHashFromUpdate, + isSafeTx, + }: UseExistingCommitmentInternalParameters) => + async ({ + queryKey: [{ commitment, commitKey }, chainId, address], + }: QueryFunctionContext>): Promise => { + if (!commitment) throw new Error('commitment is required') + if (!commitKey) throw new Error('commitKey is required') + if (!address) throw new Error('address is required') + + const client = config.getClient({ chainId }) + const legacyEthRegistrarControllerAddress = getChainContractAddress({ + client, + contract: 'legacyEthRegistrarController', + }) + const multicall3Address = getChainContractAddress({ + client, + contract: 'multicall3', + }) + + const [commitmentTimestamp, maxCommitmentAge, blockTimestamp] = await Promise.all([ + readContract(client, { + abi: legacyEthRegistrarControllerCommitmentsSnippet, + address: legacyEthRegistrarControllerAddress, + functionName: 'commitments', + args: [commitment], + }), + readContract(client, { + abi: maxCommitmentAgeSnippet, + address: legacyEthRegistrarControllerAddress, + functionName: 'maxCommitmentAge', + }), + readContract(client, { + abi: getCurrentBlockTimestampSnippet, + address: multicall3Address, + functionName: 'getCurrentBlockTimestamp', + }), + ]) + if (!commitmentTimestamp || commitmentTimestamp === 0n) return null + + const commitmentAge = blockTimestamp - commitmentTimestamp + const commitmentTimestampNumber = Number(commitmentTimestamp) + + const existsFailure = () => + ({ status: 'commitmentExists', timestamp: commitmentTimestampNumber }) as const + + if (commitmentAge > maxCommitmentAge) + return { status: 'commitmentExpired', timestamp: commitmentTimestampNumber } as const + + const blockMetadata = await getBlockMetadataByTimestamp(client, { + timestamp: commitmentTimestamp, + }) + if (!blockMetadata.ok) return existsFailure() + + const blockData = await getBlock(client, { + blockHash: blockMetadata.data.hash, + includeTransactions: true, + }).catch(() => null) + if (!blockData) return existsFailure() + + const inputData = encodeFunctionData({ + abi: legacyEthRegistrarControllerCommitSnippet, + args: [commitment], + functionName: 'commit', + }) + + const transaction = (() => { + const checksummedAddress = getAddress(address) + const checksummedEthRegistrarControllerAddress = getAddress( + legacyEthRegistrarControllerAddress, + ) + if (isSafeTx) { + const execTransactionFunctionSelector = toFunctionSelector(execTransactionSnippet[0]) + const foundTransaction = blockData.transactions.find((t) => { + // safe transaction gets sent to the safe contract itself + if (!t.to || getAddress(t.to) !== checksummedAddress) return false + if (!t.input.startsWith(execTransactionFunctionSelector)) return false + const { args: safeTxData } = decodeFunctionData({ + abi: execTransactionSnippet, + data: t.input, + }) + if (getAddress(safeTxData[0]) !== checksummedEthRegistrarControllerAddress) return false + if (getAddress(safeTxData[2]) !== inputData) return false + return true + }) + return foundTransaction + } + const foundTransaction = blockData.transactions.find((t) => { + if (getAddress(t.from) !== checksummedAddress) return false + if (!t.to || getAddress(t.to) !== checksummedEthRegistrarControllerAddress) return false + if (t.input !== inputData) return false + return true + }) + return foundTransaction + })() + + if (!transaction) return existsFailure() + + const transactionReceipt = await getTransactionReceipt(client, { + hash: transaction.hash, + }) + + if (transactionReceipt.status !== 'success') return existsFailure() + + setTransactionHashFromUpdate(commitKey, transaction.hash) + addRecentTransaction({ + ...transaction, + hash: transaction.hash, + action: 'commitName', + key: commitKey, + input: inputData, + timestamp: commitmentTimestampNumber, + isSafeTx, + searchRetries: 0, + }) + + return { + status: 'transactionExists', + timestamp: commitmentTimestampNumber, + } as const + } + +const getExistingCommitmentQueryFn = + (config: ConfigWithEns) => + ({ + addRecentTransaction, + setTransactionHashFromUpdate, + isSafeTx, + }: UseExistingCommitmentInternalParameters) => + async ( + context: QueryFunctionContext>, + ): Promise => { + const { + queryKey: [{ commitment, commitKey, isLegacyCommit }, , address], + } = context + if (!commitment) throw new Error('commitment is required') + if (!commitKey) throw new Error('commitKey is required') + if (!address) throw new Error('address is required') + + if (isLegacyCommit) + return getExistingLegacyCommitmentQueryFn(config)({ + addRecentTransaction, + setTransactionHashFromUpdate, + isSafeTx, + })(context) + return getExistingWrappedCommitmentQueryFn(config)({ + addRecentTransaction, + setTransactionHashFromUpdate, + isSafeTx, + })(context) + } + export const useExistingCommitment = ({ // config enabled = true, diff --git a/src/hooks/registration/useSimulateRegistration.ts b/src/hooks/registration/useSimulateRegistration.ts index 962e311ea..e133b095c 100644 --- a/src/hooks/registration/useSimulateRegistration.ts +++ b/src/hooks/registration/useSimulateRegistration.ts @@ -1,8 +1,18 @@ +import { Address } from 'viem' import { usePublicClient, useSimulateContract, UseSimulateContractParameters } from 'wagmi' -import { ethRegistrarControllerRegisterSnippet } from '@ensdomains/ensjs/contracts' -import { makeRegistrationTuple, RegistrationParameters } from '@ensdomains/ensjs/utils' +import { + ethRegistrarControllerRegisterSnippet, + legacyEthRegistrarControllerRegisterWithConfigSnippet, +} from '@ensdomains/ensjs/contracts' +import { + makeLegacyRegistrationWithConfigTuple, + makeRegistrationTuple, + RegistrationParameters, +} from '@ensdomains/ensjs/utils' +import { isLegacyRegistration } from '@app/utils/registration/isLegacyRegistration' +import { makeLegacyRegistrationParams } from '@app/utils/registration/makeLegacyRegistrationParams' import { calculateValueWithBuffer } from '@app/utils/utils' import { usePrice } from '../ensjs/public/usePrice' @@ -11,6 +21,46 @@ type UseSimulateRegistrationParameters = Pick + +type UseSimulateLegacyEthRegistrarControllerRegisterReturnType = UseSimulateContractParameters< + typeof legacyEthRegistrarControllerRegisterWithConfigSnippet, + 'registerWithConfig' +> + +type MakeSimulateRegistrationParamsReturnType = + | UseSimulateEthRegistrarControllerRegisterReturnType + | UseSimulateLegacyEthRegistrarControllerRegisterReturnType + +export const makeSimulateRegistrationParams = ({ + registrationParams, + ensEthRegistrarControllerAddress, + legacyEthRegistrarControllerAddress, +}: { + registrationParams: RegistrationParameters + ensEthRegistrarControllerAddress: Address + legacyEthRegistrarControllerAddress: Address +}): MakeSimulateRegistrationParamsReturnType => { + if (isLegacyRegistration(registrationParams)) { + return { + abi: legacyEthRegistrarControllerRegisterWithConfigSnippet, + address: legacyEthRegistrarControllerAddress, + functionName: 'registerWithConfig', + args: makeLegacyRegistrationWithConfigTuple(makeLegacyRegistrationParams(registrationParams)), + } + } + + return { + abi: ethRegistrarControllerRegisterSnippet, + address: ensEthRegistrarControllerAddress, + functionName: 'register', + args: makeRegistrationTuple(registrationParams), + } +} + export const useSimulateRegistration = ({ registrationParams, query, @@ -27,10 +77,12 @@ export const useSimulateRegistration = ({ const value = base + premium return useSimulateContract({ - abi: ethRegistrarControllerRegisterSnippet, - address: client.chain.contracts.ensEthRegistrarController.address, - functionName: 'register', - args: makeRegistrationTuple(registrationParams), + ...makeSimulateRegistrationParams({ + registrationParams, + ensEthRegistrarControllerAddress: client.chain.contracts.ensEthRegistrarController.address, + legacyEthRegistrarControllerAddress: + client.chain.contracts.legacyEthRegistrarController.address, + }), value: calculateValueWithBuffer(value), query, }) diff --git a/src/hooks/registration/utils/useExistingCommitment.test.ts b/src/hooks/registration/utils/useExistingCommitment.test.ts new file mode 100644 index 000000000..22db8ffad --- /dev/null +++ b/src/hooks/registration/utils/useExistingCommitment.test.ts @@ -0,0 +1,394 @@ +/* eslint-disable no-promise-executor-return */ +import { mockFunction, renderHook, waitFor } from '@app/test-utils' + +import { getBlock, getTransactionReceipt, readContract } from 'viem/actions' +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { useAccount, useBlockNumber, useChainId, useConfig, usePublicClient } from 'wagmi' + +import { useChainName } from '@app/hooks/chain/useChainName' +import { useInvalidateOnBlock } from '@app/hooks/chain/useInvalidateOnBlock' +import { useAddRecentTransaction } from '@app/hooks/transactions/useAddRecentTransaction' +import { useIsSafeApp } from '@app/hooks/useIsSafeApp' +import { useTransactionFlow } from '@app/transaction-flow/TransactionFlowProvider' + +import { useExistingCommitment } from '../useExistingCommitment' +import { getBlockMetadataByTimestamp } from './getBlockMetadataByTimestamp' + +vi.mock('@app/hooks/chain/useChainName') +vi.mock('@app/hooks/transactions/useAddRecentTransaction') +vi.mock('@app/transaction-flow/TransactionFlowProvider') +vi.mock('@app/hooks/chain/useInvalidateOnBlock') +vi.mock('@app/hooks/useIsSafeApp') +vi.mock('wagmi') +vi.mock('viem/actions') +vi.mock('../utils/getBlockMetadataByTimestamp') +vi.mock('@ensdomains/ensjs/contracts', () => ({ + ethRegistrarControllerCommitSnippet: [ + { + inputs: [{ name: 'commitment', type: 'bytes32' }], + name: 'commit', + outputs: [], + type: 'function', + }, + ], + ethRegistrarControllerCommitmentsSnippet: [ + { + inputs: [{ name: 'commitment', type: 'bytes32' }], + name: 'commitments', + outputs: [{ name: '', type: 'uint256' }], + type: 'function', + }, + ], + legacyEthRegistrarControllerCommitSnippet: [ + { + inputs: [{ name: 'commitment', type: 'bytes32' }], + name: 'commit', + outputs: [], + type: 'function', + }, + ], + legacyEthRegistrarControllerCommitmentsSnippet: [ + { + inputs: [{ name: 'commitment', type: 'bytes32' }], + name: 'commitments', + outputs: [{ name: '', type: 'uint256' }], + type: 'function', + }, + ], + ethRegistrarControllerErrors: [], + ethRegistrarControllerABI: [], + ethRegistrarControllerInterface: {}, + legacyEthRegistrarControllerABI: [], + legacyEthRegistrarControllerInterface: {}, + nameWrapperErrors: [], + nameWrapperABI: [], + nameWrapperInterface: {}, + nameWrapperCommitSnippet: [ + { + inputs: [{ name: 'commitment', type: 'bytes32' }], + name: 'commit', + outputs: [], + type: 'function', + }, + ], + nameWrapperCommitmentsSnippet: [ + { + inputs: [{ name: 'commitment', type: 'bytes32' }], + name: 'commitments', + outputs: [{ name: '', type: 'uint256' }], + type: 'function', + }, + ], + getChainContractAddress: ({ client, contract }: { client: any; contract: string }) => + client.chain.contracts[contract].address, + __esModule: true, + default: {}, +})) + +const mockUseChainName = mockFunction(useChainName) +const mockUseAddRecentTransaction = mockFunction(useAddRecentTransaction) +const mockUseTransactionFlow = mockFunction(useTransactionFlow) +const mockUsePublicClient = mockFunction(usePublicClient) +const mockUseAccount = mockFunction(useAccount) +const mockUseConfig = mockFunction(useConfig) +const mockUseChainId = mockFunction(useChainId) +const mockUseBlockNumber = mockFunction(useBlockNumber) +const mockUseInvalidateOnBlock = mockFunction(useInvalidateOnBlock) +const mockUseIsSafeApp = mockFunction(useIsSafeApp) +const mockReadContract = mockFunction(readContract) +const mockGetBlock = mockFunction(getBlock) +const mockGetTransactionReceipt = mockFunction(getTransactionReceipt) +const mockGetBlockMetadataByTimestamp = mockFunction(getBlockMetadataByTimestamp) + +describe('useExistingCommitment', () => { + const mockCommitment = '0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef' + const mockCommitKey = 'commit-test-0xaddress' + const mockAddress = '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266' + const mockTime = 1000n + const mockMaxAge = 300n // 5 minutes in seconds + + const mockClient = { + request: vi.fn(), + chain: { + contracts: { + ensEthRegistrarController: { address: '0xcontroller' }, + legacyEthRegistrarController: { address: '0xlegacycontroller' }, + multicall3: { address: '0xmulticall' }, + }, + }, + } + + beforeEach(() => { + vi.clearAllMocks() + mockUseChainName.mockReturnValue('mainnet') + mockUseAddRecentTransaction.mockReturnValue(vi.fn()) + mockUseTransactionFlow.mockReturnValue({ + setTransactionHashFromUpdate: vi.fn(), + }) + mockUsePublicClient.mockReturnValue(mockClient) + mockUseAccount.mockReturnValue({ address: mockAddress }) + mockUseChainId.mockReturnValue(1) + mockUseConfig.mockReturnValue({ + blockExplorers: { + default: { + name: 'Etherscan', + url: 'https://etherscan.io', + apiUrl: 'https://api.etherscan.io/api', + }, + }, + getClient: () => mockClient, + _isEns: true, + }) + mockUseBlockNumber.mockReturnValue({ data: 1234n }) + mockUseInvalidateOnBlock.mockReturnValue({ data: undefined }) + mockUseIsSafeApp.mockReturnValue({ data: false, isLoading: false }) + }) + + describe('No Existing Commitment', () => { + it('should return null when no commitment exists', async () => { + mockReadContract.mockResolvedValueOnce(0n) // commitment timestamp + + const { result } = renderHook(() => + useExistingCommitment({ + commitment: mockCommitment, + commitKey: mockCommitKey, + isLegacyCommit: false, + scopeKey: mockAddress, + }), + ) + + await waitFor(() => { + expect(result.current.data).toBeNull() + }) + }) + }) + + describe('Valid Commitment', () => { + it('should return commitmentExists for valid recent commitment', async () => { + mockReadContract + .mockResolvedValueOnce(mockTime) // commitment timestamp + .mockResolvedValueOnce(mockMaxAge) // max age + .mockResolvedValueOnce(mockTime + 30n) // current block timestamp (30s after commitment) + + mockGetBlockMetadataByTimestamp.mockResolvedValueOnce({ + ok: false, + }) + + const { result } = renderHook(() => + useExistingCommitment({ + commitment: mockCommitment, + commitKey: mockCommitKey, + isLegacyCommit: false, + scopeKey: mockAddress, + }), + ) + + await waitFor(() => { + expect(result.current.data).toEqual({ + status: 'commitmentExists', + timestamp: Number(mockTime), + }) + }) + }) + + it('should verify commitment', async () => { + mockReadContract + .mockResolvedValueOnce(mockTime) // commitment timestamp + .mockResolvedValueOnce(mockMaxAge) // max age + .mockResolvedValueOnce(mockTime + 30n) // current block timestamp (30s after commitment) + + mockGetBlockMetadataByTimestamp.mockResolvedValueOnce({ + ok: false, + }) + + const { result } = renderHook(() => + useExistingCommitment({ + commitment: mockCommitment, + commitKey: mockCommitKey, + isLegacyCommit: false, + scopeKey: mockAddress, + }), + ) + + await waitFor(() => { + expect(result.current.data).toEqual({ + status: 'commitmentExists', + timestamp: Number(mockTime), + }) + }) + + // Verify it used the correct contract address + expect(mockReadContract).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + address: '0xcontroller', + }), + ) + + // Verify it called the correct contract functions + expect(mockReadContract).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + functionName: 'commitments', + args: [mockCommitment], + }), + ) + + expect(mockReadContract).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + functionName: 'maxCommitmentAge', + }), + ) + + expect(mockReadContract).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + functionName: 'getCurrentBlockTimestamp', + }), + ) + }) + }) + + describe('Expired Commitment', () => { + it('should return commitmentExpired for old commitment', async () => { + mockReadContract + .mockResolvedValueOnce(mockTime) // commitment timestamp + .mockResolvedValueOnce(mockMaxAge) // max age + .mockResolvedValueOnce(mockTime + mockMaxAge + 1n) // current block timestamp (past max age) + + const { result } = renderHook(() => + useExistingCommitment({ + commitment: mockCommitment, + commitKey: mockCommitKey, + isLegacyCommit: false, + scopeKey: mockAddress, + }), + ) + + await waitFor(() => { + expect(result.current.data).toEqual({ + status: 'commitmentExpired', + timestamp: Number(mockTime), + }) + }) + }) + }) + + describe('Legacy Commitment', () => { + it('should handle legacy commitment check', async () => { + mockReadContract + .mockResolvedValueOnce(mockTime) // commitment timestamp + .mockResolvedValueOnce(mockMaxAge) // max age + .mockResolvedValueOnce(mockTime + 30n) // current block timestamp + + mockGetBlockMetadataByTimestamp.mockResolvedValueOnce({ + ok: false, + }) + + const { result } = renderHook(() => + useExistingCommitment({ + commitment: mockCommitment, + commitKey: mockCommitKey, + isLegacyCommit: true, + scopeKey: mockAddress, + }), + ) + + await waitFor(() => { + expect(result.current.data).toEqual({ + status: 'commitmentExists', + timestamp: Number(mockTime), + }) + }) + + // Verify it used legacy controller address + expect(mockReadContract).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + address: '0xlegacycontroller', + }), + ) + }) + }) + + describe('Wrapped Commitment', () => { + it('should verify wrapped commitment functionality', async () => { + mockReadContract + .mockResolvedValueOnce(mockTime) // commitment timestamp + .mockResolvedValueOnce(mockMaxAge) // max age + .mockResolvedValueOnce(mockTime + 30n) // current block timestamp (30s after commitment) + + mockGetBlockMetadataByTimestamp.mockResolvedValueOnce({ + ok: false, + }) + + const { result } = renderHook(() => + useExistingCommitment({ + commitment: mockCommitment, + commitKey: mockCommitKey, + isLegacyCommit: false, + scopeKey: mockAddress, + isWrappedCommitment: true, + }), + ) + + await waitFor(() => { + expect(result.current.data).toEqual({ + status: 'commitmentExists', + timestamp: Number(mockTime), + }) + }) + + // Verify it used the correct contract address + expect(mockReadContract).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + address: '0xcontroller', + }), + ) + + // Verify it called the correct contract functions + expect(mockReadContract).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + functionName: 'commitments', + args: [mockCommitment], + }), + ) + + expect(mockReadContract).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + functionName: 'maxCommitmentAge', + }), + ) + + expect(mockReadContract).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + functionName: 'getCurrentBlockTimestamp', + }), + ) + }) + }) + + describe('Error Handling', () => { + it('should handle contract read errors', async () => { + mockReadContract.mockRejectedValueOnce(new Error('Contract error')) + + const { result } = renderHook(() => + useExistingCommitment({ + commitment: mockCommitment, + commitKey: mockCommitKey, + isLegacyCommit: false, + scopeKey: mockAddress, + }), + ) + + await waitFor(() => { + expect(result.current.error).toBeTruthy() + }) + }) + }) +}) diff --git a/src/transaction-flow/transaction/commitName.ts b/src/transaction-flow/transaction/commitName.ts index b3cb4167a..0b568b4e4 100644 --- a/src/transaction-flow/transaction/commitName.ts +++ b/src/transaction-flow/transaction/commitName.ts @@ -1,9 +1,11 @@ import type { TFunction } from 'react-i18next' import { RegistrationParameters } from '@ensdomains/ensjs/utils' -import { commitName } from '@ensdomains/ensjs/wallet' +import { commitName, legacyCommitName } from '@ensdomains/ensjs/wallet' import { Transaction, TransactionDisplayItem, TransactionFunctionParameters } from '@app/types' +import { isLegacyRegistration } from '@app/utils/registration/isLegacyRegistration' +import { makeLegacyRegistrationParams } from '@app/utils/registration/makeLegacyRegistrationParams' type Data = RegistrationParameters & { name: string } @@ -27,6 +29,8 @@ const displayItems = ( ] const transaction = async ({ connectorClient, data }: TransactionFunctionParameters) => { + if (isLegacyRegistration(data)) + return legacyCommitName.makeFunctionData(connectorClient, makeLegacyRegistrationParams(data)) return commitName.makeFunctionData(connectorClient, data) } diff --git a/src/transaction-flow/transaction/registerName.test.ts b/src/transaction-flow/transaction/registerName.test.ts index d0e8ed825..e6ad2968f 100644 --- a/src/transaction-flow/transaction/registerName.test.ts +++ b/src/transaction-flow/transaction/registerName.test.ts @@ -3,7 +3,7 @@ import { mockFunction } from '@app/test-utils' import { expect, it, vi } from 'vitest' import { getPrice } from '@ensdomains/ensjs/public' -import { registerName } from '@ensdomains/ensjs/wallet' +import { registerName, legacyRegisterName } from '@ensdomains/ensjs/wallet' import registerNameFlowTransaction from './registerName' @@ -12,9 +12,11 @@ vi.mock('@ensdomains/ensjs/wallet') const mockGetPrice = mockFunction(getPrice) const mockRegisterName = mockFunction(registerName.makeFunctionData) +const mockLegacyRegisterName = mockFunction(legacyRegisterName.makeFunctionData) mockGetPrice.mockImplementation(async () => ({ base: 100n, premium: 0n })) mockRegisterName.mockImplementation((...args: any[]) => args as any) +mockLegacyRegisterName.mockImplementation((...args: any[]) => args as any) it('adds a 2% value buffer to the transaction from the real price', async () => { const result = (await registerNameFlowTransaction.transaction({ diff --git a/src/transaction-flow/transaction/registerName.ts b/src/transaction-flow/transaction/registerName.ts index 3a1d95dfb..a6bcfafc9 100644 --- a/src/transaction-flow/transaction/registerName.ts +++ b/src/transaction-flow/transaction/registerName.ts @@ -2,11 +2,14 @@ import type { TFunction } from 'react-i18next' import { getPrice } from '@ensdomains/ensjs/public' import { RegistrationParameters } from '@ensdomains/ensjs/utils' -import { registerName } from '@ensdomains/ensjs/wallet' +import { legacyRegisterName, registerName } from '@ensdomains/ensjs/wallet' import { Transaction, TransactionDisplayItem, TransactionFunctionParameters } from '@app/types' +import { isLegacyRegistration } from '@app/utils/registration/isLegacyRegistration' import { calculateValueWithBuffer, formatDurationOfDates } from '@app/utils/utils' +import { makeLegacyRegistrationParams } from '../../utils/registration/makeLegacyRegistrationParams' + type Data = RegistrationParameters const now = Math.floor(Date.now()) const displayItems = ( @@ -41,6 +44,11 @@ const transaction = async ({ const value = price.base + price.premium const valueWithBuffer = calculateValueWithBuffer(value) + if (isLegacyRegistration(data)) + return legacyRegisterName.makeFunctionData(connectorClient, { + ...makeLegacyRegistrationParams(data), + value: valueWithBuffer, + }) return registerName.makeFunctionData(connectorClient, { ...data, value: valueWithBuffer, diff --git a/src/utils/chains/makeLocalhostChainWithEns.ts b/src/utils/chains/makeLocalhostChainWithEns.ts index 295e9c1e8..d1836de60 100644 --- a/src/utils/chains/makeLocalhostChainWithEns.ts +++ b/src/utils/chains/makeLocalhostChainWithEns.ts @@ -43,6 +43,12 @@ export const makeLocalhostChainWithEns = ( ensDnssecImpl: { address: deploymentAddresses_.DNSSECImpl, }, + legacyEthRegistrarController: { + address: deploymentAddresses_.LegacyETHRegistrarController, + }, + legacyPublicResolver: { + address: deploymentAddresses_.LegacyPublicResolver, + }, }, subgraphs: { ens: { diff --git a/src/utils/coin.ts b/src/utils/coin.ts index 74bf3d1ca..a77145b50 100644 --- a/src/utils/coin.ts +++ b/src/utils/coin.ts @@ -1,5 +1,8 @@ import { getAddress } from 'viem' +export const isEthCoin = (coin: string | number): boolean => + (typeof coin === 'string' && coin.toLowerCase() === 'eth') || coin === 60 + export const normalizeCoinAddress = ({ coin, address, @@ -8,7 +11,7 @@ export const normalizeCoinAddress = ({ address?: string | null }): string => { if (!address) return '' - if (coin === 'eth' || coin === 'ETH' || coin === 60) { + if (isEthCoin(coin)) { try { return getAddress(address) } catch { diff --git a/src/utils/registration/isLegacyRegistration.test.ts b/src/utils/registration/isLegacyRegistration.test.ts new file mode 100644 index 000000000..d6e1b11d1 --- /dev/null +++ b/src/utils/registration/isLegacyRegistration.test.ts @@ -0,0 +1,201 @@ +import { describe, expect, it } from 'vitest' + +import { RegistrationParameters } from '@ensdomains/ensjs/utils' + +import { isLegacyRegistration } from './isLegacyRegistration' + +describe('isLegacyRegistration', () => { + it('should return true when there are no records, fuses, or reverse record', () => { + const params = { + name: 'test', + owner: '0x123', + secret: '0x123', + duration: 100, + reverseRecord: false, + } as RegistrationParameters + expect(isLegacyRegistration(params)).toBe(true) + }) + + it('should return true when there are no records, fuses, or reverse record', () => { + const params = { + name: 'test', + owner: '0x123', + secret: '0x123', + duration: 100, + fuses: { + named: [], + unnamed: [], + }, + records: { + coins: [{ coin: 'eth', value: '0x123' }], + texts: [], + contentHash: '', + }, + reverseRecord: false, + } as RegistrationParameters + expect(isLegacyRegistration(params)).toBe(true) + }) + + it('should return false when there are records', () => { + const params = { + name: 'test', + owner: '0x123', + secret: '0x123', + duration: 100, + fuses: { + named: [], + unnamed: [], + }, + records: { + coins: [{ coin: 'eth', value: '0x123' }], + texts: [], + contentHash: '', + }, + reverseRecord: false, + } as RegistrationParameters + expect(isLegacyRegistration(params)).toBe(true) + }) + + it('should return false when there are records', () => { + const params = { + name: 'test', + owner: '0x123', + secret: '0x123', + duration: 100, + fuses: { + named: [], + unnamed: [], + }, + records: { + coins: [{ coin: 60, value: '0x123' }], + texts: [], + contentHash: '', + }, + reverseRecord: false, + } as RegistrationParameters + expect(isLegacyRegistration(params)).toBe(true) + }) + + it('should return false when there are records', () => { + const params = { + name: 'test', + owner: '0x123', + secret: '0x123', + duration: 100, + fuses: { + named: [], + unnamed: [], + }, + records: { + coins: [{ coin: 'ETH', value: '0x123' }], + texts: [], + contentHash: '', + }, + reverseRecord: false, + } as RegistrationParameters + expect(isLegacyRegistration(params)).toBe(true) + }) + + it('should return false when there are records', () => { + const params = { + name: 'test', + owner: '0x123', + secret: '0x123', + duration: 100, + fuses: { + named: [], + unnamed: [], + }, + records: { + coins: [ + { coin: 'eth', value: '0x123' }, + { coin: 'btc', value: '0x123' }, + ], + texts: [], + contentHash: '', + }, + reverseRecord: false, + } as RegistrationParameters + expect(isLegacyRegistration(params)).toBe(false) + }) + + it('should return false when there are records', () => { + const params = { + name: 'test', + owner: '0x123', + secret: '0x123', + duration: 100, + fuses: { + named: [], + unnamed: [], + }, + records: { + coins: [{ coin: 'ETH', value: '0x123' }], + texts: [], + contentHash: '', + }, + reverseRecord: false, + } as RegistrationParameters + expect(isLegacyRegistration(params)).toBe(true) + }) + + it('should return false when there are records', () => { + const params = { + name: 'test', + owner: '0x123', + secret: '0x123', + duration: 100, + fuses: { + named: [], + unnamed: [], + }, + records: { + coins: [{ coin: 'ETH', value: '0x123' }], + texts: [{ key: 'test', value: 'test' }], + contentHash: '', + }, + reverseRecord: false, + } as RegistrationParameters + expect(isLegacyRegistration(params)).toBe(false) + }) + + it('should return false when there are fuses', () => { + const params = { + name: 'test', + owner: '0x123', + secret: '0x123', + duration: 100, + fuses: { + named: ['CANNOT_APPROVE'], + unnamed: [], + }, + records: { + coins: [{ coin: 'eth', value: '0x123' }], + texts: [], + contentHash: '0xcontenthash', + }, + reverseRecord: false, + } as RegistrationParameters + expect(isLegacyRegistration(params)).toBe(false) + }) + + it('should return false when there is a reverse record', () => { + const params = { + name: 'test', + owner: '0x123', + secret: '0x123', + duration: 100, + fuses: { + named: [], + unnamed: [], + }, + records: { + coins: [{ coin: 'eth', value: '0x123' }], + texts: [], + contentHash: '', + }, + reverseRecord: true, + } as RegistrationParameters + expect(isLegacyRegistration(params)).toBe(false) + }) +}) diff --git a/src/utils/registration/isLegacyRegistration.ts b/src/utils/registration/isLegacyRegistration.ts new file mode 100644 index 000000000..8e02a0d7d --- /dev/null +++ b/src/utils/registration/isLegacyRegistration.ts @@ -0,0 +1,24 @@ +import { RegistrationParameters } from '@ensdomains/ensjs/utils' + +const hasFuses = ({ fuses }: RegistrationParameters) => { + const hasNamedFuses = fuses?.named && fuses.named.length > 0 + const hasUnnameFuses = fuses?.unnamed && fuses.unnamed.length > 0 + return hasNamedFuses || hasUnnameFuses +} + +const hasRecords = ({ records }: RegistrationParameters) => { + const hasAddressRecords = + records?.coins && + records.coins?.filter(({ coin }) => { + const cond1 = typeof coin === 'string' && coin.toLowerCase() !== 'eth' + const cond2 = typeof coin === 'number' && coin !== 60 + return cond1 || cond2 + }).length > 0 + const hasTextRecord = !!records?.texts && records.texts.length > 0 + const hasContentHash = !!records?.contentHash + return hasAddressRecords || hasTextRecord || hasContentHash +} + +export const isLegacyRegistration = (params: RegistrationParameters) => { + return !hasRecords(params) && !hasFuses(params) && !params.reverseRecord +} diff --git a/src/utils/registration/makeLegacyRegistrationParams.test.ts b/src/utils/registration/makeLegacyRegistrationParams.test.ts new file mode 100644 index 000000000..9f65dffd1 --- /dev/null +++ b/src/utils/registration/makeLegacyRegistrationParams.test.ts @@ -0,0 +1,47 @@ +import { describe, expect, expectTypeOf, it } from 'vitest' + +import { makeLegacyRegistrationParams } from './makeLegacyRegistrationParams' +import { RegistrationParameters } from '@ensdomains/ensjs/utils' + +describe('makeLegacyRegistrationParams', () => { + it('should return owner as address if no eth record exists', () => { + const params: RegistrationParameters = { + name: 'test', + owner: '0xowner', + duration: 100, + secret: '0xsecret', + resolverAddress: '0xresolverAddress', + } + + expect(makeLegacyRegistrationParams(params)).toEqual({ + name: 'test', + owner: '0xowner', + duration: 100, + secret: '0xsecret', + resolverAddress: '0xresolverAddress', + address: '0xowner', + }) + }) + + it('should return address from eth record if it exists', () => { + const params: RegistrationParameters = { + name: 'test', + owner: '0xowner', + duration: 100, + secret: '0xsecret', + resolverAddress: '0xresolverAddress', + records: { + coins: [{ coin: 'eth', value: '0xother' }], + } + } + + expect(makeLegacyRegistrationParams(params)).toEqual({ + name: 'test', + owner: '0xowner', + duration: 100, + secret: '0xsecret', + resolverAddress: '0xresolverAddress', + address: '0xother', + }) + }) +}) diff --git a/src/utils/registration/makeLegacyRegistrationParams.ts b/src/utils/registration/makeLegacyRegistrationParams.ts new file mode 100644 index 000000000..6b1231ee7 --- /dev/null +++ b/src/utils/registration/makeLegacyRegistrationParams.ts @@ -0,0 +1,29 @@ +import { Address } from 'viem' + +import { + LegacyRegistrationWithConfigParameters, + RegistrationParameters, +} from '@ensdomains/ensjs/utils' + +import { isEthCoin } from '../coin' +import { emptyAddress } from '../constants' + +export const makeLegacyRegistrationParams = ({ + name, + owner, + records, + duration, + secret, + resolverAddress = emptyAddress, +}: RegistrationParameters): LegacyRegistrationWithConfigParameters => { + const address = (records?.coins?.find(({ coin }) => isEthCoin(coin))?.value as Address) || owner + + return { + name, + owner, + duration, + secret, + resolverAddress, + address, + } as LegacyRegistrationWithConfigParameters +}