diff --git a/package.json b/package.json index 1673df2074..212470ae4a 100644 --- a/package.json +++ b/package.json @@ -28,17 +28,17 @@ "@typescript-eslint/eslint-plugin": "^5.43.0", "@typescript-eslint/parser": "^5.43.0", "@typescript-eslint/utils": "^8.22.0", - "concurrently": "^8.2.2", + "concurrently": "^9.1.2", "dotenv": "^16.3.2", "eslint": "^8.55.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-jest": "^28.6.0", "eslint-plugin-prettier": "^5.2.1", - "ethers": "^6.12.1", + "ethers": "^6.13.5", "husky": "^9.1.6", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", - "lint-staged": "^15.3.0", + "lint-staged": "^15.4.3", "prettier": "^3.4.2", "ts-jest": "^29.2.5", "ts-node": "^10.9.2", diff --git a/packages/apps/fortune/exchange-oracle/client/package.json b/packages/apps/fortune/exchange-oracle/client/package.json index 094b9322bc..30f1b25d4b 100644 --- a/packages/apps/fortune/exchange-oracle/client/package.json +++ b/packages/apps/fortune/exchange-oracle/client/package.json @@ -32,7 +32,7 @@ "@tanstack/react-query": "^5.60.5", "@tanstack/react-query-persist-client": "^5.51.11", "axios": "^1.7.2", - "ethers": "^6.13.1", + "ethers": "^6.13.5", "react": "^18.3.1", "react-dom": "^18.3.1", "react-router-dom": "^6.24.1", diff --git a/packages/apps/human-app/frontend/package.json b/packages/apps/human-app/frontend/package.json index 5a0e437ffb..f132098727 100644 --- a/packages/apps/human-app/frontend/package.json +++ b/packages/apps/human-app/frontend/package.json @@ -29,7 +29,7 @@ "@synaps-io/verify-sdk": "^4.0.45", "@tanstack/react-query": "^5.61.0", "date-fns": "^4.1.0", - "ethers": "^6.12.0", + "ethers": "^6.13.5", "i18next": "^23.8.2", "jwt-decode": "^4.0.0", "lodash": "^4.17.21", @@ -71,7 +71,7 @@ "eslint-plugin-react-refresh": "^0.4.11", "husky": "^9.1.6", "jsdom": "^25.0.1", - "lint-staged": "^15.3.0", + "lint-staged": "^15.4.3", "prettier": "^3.4.2", "typescript": "^5.6.3", "vite": "^5.4.7", diff --git a/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/components/index.ts b/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/components/index.ts new file mode 100644 index 0000000000..d36cf6b6e7 --- /dev/null +++ b/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/components/index.ts @@ -0,0 +1,3 @@ +export * from './user-stats-accordion'; +export * from './user-stats-details'; +export * from './user-stats-drawer'; diff --git a/packages/apps/human-app/frontend/src/modules/worker/components/hcaptcha-labeling/user-stats-accordion.tsx b/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/components/user-stats-accordion.tsx similarity index 92% rename from packages/apps/human-app/frontend/src/modules/worker/components/hcaptcha-labeling/user-stats-accordion.tsx rename to packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/components/user-stats-accordion.tsx index df817e5d34..f5b6e6c725 100644 --- a/packages/apps/human-app/frontend/src/modules/worker/components/hcaptcha-labeling/user-stats-accordion.tsx +++ b/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/components/user-stats-accordion.tsx @@ -6,14 +6,14 @@ import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import Grid from '@mui/material/Grid'; import { useEffect } from 'react'; import { t } from 'i18next'; -import { UserStatsDetails } from '@/modules/worker/components/hcaptcha-labeling/user-stats-details'; -import { useHCaptchaUserStats } from '@/modules/worker/services/hcaptcha-user-stats'; import { TopNotificationType, useNotification, } from '@/shared/hooks/use-notification'; import { getErrorMessageForError } from '@/shared/errors'; import { useColorMode } from '@/shared/contexts/color-mode'; +import { useHCaptchaUserStats } from '../hooks'; +import { UserStatsDetails } from './user-stats-details'; const accordionWidth = { width: '284px' }; diff --git a/packages/apps/human-app/frontend/src/modules/worker/components/hcaptcha-labeling/user-stats-details.tsx b/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/components/user-stats-details.tsx similarity index 97% rename from packages/apps/human-app/frontend/src/modules/worker/components/hcaptcha-labeling/user-stats-details.tsx rename to packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/components/user-stats-details.tsx index 205d7ede42..f4982699d6 100644 --- a/packages/apps/human-app/frontend/src/modules/worker/components/hcaptcha-labeling/user-stats-details.tsx +++ b/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/components/user-stats-details.tsx @@ -1,17 +1,17 @@ import { Divider, Grid, Typography } from '@mui/material'; import { t } from 'i18next'; import { RefreshIcon } from '@/shared/components/ui/icons'; -import type { HCaptchaUserStatsSuccess } from '@/modules/worker/services/hcaptcha-user-stats'; -import { useColorMode } from '@/shared/contexts/color-mode'; import { onlyDarkModeColor } from '@/shared/styles/dark-color-palette'; +import { useColorMode } from '@/shared/contexts/color-mode'; +import { type HCaptchaUserStatsSuccess } from '../hooks/use-hcaptcha-user-stats'; export function UserStatsDetails({ stats, refetch, -}: { +}: Readonly<{ stats: HCaptchaUserStatsSuccess; refetch: () => void; -}) { +}>) { const { colorPalette, isDarkMode } = useColorMode(); const statsColor = isDarkMode ? onlyDarkModeColor.additionalTextColor diff --git a/packages/apps/human-app/frontend/src/modules/worker/components/hcaptcha-labeling/user-stats-drawer.tsx b/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/components/user-stats-drawer.tsx similarity index 86% rename from packages/apps/human-app/frontend/src/modules/worker/components/hcaptcha-labeling/user-stats-drawer.tsx rename to packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/components/user-stats-drawer.tsx index bb9f815674..de0f0c4f19 100644 --- a/packages/apps/human-app/frontend/src/modules/worker/components/hcaptcha-labeling/user-stats-drawer.tsx +++ b/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/components/user-stats-drawer.tsx @@ -3,12 +3,11 @@ import Drawer from '@mui/material/Drawer'; import CssBaseline from '@mui/material/CssBaseline'; import { Grid, Typography } from '@mui/material'; import { t } from 'i18next'; -import { UserStatsDetails } from '@/modules/worker/components/hcaptcha-labeling/user-stats-details'; -import type { HCaptchaUserStatsSuccess } from '@/modules/worker/services/hcaptcha-user-stats'; -import { useHCaptchaUserStats } from '@/modules/worker/services/hcaptcha-user-stats'; import { Loader } from '@/shared/components/ui/loader'; import { Alert } from '@/shared/components/ui/alert'; import { getErrorMessageForError } from '@/shared/errors'; +import { type HCaptchaUserStatsSuccess, useHCaptchaUserStats } from '../hooks'; +import { UserStatsDetails } from './user-stats-details'; export interface UserStatsDrawerNavigationProps { isOpen: boolean; @@ -17,10 +16,10 @@ export interface UserStatsDrawerNavigationProps { function UserStatsDrawerContent({ stats, refetch, -}: { +}: Readonly<{ stats: HCaptchaUserStatsSuccess; refetch: () => void; -}) { +}>) { return ( <> @@ -31,7 +30,9 @@ function UserStatsDrawerContent({ ); } -export function UserStatsDrawer({ isOpen }: UserStatsDrawerNavigationProps) { +export function UserStatsDrawer({ + isOpen, +}: Readonly) { const { data: hcaptchaUserStats, error: hcaptchaUserStatsError, diff --git a/packages/apps/human-app/frontend/src/modules/worker/views/hcaptcha-labeling/enable-labeler.page.tsx b/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/enable-labeler.page.tsx similarity index 98% rename from packages/apps/human-app/frontend/src/modules/worker/views/hcaptcha-labeling/enable-labeler.page.tsx rename to packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/enable-labeler.page.tsx index f4c7e18a7e..3ddfdf07bd 100644 --- a/packages/apps/human-app/frontend/src/modules/worker/views/hcaptcha-labeling/enable-labeler.page.tsx +++ b/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/enable-labeler.page.tsx @@ -12,7 +12,7 @@ import { breakpoints } from '@/shared/styles/breakpoints'; import { useAuthenticatedUser } from '@/modules/auth/hooks/use-authenticated-user'; import { routerPaths } from '@/router/router-paths'; -export function EnableLabeler() { +export function EnableLabelerPage() { const isMobile = useIsMobile(); const { user } = useAuthenticatedUser(); const { mutate, error, isError, isPending } = diff --git a/packages/apps/human-app/frontend/src/modules/worker/views/hcaptcha-labeling/hcaptcha-labeling.page.tsx b/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/hcaptcha-labeling.page.tsx similarity index 97% rename from packages/apps/human-app/frontend/src/modules/worker/views/hcaptcha-labeling/hcaptcha-labeling.page.tsx rename to packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/hcaptcha-labeling.page.tsx index 495b7cbfda..e042ca0c2d 100644 --- a/packages/apps/human-app/frontend/src/modules/worker/views/hcaptcha-labeling/hcaptcha-labeling.page.tsx +++ b/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/hcaptcha-labeling.page.tsx @@ -8,13 +8,7 @@ import { useIsMobile } from '@/shared/hooks/use-is-mobile'; import { env } from '@/shared/env'; import { breakpoints } from '@/shared/styles/breakpoints'; import { Counter } from '@/shared/components/ui/counter'; -import { useHCaptchaUserStats } from '@/modules/worker/services/hcaptcha-user-stats'; -import { - PageCardError, - PageCardLoader, -} from '@/shared/components/ui/page-card'; import { getErrorMessageForError } from '@/shared/errors'; -import { useDailyHmtSpent } from '@/modules/worker/services/daily-hmt-spent'; import { getTomorrowDate } from '@/shared/helpers/date'; import { useSolveHCaptchaMutation } from '@/modules/worker/services/solve-hcaptcha'; import { useAuthenticatedUser } from '@/modules/auth/hooks/use-authenticated-user'; @@ -22,6 +16,11 @@ import { useHCaptchaLabelingNotifications } from '@/modules/worker/hooks/use-hca import { useColorMode } from '@/shared/contexts/color-mode'; import { onlyDarkModeColor } from '@/shared/styles/dark-color-palette'; import { routerPaths } from '@/router/router-paths'; +import { + PageCardLoader, + PageCardError, +} from '@/shared/components/ui/page-card'; +import { useHCaptchaUserStats, useDailyHmtSpent } from './hooks'; export function HcaptchaLabelingPage() { const { colorPalette, isDarkMode } = useColorMode(); diff --git a/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/hooks/index.ts b/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/hooks/index.ts new file mode 100644 index 0000000000..3c49984671 --- /dev/null +++ b/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/hooks/index.ts @@ -0,0 +1,2 @@ +export * from './use-daily-hmt-spent'; +export * from './use-hcaptcha-user-stats'; diff --git a/packages/apps/human-app/frontend/src/modules/worker/services/daily-hmt-spent.ts b/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/hooks/use-daily-hmt-spent.ts similarity index 64% rename from packages/apps/human-app/frontend/src/modules/worker/services/daily-hmt-spent.ts rename to packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/hooks/use-daily-hmt-spent.ts index 9e46875b7e..c3b748a676 100644 --- a/packages/apps/human-app/frontend/src/modules/worker/services/daily-hmt-spent.ts +++ b/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/hooks/use-daily-hmt-spent.ts @@ -1,15 +1,15 @@ import { z } from 'zod'; import { useQuery } from '@tanstack/react-query'; -import { apiPaths } from '@/api/api-paths'; import { apiClient } from '@/api/api-client'; +import { apiPaths } from '@/api/api-paths'; const dailyHmtSpentSchema = z.object({ spend: z.number(), }); -export type DailyHmtSpentSchemaSuccess = z.infer; +type DailyHmtSpentResponse = z.infer; -export async function getDailyHmtSpent() { +async function fetchDailyHmtSpent(): Promise { return apiClient(apiPaths.worker.dailyHmtSpend.path, { successSchema: dailyHmtSpentSchema, authenticated: true, @@ -18,8 +18,8 @@ export async function getDailyHmtSpent() { } export function useDailyHmtSpent() { - return useQuery({ - queryFn: getDailyHmtSpent, - queryKey: ['getDailyHmtSpent'], + return useQuery({ + queryKey: ['dailyHmtSpent'], + queryFn: fetchDailyHmtSpent, }); } diff --git a/packages/apps/human-app/frontend/src/modules/worker/services/hcaptcha-user-stats.ts b/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/hooks/use-hcaptcha-user-stats.ts similarity index 95% rename from packages/apps/human-app/frontend/src/modules/worker/services/hcaptcha-user-stats.ts rename to packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/hooks/use-hcaptcha-user-stats.ts index 095c64ad01..96b4ae996a 100644 --- a/packages/apps/human-app/frontend/src/modules/worker/services/hcaptcha-user-stats.ts +++ b/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/hooks/use-hcaptcha-user-stats.ts @@ -25,7 +25,7 @@ const hcaptchaUserStatsSchema = z.object({ export type HCaptchaUserStatsSuccess = z.infer; -export async function getHCaptchaUsersStats() { +async function getHCaptchaUsersStats() { return apiClient(apiPaths.worker.hCaptchaUserStats.path, { authenticated: true, successSchema: hcaptchaUserStatsSchema, diff --git a/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/index.ts b/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/index.ts new file mode 100644 index 0000000000..af6d89244b --- /dev/null +++ b/packages/apps/human-app/frontend/src/modules/worker/hcaptcha-labeling/index.ts @@ -0,0 +1,4 @@ +export * from './enable-labeler.page'; +export * from './hcaptcha-labeling.page'; +export * from './components/user-stats-accordion'; +export * from './components/user-stats-drawer'; diff --git a/packages/apps/human-app/frontend/src/modules/worker/views/protected/protected.page.tsx b/packages/apps/human-app/frontend/src/modules/worker/views/protected/protected.page.tsx deleted file mode 100644 index 9156a566cf..0000000000 --- a/packages/apps/human-app/frontend/src/modules/worker/views/protected/protected.page.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import Box from '@mui/material/Box'; - -export function ProtectedPage() { - return ( - -
ProtectedPage
-
- ); -} diff --git a/packages/apps/human-app/frontend/src/router/router.tsx b/packages/apps/human-app/frontend/src/router/router.tsx index becd779158..8cd33fcf46 100644 --- a/packages/apps/human-app/frontend/src/router/router.tsx +++ b/packages/apps/human-app/frontend/src/router/router.tsx @@ -17,8 +17,8 @@ import { } from '@/shared/components/layout/drawer-menu-items/drawer-menu-items-worker'; import { operatorDrawerBottomMenuItems } from '@/shared/components/layout/drawer-menu-items/drawer-menu-items-operator'; import { browserAuthProvider } from '@/shared/contexts/browser-auth-provider'; -import { UserStatsDrawer } from '@/modules/worker/components/hcaptcha-labeling/user-stats-drawer'; import { useAuth } from '@/modules/auth/hooks/use-auth'; +import { UserStatsDrawer } from '@/modules/worker/hcaptcha-labeling'; import { routerPaths } from './router-paths'; export function Router() { diff --git a/packages/apps/human-app/frontend/src/router/routes.tsx b/packages/apps/human-app/frontend/src/router/routes.tsx index e14826d913..51353392bd 100644 --- a/packages/apps/human-app/frontend/src/router/routes.tsx +++ b/packages/apps/human-app/frontend/src/router/routes.tsx @@ -1,7 +1,5 @@ import type { RouteProps } from 'react-router-dom'; import { t } from 'i18next'; -import { ProtectedPage } from '@/modules/worker/views/protected/protected.page'; -import { SignInWorkerPage } from '@/modules/signin/worker'; import { routerPaths } from '@/router/router-paths'; import { SendResetLinkWorkerSuccessPage } from '@/modules/worker/views/send-reset-link/send-reset-link-success.page'; import { ResetPasswordWorkerPage } from '@/modules/worker/views/reset-password/reset-password.page'; @@ -9,9 +7,6 @@ import { SendResetLinkWorkerPage } from '@/modules/worker/views/send-reset-link/ import { ResetPasswordWorkerSuccessPage } from '@/modules/worker/views/reset-password/reset-password-success.page'; import { JobsDiscoveryPage } from '@/modules/worker/views/jobs-discovery/jobs-discovery.page'; import { JobsPage } from '@/modules/worker/views/jobs/jobs.page'; -import { EnableLabeler } from '@/modules/worker/views/hcaptcha-labeling/enable-labeler.page'; -import { HcaptchaLabelingPage } from '@/modules/worker/views/hcaptcha-labeling/hcaptcha-labeling.page'; -import { UserStatsAccordion } from '@/modules/worker/components/hcaptcha-labeling/user-stats-accordion'; import { env } from '@/shared/env'; import { RegistrationPage } from '@/modules/worker/views/registration/registration.page'; import { WorkerProfilePage } from '@/modules/worker/components/profile/profile.page'; @@ -31,7 +26,13 @@ import { ConnectWalletOperatorPage } from '@/modules/operator/views/sign-up/conn import { OperatorProfilePage } from '@/modules/operator/views/profile/profile.page'; import { Playground } from '@/modules/playground/views/playground.page'; import { HomePage } from '@/modules/homepage/views/home.page'; +import { + HcaptchaLabelingPage, + UserStatsAccordion, + EnableLabelerPage, +} from '@/modules/worker/hcaptcha-labeling'; import { SignUpWorkerPage } from '@/modules/signup/worker'; +import { SignInWorkerPage } from '@/modules/signin/worker'; export const unprotectedRoutes: RouteProps[] = [ { @@ -84,16 +85,6 @@ export const protectedRoutes: { routerProps: RouteProps; pageHeaderProps: PageHeaderProps; }[] = [ - { - routerProps: { - path: '/protected', - element: , - }, - pageHeaderProps: { - headerIcon: , - headerText: t('protectedPagesHeaders.profile'), - }, - }, { routerProps: { path: routerPaths.worker.jobsDiscovery, @@ -152,7 +143,7 @@ export const protectedRoutes: { { routerProps: { path: routerPaths.worker.enableLabeler, - element: , + element: , }, pageHeaderProps: { headerIcon: , diff --git a/packages/apps/human-app/server/package.json b/packages/apps/human-app/server/package.json index 61de43982e..b24c0329b1 100644 --- a/packages/apps/human-app/server/package.json +++ b/packages/apps/human-app/server/package.json @@ -38,7 +38,7 @@ "cache-manager-redis-yet": "^5.1.5", "class-transformer": "^0.5.1", "class-validator": "^0.14.1", - "ethers": "^6.12.1", + "ethers": "^6.13.5", "joi": "^17.13.3", "jsonwebtoken": "^9.0.2", "jwt-decode": "^4.0.0", diff --git a/packages/apps/job-launcher/client/package.json b/packages/apps/job-launcher/client/package.json index 3a4b23a3a1..8826196ad9 100644 --- a/packages/apps/job-launcher/client/package.json +++ b/packages/apps/job-launcher/client/package.json @@ -20,7 +20,7 @@ "axios": "^1.1.3", "copy-to-clipboard": "^3.3.3", "dayjs": "^1.11.12", - "ethers": "^6.12.1", + "ethers": "^6.13.5", "file-saver": "^2.0.5", "formik": "^2.4.2", "jwt-decode": "^4.0.0", @@ -36,7 +36,7 @@ "wagmi": "^2.14.6", "web-vitals": "^4.2.2", "xml2js": "^0.6.2", - "yup": "^1.2.0" + "yup": "^1.6.1" }, "scripts": { "lint": "eslint \"**/*.{ts,tsx}\"", diff --git a/packages/apps/reputation-oracle/server/.env.example b/packages/apps/reputation-oracle/server/.env.example index c66ed4527d..f2b20e3467 100644 --- a/packages/apps/reputation-oracle/server/.env.example +++ b/packages/apps/reputation-oracle/server/.env.example @@ -44,10 +44,10 @@ S3_SECRET_KEY=devdevdev S3_BUCKET=reputation S3_USE_SSL=false -# Sendgrid -SENDGRID_API_KEY=SG.testkey -SENDGRID_FROM_EMAIL=test@example.com -SENDGRID_FROM_NAME="Reputation oracle" +# Email +SENDGRID_API_KEY= +EMAIL_FROM=test@example.com +EMAIL_FROM_NAME="Reputation oracle" # Web3 WEB3_ENV=testnet diff --git a/packages/apps/reputation-oracle/server/package.json b/packages/apps/reputation-oracle/server/package.json index 52050b2312..85c39c17e1 100644 --- a/packages/apps/reputation-oracle/server/package.json +++ b/packages/apps/reputation-oracle/server/package.json @@ -52,7 +52,7 @@ "class-transformer": "^0.5.1", "class-validator": "^0.14.1", "dotenv": "^16.3.2", - "ethers": "^6.13.1", + "ethers": "^6.13.5", "helmet": "^7.1.0", "joi": "^17.13.3", "json-stable-stringify": "^1.1.1", @@ -69,6 +69,7 @@ "zxcvbn": "^4.4.2" }, "devDependencies": { + "@faker-js/faker": "^9.4.0", "@golevelup/ts-jest": "^0.6.1", "@nestjs/cli": "^10.3.2", "@nestjs/schematics": "^10.1.3", diff --git a/packages/apps/reputation-oracle/server/src/app.module.ts b/packages/apps/reputation-oracle/server/src/app.module.ts index d9e3963b3f..5b841bf230 100644 --- a/packages/apps/reputation-oracle/server/src/app.module.ts +++ b/packages/apps/reputation-oracle/server/src/app.module.ts @@ -23,6 +23,7 @@ import { QualificationModule } from './modules/qualification/qualification.modul import { EscrowCompletionModule } from './modules/escrow-completion/escrow-completion.module'; import { WebhookIncomingModule } from './modules/webhook/webhook-incoming.module'; import { WebhookOutgoingModule } from './modules/webhook/webhook-outgoing.module'; +import { EmailModule } from './modules/email/module'; @Module({ providers: [ @@ -68,6 +69,7 @@ import { WebhookOutgoingModule } from './modules/webhook/webhook-outgoing.module HCaptchaModule, QualificationModule, EscrowCompletionModule, + EmailModule, ], controllers: [AppController], }) diff --git a/packages/apps/reputation-oracle/server/src/common/config/config.module.ts b/packages/apps/reputation-oracle/server/src/common/config/config.module.ts index 9d1e491335..dcbfed9515 100644 --- a/packages/apps/reputation-oracle/server/src/common/config/config.module.ts +++ b/packages/apps/reputation-oracle/server/src/common/config/config.module.ts @@ -6,7 +6,7 @@ import { ServerConfigService } from './server-config.service'; import { DatabaseConfigService } from './database-config.service'; import { PGPConfigService } from './pgp-config.service'; import { S3ConfigService } from './s3-config.service'; -import { SendgridConfigService } from './sendgrid-config.service'; +import { EmailConfigService } from './email-config.service'; import { Web3ConfigService } from './web3-config.service'; import { ReputationConfigService } from './reputation-config.service'; import { KycConfigService } from './kyc-config.service'; @@ -23,7 +23,7 @@ import { HCaptchaConfigService } from './hcaptcha-config.service'; Web3ConfigService, S3ConfigService, ReputationConfigService, - SendgridConfigService, + EmailConfigService, KycConfigService, PGPConfigService, NetworkConfigService, @@ -37,7 +37,7 @@ import { HCaptchaConfigService } from './hcaptcha-config.service'; Web3ConfigService, S3ConfigService, ReputationConfigService, - SendgridConfigService, + EmailConfigService, KycConfigService, PGPConfigService, NetworkConfigService, diff --git a/packages/apps/reputation-oracle/server/src/common/config/email-config.service.ts b/packages/apps/reputation-oracle/server/src/common/config/email-config.service.ts new file mode 100644 index 0000000000..44c04c84ac --- /dev/null +++ b/packages/apps/reputation-oracle/server/src/common/config/email-config.service.ts @@ -0,0 +1,35 @@ +import { Injectable } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; + +@Injectable() +export class EmailConfigService { + constructor(private configService: ConfigService) {} + + /** + * The API key used for authenticating requests to the email provider API. + * Should be overridden in stagin/production environments. + * Default: 'disabled' + */ + get apiKey(): string { + return this.configService.get('SENDGRID_API_KEY', 'disabled'); + } + + /** + * The email address that will be used as the sender's address in emails. + * Default: 'app@humanprotocol.org' + */ + get from(): string { + return this.configService.get( + 'EMAIL_FROM', + 'app@humanprotocol.org', + ); + } + + /** + * The name that will be used as the sender's name in emails. + * Default: 'Human Protocol' + */ + get fromName(): string { + return this.configService.get('EMAIL_FROM_NAME', 'Human Protocol'); + } +} diff --git a/packages/apps/reputation-oracle/server/src/common/config/env-schema.ts b/packages/apps/reputation-oracle/server/src/common/config/env-schema.ts index 98609817c7..11142ebb4d 100644 --- a/packages/apps/reputation-oracle/server/src/common/config/env-schema.ts +++ b/packages/apps/reputation-oracle/server/src/common/config/env-schema.ts @@ -54,10 +54,10 @@ export const envValidator = Joi.object({ S3_SECRET_KEY: Joi.string().required(), S3_BUCKET: Joi.string(), S3_USE_SSL: Joi.string(), - // SendGrid - SENDGRID_API_KEY: Joi.string().required(), - SENDGRID_FROM_EMAIL: Joi.string(), - SENDGRID_FROM_NAME: Joi.string(), + // Email + SENDGRID_API_KEY: Joi.string(), + EMAIL_FROM: Joi.string(), + EMAIL_FROM_NAME: Joi.string(), // Reputation Level REPUTATION_LEVEL_LOW: Joi.number(), REPUTATION_LEVEL_HIGH: Joi.number(), diff --git a/packages/apps/reputation-oracle/server/src/common/config/sendgrid-config.service.ts b/packages/apps/reputation-oracle/server/src/common/config/sendgrid-config.service.ts deleted file mode 100644 index 3744e6db73..0000000000 --- a/packages/apps/reputation-oracle/server/src/common/config/sendgrid-config.service.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { ConfigService } from '@nestjs/config'; -import { SENDGRID_API_KEY_DISABLED } from '../constants'; - -@Injectable() -export class SendgridConfigService { - constructor(private configService: ConfigService) {} - - /** - * The API key used for authenticating requests to the SendGrid API. - * Default: 'sendgrid-disabled' - */ - get apiKey(): string { - return this.configService.get( - 'SENDGRID_API_KEY', - SENDGRID_API_KEY_DISABLED, - ); - } - - /** - * The email address that will be used as the sender's address in emails sent via SendGrid. - * Default: 'app@humanprotocol.org' - */ - get fromEmail(): string { - return this.configService.get( - 'SENDGRID_FROM_EMAIL', - 'app@humanprotocol.org', - ); - } - - /** - * The name that will be used as the sender's name in emails sent via SendGrid. - * Default: 'Human Protocol' - */ - get fromName(): string { - return this.configService.get( - 'SENDGRID_FROM_NAME', - 'Human Protocol', - ); - } -} diff --git a/packages/apps/reputation-oracle/server/src/common/constants/index.ts b/packages/apps/reputation-oracle/server/src/common/constants/index.ts index 064cd6ae44..8b71b9b341 100644 --- a/packages/apps/reputation-oracle/server/src/common/constants/index.ts +++ b/packages/apps/reputation-oracle/server/src/common/constants/index.ts @@ -1,20 +1,16 @@ import { JobRequestType } from '../enums'; -export const SERVICE_NAME = 'App'; +export enum Environment { + DEVELOPMENT = 'development', + TEST = 'test', + STAGING = 'staging', + PRODUCTION = 'production', +} export const NS = 'hmt'; export const RETRIES_COUNT_THRESHOLD = 3; export const INITIAL_REPUTATION = 0; export const JWT_PREFIX = 'bearer '; export const JWT_STRATEGY_NAME = 'jwt-http'; -export const SENDGRID_API_KEY_REGEX = - /^SG\.[A-Za-z0-9-_]{22}\.[A-Za-z0-9-_]{43}$/; -export const SENDGRID_API_KEY_DISABLED = 'sendgrid-disabled'; - -export const SENDGRID_TEMPLATES = { - signup: 'd-ca99cc7410aa4e6dab3e6042d5ecb9a3', - resetPassword: 'd-3ac74546352a4e1abdd1689947632c22', - passwordChanged: 'd-ca0ac7e6fff845829cd0167af09f25cf', -}; export const CVAT_RESULTS_ANNOTATIONS_FILENAME = 'resulting_annotations.zip'; export const CVAT_VALIDATION_META_FILENAME = 'validation_meta.json'; diff --git a/packages/apps/reputation-oracle/server/src/common/utils/environment.ts b/packages/apps/reputation-oracle/server/src/common/utils/environment.ts new file mode 100644 index 0000000000..f9ec4c4c59 --- /dev/null +++ b/packages/apps/reputation-oracle/server/src/common/utils/environment.ts @@ -0,0 +1,8 @@ +import { Environment } from '../constants'; + +export function isDevelopmentEnv(): boolean { + return ( + process.env.NODE_ENV === Environment.DEVELOPMENT || + process.env.NODE_ENV === Environment.TEST + ); +} diff --git a/packages/apps/reputation-oracle/server/src/logger/__mocks__/index.ts b/packages/apps/reputation-oracle/server/src/logger/__mocks__/index.ts new file mode 100644 index 0000000000..fffaf78cd1 --- /dev/null +++ b/packages/apps/reputation-oracle/server/src/logger/__mocks__/index.ts @@ -0,0 +1,11 @@ +import { Logger } from '../types'; + +const logger: Logger = { + child: jest.fn(() => logger), + info: jest.fn(), + debug: jest.fn(), + error: jest.fn(), + warn: jest.fn(), +}; + +export default logger; diff --git a/packages/apps/reputation-oracle/server/src/modules/auth/auth.module.ts b/packages/apps/reputation-oracle/server/src/modules/auth/auth.module.ts index 342c940824..82d222df16 100644 --- a/packages/apps/reputation-oracle/server/src/modules/auth/auth.module.ts +++ b/packages/apps/reputation-oracle/server/src/modules/auth/auth.module.ts @@ -6,11 +6,11 @@ import { JwtHttpStrategy } from './strategy'; import { AuthService } from './auth.service'; import { AuthJwtController } from './auth.controller'; import { TokenRepository } from './token.repository'; -import { SendGridModule } from '../sendgrid/sendgrid.module'; import { UserRepository } from '../user/user.repository'; import { Web3Module } from '../web3/web3.module'; import { AuthConfigService } from '../../common/config/auth-config.service'; import { HCaptchaModule } from '../../integrations/hcaptcha/hcaptcha.module'; +import { EmailModule } from '../email/module'; @Module({ imports: [ @@ -25,9 +25,9 @@ import { HCaptchaModule } from '../../integrations/hcaptcha/hcaptcha.module'; }, }), }), - SendGridModule, Web3Module, HCaptchaModule, + EmailModule, ], providers: [JwtHttpStrategy, AuthService, TokenRepository, UserRepository], controllers: [AuthJwtController], diff --git a/packages/apps/reputation-oracle/server/src/modules/auth/auth.service.spec.ts b/packages/apps/reputation-oracle/server/src/modules/auth/auth.service.spec.ts index 68a44309f6..ec02abe317 100644 --- a/packages/apps/reputation-oracle/server/src/modules/auth/auth.service.spec.ts +++ b/packages/apps/reputation-oracle/server/src/modules/auth/auth.service.spec.ts @@ -9,6 +9,7 @@ import { HttpService } from '@nestjs/axios'; import { ConfigService } from '@nestjs/config'; import { JwtService } from '@nestjs/jwt'; import { Test } from '@nestjs/testing'; +import { faker } from '@faker-js/faker'; import { v4 } from 'uuid'; import { MOCK_ACCESS_TOKEN, @@ -27,7 +28,6 @@ import { HCaptchaConfigService } from '../../common/config/hcaptcha-config.servi import { NetworkConfigService } from '../../common/config/network-config.service'; import { ServerConfigService } from '../../common/config/server-config.service'; import { Web3ConfigService } from '../../common/config/web3-config.service'; -import { SENDGRID_TEMPLATES, SERVICE_NAME } from '../../common/constants'; import { JobRequestType } from '../../common/enums'; import { Role, UserStatus } from '../../common/enums/user'; import { SignatureType } from '../../common/enums/web3'; @@ -37,7 +37,6 @@ import { signMessage, } from '../../common/utils/signature'; import { HCaptchaService } from '../../integrations/hcaptcha/hcaptcha.service'; -import { SendGridService } from '../sendgrid/sendgrid.service'; import { SiteKeyRepository } from '../user/site-key.repository'; import { PrepareSignatureDto } from '../user/user.dto'; import { UserEntity } from '../user/user.entity'; @@ -56,6 +55,8 @@ import { import { AuthService } from './auth.service'; import { TokenEntity, TokenType } from './token.entity'; import { TokenRepository } from './token.repository'; +import { EmailService } from '../email/email.service'; +import { EmailAction } from '../email/constants'; jest.mock('@human-protocol/sdk', () => ({ ...jest.requireActual('@human-protocol/sdk'), @@ -86,7 +87,7 @@ describe('AuthService', () => { let userService: UserService; let userRepository: UserRepository; let jwtService: JwtService; - let sendGridService: SendGridService; + let emailService: EmailService; let web3Service: Web3Service; let authConfigService: AuthConfigService; let hcaptchaService: HCaptchaService; @@ -131,7 +132,7 @@ describe('AuthService', () => { useValue: createMock(), }, { provide: HttpService, useValue: createMock() }, - { provide: SendGridService, useValue: createMock() }, + { provide: EmailService, useValue: createMock() }, { provide: Web3Service, useValue: { @@ -148,7 +149,7 @@ describe('AuthService', () => { userService = moduleRef.get(UserService); userRepository = moduleRef.get(UserRepository); jwtService = moduleRef.get(JwtService); - sendGridService = moduleRef.get(SendGridService); + emailService = moduleRef.get(EmailService); web3Service = moduleRef.get(Web3Service); authConfigService = moduleRef.get(AuthConfigService); hcaptchaService = moduleRef.get(HCaptchaService); @@ -253,12 +254,12 @@ describe('AuthService', () => { expect(result).toBe(userEntity); }); - it("should call sendGridService sendEmail if user's email is valid", async () => { - sendGridService.sendEmail = jest.fn(); + it("should call emailService sendEmail if user's email is valid", async () => { + emailService.sendEmail = jest.fn(); await authService.signup(userCreateDto); - expect(sendGridService.sendEmail).toHaveBeenCalled(); + expect(emailService.sendEmail).toHaveBeenCalled(); }); it('should fail if the user already exists', async () => { @@ -364,7 +365,7 @@ describe('AuthService', () => { }), ).resolves.toBeUndefined(); - expect(sendGridService.sendEmail).not.toHaveBeenCalledWith(); + expect(emailService.sendEmail).not.toHaveBeenCalledWith(); }); it('should remove existing token if it exists', async () => { @@ -378,51 +379,37 @@ describe('AuthService', () => { }); it('should create a new token and send email', async () => { - sendGridService.sendEmail = jest.fn(); - const email = 'user@example.com'; + emailService.sendEmail = jest.fn(); + const email = faker.internet.email(); await authService.forgotPassword({ email, hCaptchaToken: 'token' }); - expect(sendGridService.sendEmail).toHaveBeenCalledWith( - expect.objectContaining({ - personalizations: [ - { - dynamicTemplateData: { - service_name: SERVICE_NAME, - url: expect.stringContaining( - `${MOCK_FE_URL}/reset-password?token=`, - ), - }, - to: email, - }, - ], - templateId: SENDGRID_TEMPLATES.resetPassword, - }), + expect(emailService.sendEmail).toHaveBeenCalledWith( + email, + EmailAction.RESET_PASSWORD, + { + url: expect.stringContaining( + `${MOCK_FE_URL}/reset-password?token=`, + ), + }, ); }); it('should create a new token and send email if user is not active', async () => { - sendGridService.sendEmail = jest.fn(); + emailService.sendEmail = jest.fn(); userEntity.status = UserStatus.PENDING; - const email = 'user@example.com'; + const email = faker.internet.email(); await authService.forgotPassword({ email, hCaptchaToken: 'token' }); - expect(sendGridService.sendEmail).toHaveBeenCalledWith( - expect.objectContaining({ - personalizations: [ - { - dynamicTemplateData: { - service_name: SERVICE_NAME, - url: expect.stringContaining( - `${MOCK_FE_URL}/reset-password?token=`, - ), - }, - to: email, - }, - ], - templateId: SENDGRID_TEMPLATES.resetPassword, - }), + expect(emailService.sendEmail).toHaveBeenCalledWith( + email, + EmailAction.RESET_PASSWORD, + { + url: expect.stringContaining( + `${MOCK_FE_URL}/reset-password?token=`, + ), + }, ); }); }); @@ -443,7 +430,7 @@ describe('AuthService', () => { beforeEach(() => { findTokenMock = jest.spyOn(tokenRepository, 'findOneByUuidAndType'); - sendGridService.sendEmail = jest.fn(); + emailService.sendEmail = jest.fn(); }); afterEach(() => { @@ -485,7 +472,7 @@ describe('AuthService', () => { ); findTokenMock.mockResolvedValue(tokenEntity as TokenEntity); userService.updatePassword = jest.fn(); - sendGridService.sendEmail = jest.fn(); + emailService.sendEmail = jest.fn(); const updatePasswordMock = jest.spyOn(userService, 'updatePassword'); @@ -496,7 +483,7 @@ describe('AuthService', () => { }); expect(updatePasswordMock).toHaveBeenCalled(); - expect(sendGridService.sendEmail).toHaveBeenCalled(); + expect(emailService.sendEmail).toHaveBeenCalled(); expect(tokenRepository.deleteOne).toHaveBeenCalled(); }); }); @@ -585,7 +572,7 @@ describe('AuthService', () => { }), ).resolves.toBeUndefined(); - expect(sendGridService.sendEmail).not.toHaveBeenCalledWith(); + expect(emailService.sendEmail).not.toHaveBeenCalledWith(); }); it('should exit early w/o action if user is not pending', () => { @@ -598,34 +585,27 @@ describe('AuthService', () => { }), ).resolves.toBeUndefined(); - expect(sendGridService.sendEmail).not.toHaveBeenCalledWith(); + expect(emailService.sendEmail).not.toHaveBeenCalledWith(); }); it('should create token and send email', async () => { findOneByEmailMock.mockResolvedValue(userEntity); findTokenMock.mockResolvedValueOnce(null); - sendGridService.sendEmail = jest.fn(); - const email = 'user@example.com'; + emailService.sendEmail = jest.fn(); + const email = faker.internet.email(); await authService.resendEmailVerification({ email, - hCaptchaToken: 'token', + hCaptchaToken: faker.string.alphanumeric(), }); expect(createTokenMock).toHaveBeenCalled(); - expect(sendGridService.sendEmail).toHaveBeenCalledWith( - expect.objectContaining({ - personalizations: [ - { - dynamicTemplateData: { - service_name: SERVICE_NAME, - url: expect.stringContaining('/verify?token='), - }, - to: email, - }, - ], - templateId: SENDGRID_TEMPLATES.signup, - }), + expect(emailService.sendEmail).toHaveBeenCalledWith( + email, + EmailAction.SIGNUP, + { + url: expect.stringContaining(`${MOCK_FE_URL}/verify?token=`), + }, ); }); }); diff --git a/packages/apps/reputation-oracle/server/src/modules/auth/auth.service.ts b/packages/apps/reputation-oracle/server/src/modules/auth/auth.service.ts index 5b44668c9e..94ad08285f 100644 --- a/packages/apps/reputation-oracle/server/src/modules/auth/auth.service.ts +++ b/packages/apps/reputation-oracle/server/src/modules/auth/auth.service.ts @@ -11,8 +11,6 @@ import { UserService } from '../user/user.service'; import { TokenEntity, TokenType } from './token.entity'; import { TokenRepository } from './token.repository'; import { verifySignature } from '../../common/utils/signature'; -import { SendGridService } from '../sendgrid/sendgrid.service'; -import { SENDGRID_TEMPLATES, SERVICE_NAME } from '../../common/constants'; import { Web3Service } from '../web3/web3.service'; import { ChainId, @@ -51,6 +49,9 @@ import { ResendVerificationEmailDto, } from './dto'; +import { EmailService } from '../email/email.service'; +import { EmailAction } from '../email/constants'; + @Injectable() export class AuthService { private readonly salt: string; @@ -62,7 +63,7 @@ export class AuthService { private readonly serverConfigService: ServerConfigService, private readonly authConfigService: AuthConfigService, private readonly web3ConfigService: Web3ConfigService, - private readonly sendgridService: SendGridService, + private readonly emailService: EmailService, private readonly web3Service: Web3Service, private readonly userRepository: UserRepository, ) {} @@ -99,18 +100,8 @@ export class AuthService { ); await this.tokenRepository.createUnique(tokenEntity); - - await this.sendgridService.sendEmail({ - personalizations: [ - { - to: data.email, - dynamicTemplateData: { - service_name: SERVICE_NAME, - url: `${this.serverConfigService.feURL}/verify?token=${tokenEntity.uuid}`, - }, - }, - ], - templateId: SENDGRID_TEMPLATES.signup, + await this.emailService.sendEmail(data.email, EmailAction.SIGNUP, { + url: `${this.serverConfigService.feURL}/verify?token=${tokenEntity.uuid}`, }); return userEntity; @@ -236,18 +227,8 @@ export class AuthService { ); await this.tokenRepository.createUnique(tokenEntity); - - await this.sendgridService.sendEmail({ - personalizations: [ - { - to: data.email, - dynamicTemplateData: { - service_name: SERVICE_NAME, - url: `${this.serverConfigService.feURL}/reset-password?token=${tokenEntity.uuid}`, - }, - }, - ], - templateId: SENDGRID_TEMPLATES.resetPassword, + await this.emailService.sendEmail(data.email, EmailAction.RESET_PASSWORD, { + url: `${this.serverConfigService.feURL}/reset-password?token=${tokenEntity.uuid}`, }); } @@ -266,17 +247,10 @@ export class AuthService { } await this.userService.updatePassword(tokenEntity.user, data.password); - await this.sendgridService.sendEmail({ - personalizations: [ - { - to: tokenEntity.user.email, - dynamicTemplateData: { - service_name: SERVICE_NAME, - }, - }, - ], - templateId: SENDGRID_TEMPLATES.passwordChanged, - }); + await this.emailService.sendEmail( + tokenEntity.user.email, + EmailAction.PASSWORD_CHANGED, + ); await this.tokenRepository.deleteOne(tokenEntity); } @@ -325,18 +299,8 @@ export class AuthService { ); await this.tokenRepository.createUnique(tokenEntity); - - await this.sendgridService.sendEmail({ - personalizations: [ - { - to: data.email, - dynamicTemplateData: { - service_name: SERVICE_NAME, - url: `${this.serverConfigService.feURL}/verify?token=${tokenEntity.uuid}`, - }, - }, - ], - templateId: SENDGRID_TEMPLATES.signup, + await this.emailService.sendEmail(data.email, EmailAction.SIGNUP, { + url: `${this.serverConfigService.feURL}/verify?token=${tokenEntity.uuid}`, }); } diff --git a/packages/apps/reputation-oracle/server/src/modules/email/constants.ts b/packages/apps/reputation-oracle/server/src/modules/email/constants.ts new file mode 100644 index 0000000000..457e939685 --- /dev/null +++ b/packages/apps/reputation-oracle/server/src/modules/email/constants.ts @@ -0,0 +1,8 @@ +export enum EmailAction { + SIGNUP = 'signup', + RESET_PASSWORD = 'reset_password', + PASSWORD_CHANGED = 'password_changed', +} + +export const SENDGRID_API_KEY_REGEX = + /^SG\.[A-Za-z0-9-_]{22}\.[A-Za-z0-9-_]{43}$/; diff --git a/packages/apps/reputation-oracle/server/src/modules/email/email.service.ts b/packages/apps/reputation-oracle/server/src/modules/email/email.service.ts new file mode 100644 index 0000000000..086cf26af8 --- /dev/null +++ b/packages/apps/reputation-oracle/server/src/modules/email/email.service.ts @@ -0,0 +1,9 @@ +import { EmailAction } from './constants'; + +export abstract class EmailService { + abstract sendEmail( + to: string, + action: EmailAction, + payload?: Record, + ): Promise; +} diff --git a/packages/apps/reputation-oracle/server/src/modules/email/module.ts b/packages/apps/reputation-oracle/server/src/modules/email/module.ts new file mode 100644 index 0000000000..193c27a6f3 --- /dev/null +++ b/packages/apps/reputation-oracle/server/src/modules/email/module.ts @@ -0,0 +1,19 @@ +import { Module } from '@nestjs/common'; +import { ConfigModule } from '@nestjs/config'; +import { MailService } from '@sendgrid/mail'; +import { SendgridEmailService } from './sendgrid.service'; +import { EmailService } from './email.service'; + +@Module({ + imports: [ConfigModule], + providers: [ + SendgridEmailService, + MailService, + { + provide: EmailService, + useClass: SendgridEmailService, + }, + ], + exports: [EmailService], +}) +export class EmailModule {} diff --git a/packages/apps/reputation-oracle/server/src/modules/email/sendgrid.service.spec.ts b/packages/apps/reputation-oracle/server/src/modules/email/sendgrid.service.spec.ts new file mode 100644 index 0000000000..3b40bc84a0 --- /dev/null +++ b/packages/apps/reputation-oracle/server/src/modules/email/sendgrid.service.spec.ts @@ -0,0 +1,145 @@ +jest.mock('../../logger'); + +import { faker } from '@faker-js/faker'; +import { Test, TestingModule } from '@nestjs/testing'; +import { MailService } from '@sendgrid/mail'; + +import * as environmentUtils from '../../common/utils/environment'; +import { SENDGRID_TEMPLATES, SERVICE_NAME } from './sendgrid.service'; +import logger from '../../logger'; +import { getTemplateId } from './sendgrid.service'; +import { EmailAction } from './constants'; +import { EmailConfigService } from '../../common/config/email-config.service'; +import { SendgridEmailService } from './sendgrid.service'; + +const mockMailService = { + setApiKey: jest.fn(), + send: jest.fn(), +}; + +const mockEmailConfigService = { + apiKey: `SG.${faker.string.alphanumeric(22)}.${faker.string.alphanumeric(43)}`, + from: faker.internet.email(), + fromName: faker.string.alpha(), +}; + +const spyOnIsDevelopmentEnv = jest + .spyOn(environmentUtils, 'isDevelopmentEnv') + .mockReturnValue(false); + +describe('SendgridEmailService', () => { + let service: SendgridEmailService; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + SendgridEmailService, + { provide: MailService, useValue: mockMailService }, + { provide: EmailConfigService, useValue: mockEmailConfigService }, + ], + }).compile(); + + service = module.get(SendgridEmailService); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + describe('Initialization', () => { + it('should initialize and set API key in staging/production mode', () => { + new SendgridEmailService( + mockMailService as any, + mockEmailConfigService as any, + ); + expect(mockMailService.setApiKey).toHaveBeenCalledWith( + mockEmailConfigService.apiKey, + ); + }); + + it('should throw an error for invalid API key in staging/production mode', () => { + const invalidConfig = { + ...mockEmailConfigService, + apiKey: faker.string.alphanumeric(), + }; + expect( + () => + new SendgridEmailService( + mockMailService as any, + invalidConfig as any, + ), + ).toThrow('Invalid SendGrid API key'); + }); + }); + + describe('sendEmail', () => { + const to = faker.internet.email(); + const payload = { url: faker.internet.url() }; + + it('should log email in development mode without sending', async () => { + spyOnIsDevelopmentEnv.mockReturnValueOnce(true); + + await service.sendEmail(to, EmailAction.SIGNUP, payload); + expect(logger.debug).toHaveBeenCalledWith( + 'Email sent (development mode):', + { + to, + action: EmailAction.SIGNUP, + payload, + }, + ); + expect(mockMailService.send).not.toHaveBeenCalled(); + }); + + it('should send email in staging/production mode', async () => { + await service.sendEmail(to, EmailAction.SIGNUP, payload); + + expect(mockMailService.send).toHaveBeenCalledTimes(1); + expect(mockMailService.send).toHaveBeenCalledWith({ + from: { + email: mockEmailConfigService.from, + name: mockEmailConfigService.fromName, + }, + to, + templateId: SENDGRID_TEMPLATES.signup, + dynamicTemplateData: { + service_name: SERVICE_NAME, + ...payload, + }, + }); + }); + + it('should log and throw error if sending fails', async () => { + const error = new Error('SendGrid error'); + mockMailService.send.mockRejectedValueOnce(error); + + await expect( + service.sendEmail(to, EmailAction.SIGNUP, payload), + ).rejects.toThrow('Failed to send email'); + expect(logger.error).toHaveBeenCalledWith('Failed to send email', { + error, + to, + action: EmailAction.SIGNUP, + payload, + }); + }); + }); + + describe('getTemplateId', () => { + it('should return correct template id for SIGNUP', () => { + expect(getTemplateId(EmailAction.SIGNUP)).toBe(SENDGRID_TEMPLATES.signup); + }); + + it('should return correct template id for RESET_PASSWORD', () => { + expect(getTemplateId(EmailAction.RESET_PASSWORD)).toBe( + SENDGRID_TEMPLATES.resetPassword, + ); + }); + + it('should return correct template id for PASSWORD_CHANGED', () => { + expect(getTemplateId(EmailAction.PASSWORD_CHANGED)).toBe( + SENDGRID_TEMPLATES.passwordChanged, + ); + }); + }); +}); diff --git a/packages/apps/reputation-oracle/server/src/modules/email/sendgrid.service.ts b/packages/apps/reputation-oracle/server/src/modules/email/sendgrid.service.ts new file mode 100644 index 0000000000..bf3d81adf9 --- /dev/null +++ b/packages/apps/reputation-oracle/server/src/modules/email/sendgrid.service.ts @@ -0,0 +1,92 @@ +import { Injectable } from '@nestjs/common'; +import { MailService } from '@sendgrid/mail'; + +import { EmailService } from './email.service'; +import { EmailAction, SENDGRID_API_KEY_REGEX } from './constants'; +import logger from '../../logger'; +import { EmailConfigService } from '../../common/config/email-config.service'; +import { isDevelopmentEnv } from '../../common/utils/environment'; + +export const SENDGRID_TEMPLATES = { + signup: 'd-ca99cc7410aa4e6dab3e6042d5ecb9a3', + resetPassword: 'd-3ac74546352a4e1abdd1689947632c22', + passwordChanged: 'd-ca0ac7e6fff845829cd0167af09f25cf', +}; +export const SERVICE_NAME = 'App'; + +export function getTemplateId(action: EmailAction): string { + switch (action) { + case EmailAction.SIGNUP: + return SENDGRID_TEMPLATES.signup; + case EmailAction.RESET_PASSWORD: + return SENDGRID_TEMPLATES.resetPassword; + case EmailAction.PASSWORD_CHANGED: + return SENDGRID_TEMPLATES.passwordChanged; + } +} + +@Injectable() +export class SendgridEmailService extends EmailService { + private readonly logger = logger.child({ + context: SendgridEmailService.name, + }); + constructor( + private readonly mailService: MailService, + private readonly emailConfigService: EmailConfigService, + ) { + super(); + if (!isDevelopmentEnv()) { + if (!SENDGRID_API_KEY_REGEX.test(this.emailConfigService.apiKey)) { + throw new Error('Invalid SendGrid API key'); + } + this.mailService.setApiKey(emailConfigService.apiKey); + } + } + + async sendEmail( + to: string, + action: EmailAction, + payload?: Record, + ): Promise { + if (isDevelopmentEnv()) { + /** + * Logging email data upon local development + */ + this.logger.debug('Email sent (development mode):', { + to, + action, + payload, + }); + return; + } + const from = { + email: this.emailConfigService.from, + name: this.emailConfigService.fromName, + }; + + const templateId = getTemplateId(action); + const dynamicTemplateData = { + service_name: SERVICE_NAME, + ...payload, + }; + try { + await this.mailService.send({ + from, + to, + templateId, + dynamicTemplateData, + }); + } catch (error) { + const errorMessage = 'Failed to send email'; + + this.logger.error(errorMessage, { + error, + to, + action, + payload, + }); + + throw new Error(errorMessage); + } + } +} diff --git a/packages/apps/reputation-oracle/server/src/modules/sendgrid/sendgrid.module.ts b/packages/apps/reputation-oracle/server/src/modules/sendgrid/sendgrid.module.ts deleted file mode 100644 index f1a1c2a3d1..0000000000 --- a/packages/apps/reputation-oracle/server/src/modules/sendgrid/sendgrid.module.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Global, Module } from '@nestjs/common'; -import { ConfigModule } from '@nestjs/config'; -import { MailService } from '@sendgrid/mail'; - -import { SendGridService } from './sendgrid.service'; - -@Global() -@Module({ - imports: [ConfigModule], - providers: [SendGridService, MailService], - exports: [SendGridService], -}) -export class SendGridModule {} diff --git a/packages/apps/reputation-oracle/server/src/modules/sendgrid/sendgrid.service.spec.ts b/packages/apps/reputation-oracle/server/src/modules/sendgrid/sendgrid.service.spec.ts deleted file mode 100644 index 8c4dfc3d04..0000000000 --- a/packages/apps/reputation-oracle/server/src/modules/sendgrid/sendgrid.service.spec.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { ConfigService } from '@nestjs/config'; -import { Test } from '@nestjs/testing'; -import { SendGridService } from './sendgrid.service'; -import { MailService } from '@sendgrid/mail'; -import { MOCK_SENDGRID_API_KEY, mockConfig } from '../../../test/constants'; -import { SendgridConfigService } from '../../common/config/sendgrid-config.service'; - -describe('SendGridService', () => { - let sendGridService: SendGridService; - let mailService: MailService; - let sendgridConfigService: SendgridConfigService; - - jest - .spyOn(SendgridConfigService.prototype, 'apiKey', 'get') - .mockReturnValue(MOCK_SENDGRID_API_KEY); - - beforeAll(async () => { - const mockMailService = { - send: jest.fn(), - setApiKey: jest.fn(), - }; - - const app = await Test.createTestingModule({ - providers: [ - { - provide: ConfigService, - useValue: { - get: jest.fn((key: string) => mockConfig[key]), - getOrThrow: jest.fn((key: string) => { - if (!mockConfig[key]) { - throw new Error(`Configuration key "${key}" does not exist`); - } - return mockConfig[key]; - }), - }, - }, - SendGridService, - { - provide: MailService, - useValue: mockMailService, - }, - SendgridConfigService, - ], - }).compile(); - sendGridService = app.get(SendGridService); - mailService = app.get(MailService); - sendgridConfigService = app.get(SendgridConfigService); - }); - - describe('sendEmail', () => { - it('should send email', async () => { - const mock = jest - .spyOn(mailService, 'send') - .mockImplementationOnce(async () => { - return [{} as any, {}]; - }); - await sendGridService.sendEmail({ - to: 'test@example.com', - from: 'test@example.com', - subject: 'Sending with SendGrid is Fun', - text: 'and easy to do anywhere, even with Node.js', - html: 'and easy to do anywhere, even with Node.js', - }); - expect(mock).toHaveBeenCalled(); - }); - - it('should send email from default address', async () => { - const mock = jest - .spyOn(mailService, 'send') - .mockImplementationOnce(async () => { - return [{} as any, {}]; - }); - await sendGridService.sendEmail({ - to: 'test@example.com', - subject: 'Sending with SendGrid is Fun', - text: 'and easy to do anywhere, even with Node.js', - html: 'and easy to do anywhere, even with Node.js', - }); - - expect(mock).toHaveBeenCalledWith( - expect.objectContaining({ - from: 'test@example.com', - }), - ); - }); - - it("should throw error if email wasn't sent", async () => { - jest.spyOn(mailService, 'send').mockImplementationOnce(async () => { - throw new Error('Mail service error'); - }); - - await expect( - sendGridService.sendEmail({ - to: 'test@example.com', - subject: 'Sending with SendGrid is Fun', - text: 'and easy to do anywhere, even with Node.js', - html: 'and easy to do anywhere, even with Node.js', - }), - ).rejects.toThrow('Failed to send email'); - }); - }); - - describe('constructor', () => { - it('should initialize SendGridService with valid API key', () => { - sendGridService = new SendGridService(mailService, sendgridConfigService); - - expect(mailService.setApiKey).toHaveBeenCalledWith(MOCK_SENDGRID_API_KEY); - }); - - it('should throw an error with invalid API key', async () => { - const invalidApiKey = 'invalid-api-key'; - jest - .spyOn(sendgridConfigService, 'apiKey', 'get') - .mockReturnValue(invalidApiKey); - - expect(() => { - sendGridService = new SendGridService( - mailService, - sendgridConfigService, - ); - }).toThrow('Invalid SendGrid API key'); - }); - }); -}); diff --git a/packages/apps/reputation-oracle/server/src/modules/sendgrid/sendgrid.service.ts b/packages/apps/reputation-oracle/server/src/modules/sendgrid/sendgrid.service.ts deleted file mode 100644 index cc95fab1d7..0000000000 --- a/packages/apps/reputation-oracle/server/src/modules/sendgrid/sendgrid.service.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { MailDataRequired, MailService } from '@sendgrid/mail'; -import { - SENDGRID_API_KEY_DISABLED, - SENDGRID_API_KEY_REGEX, -} from '../../common/constants'; -import { SendgridConfigService } from '../../common/config/sendgrid-config.service'; -import logger from '../../logger'; - -@Injectable() -export class SendGridService { - private readonly logger = logger.child({ context: SendGridService.name }); - - constructor( - private readonly mailService: MailService, - private readonly sendgridConfigService: SendgridConfigService, - ) { - if (this.sendgridConfigService.apiKey === SENDGRID_API_KEY_DISABLED) { - return; - } - - if (!SENDGRID_API_KEY_REGEX.test(this.sendgridConfigService.apiKey)) { - throw new Error('Invalid SendGrid API key'); - } - - this.mailService.setApiKey(this.sendgridConfigService.apiKey); - } - - async sendEmail({ - from = { - email: this.sendgridConfigService.fromEmail, - name: this.sendgridConfigService.fromName, - }, - templateId = '', - personalizations, - ...emailData - }: Partial): Promise { - try { - if (this.sendgridConfigService.apiKey === SENDGRID_API_KEY_DISABLED) { - /** - * Logging email data upon local development due - */ - this.logger.debug('Email sent', personalizations); - return; - } - - await this.mailService.send({ - from, - templateId, - personalizations, - ...emailData, - }); - } catch (error) { - const errorMessage = 'Failed to send email'; - - this.logger.error(errorMessage, { - error, - templateId, - to: personalizations?.map(({ to }) => to), - }); - - throw new Error(errorMessage); - } - } -} diff --git a/packages/apps/staking/package.json b/packages/apps/staking/package.json index 9a72d1b8dc..3e1c888260 100644 --- a/packages/apps/staking/package.json +++ b/packages/apps/staking/package.json @@ -34,7 +34,7 @@ "@tanstack/react-query": "^5.60.5", "@tanstack/react-query-persist-client": "^5.51.11", "axios": "^1.7.2", - "ethers": "^6.13.1", + "ethers": "^6.13.5", "react": "^18.3.1", "react-dom": "^18.3.1", "react-router-dom": "^6.24.1", diff --git a/packages/apps/staking/src/components/modals/KVStoreModal.tsx b/packages/apps/staking/src/components/modals/KVStoreModal.tsx index 4b280abf10..d32ffa1c94 100644 --- a/packages/apps/staking/src/components/modals/KVStoreModal.tsx +++ b/packages/apps/staking/src/components/modals/KVStoreModal.tsx @@ -207,12 +207,12 @@ const KVStoreModal: React.FC = ({ Select Key - {Object.entries(KVStoreKeys).map(([label, kvKey]) => ( + {Object.entries(KVStoreKeys).map(([, kvKey]) => ( - {label[0].toUpperCase() + label.slice(1)} + {kvKey} ))} - Custom + custom {item.isCustom && ( diff --git a/yarn.lock b/yarn.lock index 6ef5cf4356..508a906c56 100644 --- a/yarn.lock +++ b/yarn.lock @@ -66,9 +66,9 @@ rxjs "7.8.1" "@apollo/client@^3.11.1": - version "3.12.9" - resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.12.9.tgz#fb7afc254bc4a5bfeeae905426edcb9d3e643fae" - integrity sha512-rH2Vzfbp+IR0l/xAjUIbDH4/sqBzPATMbzXv/L36E33yhp40yM5LFJnC6cc4YDPUH2gom7Dk4BrYZVLbFpYTsA== + version "3.12.11" + resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.12.11.tgz#250301155a86c59e2915637fd19c9a2c42f878a8" + integrity sha512-1RppV9U3E6Uusl/33yGkZa+rXpkGU5iCstcYltwWjdTjoA/YBD2Yyu0aHy8J4uKfIExUgnMW1HJWn4A0E0rRsw== dependencies: "@graphql-typed-document-node/core" "^3.1.1" "@wry/caches" "^1.0.0" @@ -183,25 +183,25 @@ tslib "^2.6.2" "@aws-sdk/client-lambda@^3.563.0": - version "3.741.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-lambda/-/client-lambda-3.741.0.tgz#498babc58883ece9a8b8068b3277a2517e029ad9" - integrity sha512-nrH6vx9cBz+f6dOzezofU4F+gnH8g9uhXR76Y3XicJEcvynGj8DfMH6e6FUEXLkqEYIND9rnq3rCEf1vjkIkFg== + version "3.744.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-lambda/-/client-lambda-3.744.0.tgz#cf000d2324929a772aca0e063fc6aa9f10080c3e" + integrity sha512-XPWPuvRkrabJ9jMBeEurn2vXVo40umeoeV0+nAERtG6mt9dB8d3gobHROBG5iwWJV1oqBDn9E/ZN8WDahvM1BQ== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.734.0" - "@aws-sdk/credential-provider-node" "3.741.0" + "@aws-sdk/core" "3.744.0" + "@aws-sdk/credential-provider-node" "3.744.0" "@aws-sdk/middleware-host-header" "3.734.0" "@aws-sdk/middleware-logger" "3.734.0" "@aws-sdk/middleware-recursion-detection" "3.734.0" - "@aws-sdk/middleware-user-agent" "3.734.0" + "@aws-sdk/middleware-user-agent" "3.744.0" "@aws-sdk/region-config-resolver" "3.734.0" "@aws-sdk/types" "3.734.0" - "@aws-sdk/util-endpoints" "3.734.0" + "@aws-sdk/util-endpoints" "3.743.0" "@aws-sdk/util-user-agent-browser" "3.734.0" - "@aws-sdk/util-user-agent-node" "3.734.0" + "@aws-sdk/util-user-agent-node" "3.744.0" "@smithy/config-resolver" "^4.0.1" - "@smithy/core" "^3.1.1" + "@smithy/core" "^3.1.2" "@smithy/eventstream-serde-browser" "^4.0.1" "@smithy/eventstream-serde-config-resolver" "^4.0.1" "@smithy/eventstream-serde-node" "^4.0.1" @@ -209,21 +209,21 @@ "@smithy/hash-node" "^4.0.1" "@smithy/invalid-dependency" "^4.0.1" "@smithy/middleware-content-length" "^4.0.1" - "@smithy/middleware-endpoint" "^4.0.2" - "@smithy/middleware-retry" "^4.0.3" - "@smithy/middleware-serde" "^4.0.1" + "@smithy/middleware-endpoint" "^4.0.3" + "@smithy/middleware-retry" "^4.0.4" + "@smithy/middleware-serde" "^4.0.2" "@smithy/middleware-stack" "^4.0.1" "@smithy/node-config-provider" "^4.0.1" "@smithy/node-http-handler" "^4.0.2" "@smithy/protocol-http" "^5.0.1" - "@smithy/smithy-client" "^4.1.2" + "@smithy/smithy-client" "^4.1.3" "@smithy/types" "^4.1.0" "@smithy/url-parser" "^4.0.1" "@smithy/util-base64" "^4.0.0" "@smithy/util-body-length-browser" "^4.0.0" "@smithy/util-body-length-node" "^4.0.0" - "@smithy/util-defaults-mode-browser" "^4.0.3" - "@smithy/util-defaults-mode-node" "^4.0.3" + "@smithy/util-defaults-mode-browser" "^4.0.4" + "@smithy/util-defaults-mode-node" "^4.0.4" "@smithy/util-endpoints" "^3.0.1" "@smithy/util-middleware" "^4.0.1" "@smithy/util-retry" "^4.0.1" @@ -232,106 +232,106 @@ "@smithy/util-waiter" "^4.0.2" tslib "^2.6.2" -"@aws-sdk/client-sso@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.734.0.tgz#789c98267f07aaa7155b404d0bfd4059c4b4deb9" - integrity sha512-oerepp0mut9VlgTwnG5Ds/lb0C0b2/rQ+hL/rF6q+HGKPfGsCuPvFx1GtwGKCXd49ase88/jVgrhcA9OQbz3kg== +"@aws-sdk/client-sso@3.744.0": + version "3.744.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.744.0.tgz#8de02749e9323c2800315ef3b08b32e74b9a8c66" + integrity sha512-mzJxPQ9mcnNY50pi7+pxB34/Dt7PUn0OgkashHdJPTnavoriLWvPcaQCG1NEVAtyzxNdowhpi4KjC+aN1EwAeA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.734.0" + "@aws-sdk/core" "3.744.0" "@aws-sdk/middleware-host-header" "3.734.0" "@aws-sdk/middleware-logger" "3.734.0" "@aws-sdk/middleware-recursion-detection" "3.734.0" - "@aws-sdk/middleware-user-agent" "3.734.0" + "@aws-sdk/middleware-user-agent" "3.744.0" "@aws-sdk/region-config-resolver" "3.734.0" "@aws-sdk/types" "3.734.0" - "@aws-sdk/util-endpoints" "3.734.0" + "@aws-sdk/util-endpoints" "3.743.0" "@aws-sdk/util-user-agent-browser" "3.734.0" - "@aws-sdk/util-user-agent-node" "3.734.0" + "@aws-sdk/util-user-agent-node" "3.744.0" "@smithy/config-resolver" "^4.0.1" - "@smithy/core" "^3.1.1" + "@smithy/core" "^3.1.2" "@smithy/fetch-http-handler" "^5.0.1" "@smithy/hash-node" "^4.0.1" "@smithy/invalid-dependency" "^4.0.1" "@smithy/middleware-content-length" "^4.0.1" - "@smithy/middleware-endpoint" "^4.0.2" - "@smithy/middleware-retry" "^4.0.3" - "@smithy/middleware-serde" "^4.0.1" + "@smithy/middleware-endpoint" "^4.0.3" + "@smithy/middleware-retry" "^4.0.4" + "@smithy/middleware-serde" "^4.0.2" "@smithy/middleware-stack" "^4.0.1" "@smithy/node-config-provider" "^4.0.1" "@smithy/node-http-handler" "^4.0.2" "@smithy/protocol-http" "^5.0.1" - "@smithy/smithy-client" "^4.1.2" + "@smithy/smithy-client" "^4.1.3" "@smithy/types" "^4.1.0" "@smithy/url-parser" "^4.0.1" "@smithy/util-base64" "^4.0.0" "@smithy/util-body-length-browser" "^4.0.0" "@smithy/util-body-length-node" "^4.0.0" - "@smithy/util-defaults-mode-browser" "^4.0.3" - "@smithy/util-defaults-mode-node" "^4.0.3" + "@smithy/util-defaults-mode-browser" "^4.0.4" + "@smithy/util-defaults-mode-node" "^4.0.4" "@smithy/util-endpoints" "^3.0.1" "@smithy/util-middleware" "^4.0.1" "@smithy/util-retry" "^4.0.1" "@smithy/util-utf8" "^4.0.0" tslib "^2.6.2" -"@aws-sdk/core@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.734.0.tgz#fa2289750efd75f4fb8c45719a4a4ea7e7755160" - integrity sha512-SxnDqf3vobdm50OLyAKfqZetv6zzwnSqwIwd3jrbopxxHKqNIM/I0xcYjD6Tn+mPig+u7iRKb9q3QnEooFTlmg== +"@aws-sdk/core@3.744.0": + version "3.744.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.744.0.tgz#0b357ca6b14c34c4bb5a626bcaa0b0392781b5d4" + integrity sha512-R0XLfDDq7MAXYyDf7tPb+m0R7gmzTRRDtPNQ5jvuq8dbkefph5gFMkxZ2zSx7dfTsfYHhBPuTBsQ0c5Xjal3Vg== dependencies: "@aws-sdk/types" "3.734.0" - "@smithy/core" "^3.1.1" + "@smithy/core" "^3.1.2" "@smithy/node-config-provider" "^4.0.1" "@smithy/property-provider" "^4.0.1" "@smithy/protocol-http" "^5.0.1" "@smithy/signature-v4" "^5.0.1" - "@smithy/smithy-client" "^4.1.2" + "@smithy/smithy-client" "^4.1.3" "@smithy/types" "^4.1.0" "@smithy/util-middleware" "^4.0.1" fast-xml-parser "4.4.1" tslib "^2.6.2" -"@aws-sdk/credential-provider-env@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.734.0.tgz#6c0b1734764a7fb1616455836b1c3dacd99e50a3" - integrity sha512-gtRkzYTGafnm1FPpiNO8VBmJrYMoxhDlGPYDVcijzx3DlF8dhWnowuSBCxLSi+MJMx5hvwrX2A+e/q0QAeHqmw== +"@aws-sdk/credential-provider-env@3.744.0": + version "3.744.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.744.0.tgz#bfcfa86a7b7d0dc94fb7e97ef35d2b7830f69f42" + integrity sha512-hyjC7xqzAeERorYYjhQG1ivcr1XlxgfBpa+r4pG29toFG60mACyVzaR7+og3kgzjRFAB7D1imMxPQyEvQ1QokA== dependencies: - "@aws-sdk/core" "3.734.0" + "@aws-sdk/core" "3.744.0" "@aws-sdk/types" "3.734.0" "@smithy/property-provider" "^4.0.1" "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-http@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.734.0.tgz#21c5fbb380d1dd503491897b346e1e0b1d06ae41" - integrity sha512-JFSL6xhONsq+hKM8xroIPhM5/FOhiQ1cov0lZxhzZWj6Ai3UAjucy3zyIFDr9MgP1KfCYNdvyaUq9/o+HWvEDg== +"@aws-sdk/credential-provider-http@3.744.0": + version "3.744.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.744.0.tgz#696c71f0fdea856a69752947624255383c2fca1f" + integrity sha512-k+P1Tl5ewBvVByR6hB726qFIzANgQVf2cY87hZ/e09pQYlH4bfBcyY16VJhkqYnKmv6HMdWxKHX7D8nwlc8Obg== dependencies: - "@aws-sdk/core" "3.734.0" + "@aws-sdk/core" "3.744.0" "@aws-sdk/types" "3.734.0" "@smithy/fetch-http-handler" "^5.0.1" "@smithy/node-http-handler" "^4.0.2" "@smithy/property-provider" "^4.0.1" "@smithy/protocol-http" "^5.0.1" - "@smithy/smithy-client" "^4.1.2" + "@smithy/smithy-client" "^4.1.3" "@smithy/types" "^4.1.0" "@smithy/util-stream" "^4.0.2" tslib "^2.6.2" -"@aws-sdk/credential-provider-ini@3.741.0": - version "3.741.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.741.0.tgz#cfe37d5028dc636e49f044f825b05de087f208c4" - integrity sha512-/XvnVp6zZXsyUlP1FtmspcWnd+Z1u2WK0wwzTE/x277M0oIhAezCW79VmcY4jcDQbYH+qMbtnBexfwgFDARxQg== - dependencies: - "@aws-sdk/core" "3.734.0" - "@aws-sdk/credential-provider-env" "3.734.0" - "@aws-sdk/credential-provider-http" "3.734.0" - "@aws-sdk/credential-provider-process" "3.734.0" - "@aws-sdk/credential-provider-sso" "3.734.0" - "@aws-sdk/credential-provider-web-identity" "3.734.0" - "@aws-sdk/nested-clients" "3.734.0" +"@aws-sdk/credential-provider-ini@3.744.0": + version "3.744.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.744.0.tgz#7d048788efdce53391211ce3b4624a6a146a16e0" + integrity sha512-hjEWgkF86tkvg8PIsDiB3KkTj7z8ZFGR0v0OLQYD47o17q1qfoMzZmg9wae3wXp9KzU+lZETo+8oMqX9a+7aVQ== + dependencies: + "@aws-sdk/core" "3.744.0" + "@aws-sdk/credential-provider-env" "3.744.0" + "@aws-sdk/credential-provider-http" "3.744.0" + "@aws-sdk/credential-provider-process" "3.744.0" + "@aws-sdk/credential-provider-sso" "3.744.0" + "@aws-sdk/credential-provider-web-identity" "3.744.0" + "@aws-sdk/nested-clients" "3.744.0" "@aws-sdk/types" "3.734.0" "@smithy/credential-provider-imds" "^4.0.1" "@smithy/property-provider" "^4.0.1" @@ -339,17 +339,17 @@ "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-node@3.741.0": - version "3.741.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.741.0.tgz#29e42e9c4f1be5c3bfa05a10998d6431a432f936" - integrity sha512-iz/puK9CZZkZjrKXX2W+PaiewHtlcD7RKUIsw4YHFyb8lrOt7yTYpM6VjeI+T//1sozjymmAnnp1SST9TXApLQ== - dependencies: - "@aws-sdk/credential-provider-env" "3.734.0" - "@aws-sdk/credential-provider-http" "3.734.0" - "@aws-sdk/credential-provider-ini" "3.741.0" - "@aws-sdk/credential-provider-process" "3.734.0" - "@aws-sdk/credential-provider-sso" "3.734.0" - "@aws-sdk/credential-provider-web-identity" "3.734.0" +"@aws-sdk/credential-provider-node@3.744.0": + version "3.744.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.744.0.tgz#302a136b40c5bc6b3b137d03615ec97eb111bfe8" + integrity sha512-4oUfRd6pe/VGmKoav17pPoOO0WP0L6YXmHqtJHSDmFUOAa+Vh0ZRljTj/yBdleRgdO6rOfdWqoGLFSFiAZDrsQ== + dependencies: + "@aws-sdk/credential-provider-env" "3.744.0" + "@aws-sdk/credential-provider-http" "3.744.0" + "@aws-sdk/credential-provider-ini" "3.744.0" + "@aws-sdk/credential-provider-process" "3.744.0" + "@aws-sdk/credential-provider-sso" "3.744.0" + "@aws-sdk/credential-provider-web-identity" "3.744.0" "@aws-sdk/types" "3.734.0" "@smithy/credential-provider-imds" "^4.0.1" "@smithy/property-provider" "^4.0.1" @@ -357,39 +357,39 @@ "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-process@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.734.0.tgz#eb1de678a9c3d2d7b382e74a670fa283327f9c45" - integrity sha512-zvjsUo+bkYn2vjT+EtLWu3eD6me+uun+Hws1IyWej/fKFAqiBPwyeyCgU7qjkiPQSXqk1U9+/HG9IQ6Iiz+eBw== +"@aws-sdk/credential-provider-process@3.744.0": + version "3.744.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.744.0.tgz#4a0850276a4175094aba7d6164dd29a5fd855a95" + integrity sha512-m0d/pDBIaiEAAxWXt/c79RHsKkUkyPOvF2SAMRddVhhOt1GFZI4ml+3f4drmAZfXldIyJmvJTJJqWluVPwTIqQ== dependencies: - "@aws-sdk/core" "3.734.0" + "@aws-sdk/core" "3.744.0" "@aws-sdk/types" "3.734.0" "@smithy/property-provider" "^4.0.1" "@smithy/shared-ini-file-loader" "^4.0.1" "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-sso@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.734.0.tgz#68a9d678319e9743d65cf59e2d29c0c440d8975c" - integrity sha512-cCwwcgUBJOsV/ddyh1OGb4gKYWEaTeTsqaAK19hiNINfYV/DO9r4RMlnWAo84sSBfJuj9shUNsxzyoe6K7R92Q== +"@aws-sdk/credential-provider-sso@3.744.0": + version "3.744.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.744.0.tgz#8e25af2c7b12887f2db4ce33c88efa4e136173d7" + integrity sha512-xdMufTZOvpbDoDPI2XLu0/Rg3qJ/txpS8IJR63NsCGotHJZ/ucLNKwTcGS40hllZB8qSHTlvmlOzElDahTtx/A== dependencies: - "@aws-sdk/client-sso" "3.734.0" - "@aws-sdk/core" "3.734.0" - "@aws-sdk/token-providers" "3.734.0" + "@aws-sdk/client-sso" "3.744.0" + "@aws-sdk/core" "3.744.0" + "@aws-sdk/token-providers" "3.744.0" "@aws-sdk/types" "3.734.0" "@smithy/property-provider" "^4.0.1" "@smithy/shared-ini-file-loader" "^4.0.1" "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-web-identity@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.734.0.tgz#666b61cc9f498a3aaecd8e38c9ae34aef37e2e64" - integrity sha512-t4OSOerc+ppK541/Iyn1AS40+2vT/qE+MFMotFkhCgCJbApeRF2ozEdnDN6tGmnl4ybcUuxnp9JWLjwDVlR/4g== +"@aws-sdk/credential-provider-web-identity@3.744.0": + version "3.744.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.744.0.tgz#fab672a92bf4924e0fee5e4ca307f25cd9dc2f7a" + integrity sha512-cNk93GZxORzqEojWfXdrPBF6a7Nu3LpPCWG5mV+lH2tbuGsmw6XhKkwpt7o+OiIP4tKCpHlvqOD8f1nmhe1KDA== dependencies: - "@aws-sdk/core" "3.734.0" - "@aws-sdk/nested-clients" "3.734.0" + "@aws-sdk/core" "3.744.0" + "@aws-sdk/nested-clients" "3.744.0" "@aws-sdk/types" "3.734.0" "@smithy/property-provider" "^4.0.1" "@smithy/types" "^4.1.0" @@ -424,57 +424,57 @@ "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@aws-sdk/middleware-user-agent@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.734.0.tgz#12d400ccb98593f2b02e4fb08239cb9835d41d3a" - integrity sha512-MFVzLWRkfFz02GqGPjqSOteLe5kPfElUrXZft1eElnqulqs6RJfVSpOV7mO90gu293tNAeggMWAVSGRPKIYVMg== +"@aws-sdk/middleware-user-agent@3.744.0": + version "3.744.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.744.0.tgz#b87405dc60943afbcbc858e0dcdb69eaea46033c" + integrity sha512-ROUbDQHfVWiBHXd4m9E9mKj1Azby8XCs8RC8OCf9GVH339GSE6aMrPJSzMlsV1LmzPdPIypgp5qqh5NfSrKztg== dependencies: - "@aws-sdk/core" "3.734.0" + "@aws-sdk/core" "3.744.0" "@aws-sdk/types" "3.734.0" - "@aws-sdk/util-endpoints" "3.734.0" - "@smithy/core" "^3.1.1" + "@aws-sdk/util-endpoints" "3.743.0" + "@smithy/core" "^3.1.2" "@smithy/protocol-http" "^5.0.1" "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@aws-sdk/nested-clients@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/nested-clients/-/nested-clients-3.734.0.tgz#10a116d141522341c446b11783551ef863aabd27" - integrity sha512-iph2XUy8UzIfdJFWo1r0Zng9uWj3253yvW9gljhtu+y/LNmNvSnJxQk1f3D2BC5WmcoPZqTS3UsycT3mLPSzWA== +"@aws-sdk/nested-clients@3.744.0": + version "3.744.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/nested-clients/-/nested-clients-3.744.0.tgz#6af18949cf2a2180c2c4fbcf71fab6fd965e1874" + integrity sha512-Mnrlh4lRY1gZQnKvN2Lh/5WXcGkzC41NM93mtn2uaqOh+DZLCXCttNCfbUesUvYJLOo3lYaOpiDsjTkPVB1yjw== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.734.0" + "@aws-sdk/core" "3.744.0" "@aws-sdk/middleware-host-header" "3.734.0" "@aws-sdk/middleware-logger" "3.734.0" "@aws-sdk/middleware-recursion-detection" "3.734.0" - "@aws-sdk/middleware-user-agent" "3.734.0" + "@aws-sdk/middleware-user-agent" "3.744.0" "@aws-sdk/region-config-resolver" "3.734.0" "@aws-sdk/types" "3.734.0" - "@aws-sdk/util-endpoints" "3.734.0" + "@aws-sdk/util-endpoints" "3.743.0" "@aws-sdk/util-user-agent-browser" "3.734.0" - "@aws-sdk/util-user-agent-node" "3.734.0" + "@aws-sdk/util-user-agent-node" "3.744.0" "@smithy/config-resolver" "^4.0.1" - "@smithy/core" "^3.1.1" + "@smithy/core" "^3.1.2" "@smithy/fetch-http-handler" "^5.0.1" "@smithy/hash-node" "^4.0.1" "@smithy/invalid-dependency" "^4.0.1" "@smithy/middleware-content-length" "^4.0.1" - "@smithy/middleware-endpoint" "^4.0.2" - "@smithy/middleware-retry" "^4.0.3" - "@smithy/middleware-serde" "^4.0.1" + "@smithy/middleware-endpoint" "^4.0.3" + "@smithy/middleware-retry" "^4.0.4" + "@smithy/middleware-serde" "^4.0.2" "@smithy/middleware-stack" "^4.0.1" "@smithy/node-config-provider" "^4.0.1" "@smithy/node-http-handler" "^4.0.2" "@smithy/protocol-http" "^5.0.1" - "@smithy/smithy-client" "^4.1.2" + "@smithy/smithy-client" "^4.1.3" "@smithy/types" "^4.1.0" "@smithy/url-parser" "^4.0.1" "@smithy/util-base64" "^4.0.0" "@smithy/util-body-length-browser" "^4.0.0" "@smithy/util-body-length-node" "^4.0.0" - "@smithy/util-defaults-mode-browser" "^4.0.3" - "@smithy/util-defaults-mode-node" "^4.0.3" + "@smithy/util-defaults-mode-browser" "^4.0.4" + "@smithy/util-defaults-mode-node" "^4.0.4" "@smithy/util-endpoints" "^3.0.1" "@smithy/util-middleware" "^4.0.1" "@smithy/util-retry" "^4.0.1" @@ -493,12 +493,12 @@ "@smithy/util-middleware" "^4.0.1" tslib "^2.6.2" -"@aws-sdk/token-providers@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.734.0.tgz#8880e94f21457fe5dd7074ecc52fdd43180cbb2c" - integrity sha512-2U6yWKrjWjZO8Y5SHQxkFvMVWHQWbS0ufqfAIBROqmIZNubOL7jXCiVdEFekz6MZ9LF2tvYGnOW4jX8OKDGfIw== +"@aws-sdk/token-providers@3.744.0": + version "3.744.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.744.0.tgz#bedfda532cea4b28c323c5e0d23c7d974ce2ccc8" + integrity sha512-v/1+lWkDCd60Ei6oyhJqli6mTsPEVepLoSMB50vHUVlJP0fzXu/3FMje90/RzeUoh/VugZQJCEv/NNpuC6wztg== dependencies: - "@aws-sdk/nested-clients" "3.734.0" + "@aws-sdk/nested-clients" "3.744.0" "@aws-sdk/types" "3.734.0" "@smithy/property-provider" "^4.0.1" "@smithy/shared-ini-file-loader" "^4.0.1" @@ -513,10 +513,10 @@ "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@aws-sdk/util-endpoints@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.734.0.tgz#43bac42a21a45477a386ccf398028e7f793bc217" - integrity sha512-w2+/E88NUbqql6uCVAsmMxDQKu7vsKV0KqhlQb0lL+RCq4zy07yXYptVNs13qrnuTfyX7uPXkXrlugvK9R1Ucg== +"@aws-sdk/util-endpoints@3.743.0": + version "3.743.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.743.0.tgz#fba654e0c5f1c8ba2b3e175dfee8e3ba4df2394a" + integrity sha512-sN1l559zrixeh5x+pttrnd0A3+r34r0tmPkJ/eaaMaAzXqsmKU/xYre9K3FNnsSS1J1k4PEfk/nHDTVUgFYjnw== dependencies: "@aws-sdk/types" "3.734.0" "@smithy/types" "^4.1.0" @@ -540,12 +540,12 @@ bowser "^2.11.0" tslib "^2.6.2" -"@aws-sdk/util-user-agent-node@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.734.0.tgz#d5c6ee192cea9d53a871178a2669b8b4dea39a68" - integrity sha512-c6Iinh+RVQKs6jYUFQ64htOU2HUXFQ3TVx+8Tu3EDF19+9vzWi9UukhIMH9rqyyEXIAkk9XL7avt8y2Uyw2dGA== +"@aws-sdk/util-user-agent-node@3.744.0": + version "3.744.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.744.0.tgz#d2a5293d5036c95832020d596ce28d6899223971" + integrity sha512-BJURjwIXhNa4heXkLC0+GcL+8wVXaU7JoyW6ckdvp93LL+sVHeR1d5FxXZHQW/pMI4E3gNlKyBqjKaT75tObNQ== dependencies: - "@aws-sdk/middleware-user-agent" "3.734.0" + "@aws-sdk/middleware-user-agent" "3.744.0" "@aws-sdk/types" "3.734.0" "@smithy/node-config-provider" "^4.0.1" "@smithy/types" "^4.1.0" @@ -558,7 +558,7 @@ dependencies: tslib "^2.3.1" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.2": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.26.2": version "7.26.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== @@ -567,26 +567,27 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.26.5": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.5.tgz#df93ac37f4417854130e21d72c66ff3d4b897fc7" - integrity sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.26.5", "@babel/compat-data@^7.26.8": + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.8.tgz#821c1d35641c355284d4a870b8a4a7b0c141e367" + integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ== "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.21.3", "@babel/core@^7.23.5", "@babel/core@^7.23.9", "@babel/core@^7.24.0", "@babel/core@^7.26.0": - version "7.26.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.7.tgz#0439347a183b97534d52811144d763a17f9d2b24" - integrity sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA== + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.8.tgz#7742f11c75acea6b08a8e24c5c0c8c89e89bf53e" + integrity sha512-l+lkXCHS6tQEc5oUpK28xBOZ6+HwaH7YwoYQbLFiYb4nS2/l1tKnZEtEWkD0GuiYdvArf9qBS0XlQGXzPMsNqQ== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.26.5" + "@babel/generator" "^7.26.8" "@babel/helper-compilation-targets" "^7.26.5" "@babel/helper-module-transforms" "^7.26.0" "@babel/helpers" "^7.26.7" - "@babel/parser" "^7.26.7" - "@babel/template" "^7.25.9" - "@babel/traverse" "^7.26.7" - "@babel/types" "^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.0" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -594,21 +595,21 @@ semver "^6.3.1" "@babel/eslint-parser@^7.16.3", "@babel/eslint-parser@^7.23.10": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.26.5.tgz#aa669f4d873f9cd617050cf3c40c19cd96307efb" - integrity sha512-Kkm8C8uxI842AwQADxl0GbcG1rupELYLShazYEZO/2DYjhyWXJIOUVOE3tBYm6JXzUCNJOZEzqc4rCW/jsEQYQ== + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.26.8.tgz#55c4f4aae4970ae127f7a12369182ed6250e6f09" + integrity sha512-3tBctaHRW6xSub26z7n8uyOTwwUsCdvIug/oxBH9n6yCO5hMj2vwDJAo7RbBMKrM7P+W2j61zLKviJQFGOYKMg== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.26.5", "@babel/generator@^7.7.2": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.5.tgz#e44d4ab3176bbcaf78a5725da5f1dc28802a9458" - integrity sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw== +"@babel/generator@^7.26.8", "@babel/generator@^7.7.2": + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.8.tgz#f9c5e770309e12e3099ad8271e52f6caa15442ab" + integrity sha512-ef383X5++iZHWAXX0SXQR6ZyQhw/0KtTkrTz61WXRhFM6dhpHulO/RJz79L8S6ugZHJkOOkUrUdxgdF2YiPFnA== dependencies: - "@babel/parser" "^7.26.5" - "@babel/types" "^7.26.5" + "@babel/parser" "^7.26.8" + "@babel/types" "^7.26.8" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" @@ -759,12 +760,12 @@ "@babel/template" "^7.25.9" "@babel/types" "^7.26.7" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.8", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.9", "@babel/parser@^7.26.5", "@babel/parser@^7.26.7": - version "7.26.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.7.tgz#e114cd099e5f7d17b05368678da0fb9f69b3385c" - integrity sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.8", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.26.8": + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.8.tgz#deca2b4d99e5e1b1553843b99823f118da6107c2" + integrity sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw== dependencies: - "@babel/types" "^7.26.7" + "@babel/types" "^7.26.8" "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": version "7.25.9" @@ -1015,14 +1016,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-async-generator-functions@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz#1b18530b077d18a407c494eb3d1d72da505283a2" - integrity sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw== +"@babel/plugin-transform-async-generator-functions@^7.26.8": + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz#5e3991135e3b9c6eaaf5eff56d1ae5a11df45ff8" + integrity sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.26.5" "@babel/helper-remap-async-to-generator" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/traverse" "^7.26.8" "@babel/plugin-transform-async-to-generator@^7.25.9": version "7.25.9" @@ -1384,12 +1385,12 @@ "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-runtime@^7.16.4": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz#62723ea3f5b31ffbe676da9d6dae17138ae580ea" - integrity sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ== + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.8.tgz#e025e062c08809db61de7e249193a8de1bc83092" + integrity sha512-H0jlQxFMI0Q8SyGPsj9pO3ygVQRxPkIGytsL3m1Zqca8KrCPpMlvh+e2dxknqdfS8LFwBw+PpiYPD9qy/FPQpA== dependencies: "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.26.5" babel-plugin-polyfill-corejs2 "^0.4.10" babel-plugin-polyfill-corejs3 "^0.10.6" babel-plugin-polyfill-regenerator "^0.6.1" @@ -1417,12 +1418,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-template-literals@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz#6dbd4a24e8fad024df76d1fac6a03cf413f60fe1" - integrity sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw== +"@babel/plugin-transform-template-literals@^7.26.8": + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz#966b15d153a991172a540a69ad5e1845ced990b5" + integrity sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.26.5" "@babel/plugin-transform-typeof-symbol@^7.26.7": version "7.26.7" @@ -1432,9 +1433,9 @@ "@babel/helper-plugin-utils" "^7.26.5" "@babel/plugin-transform-typescript@^7.25.9": - version "7.26.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.7.tgz#64339515ea3eff610160f62499c3ef437d0ac83d" - integrity sha512-5cJurntg+AT+cgelGP9Bt788DKiAw9gIMSMU2NJrLAilnj0m8WZWUNZPSLOmadYsujHutpgElO+50foX+ib/Wg== + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.8.tgz#2e9caa870aa102f50d7125240d9dbf91334b0950" + integrity sha512-bME5J9AC8ChwA7aEPJ6zym3w7aObZULHhbNLU0bKUhKsAkylkzUdq+0kdymh9rzi8nlNFl2bmldFBCKNJBUpuw== dependencies: "@babel/helper-annotate-as-pure" "^7.25.9" "@babel/helper-create-class-features-plugin" "^7.25.9" @@ -1474,11 +1475,11 @@ "@babel/helper-plugin-utils" "^7.25.9" "@babel/preset-env@^7.16.4", "@babel/preset-env@^7.24.3": - version "7.26.7" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.26.7.tgz#24d38e211f4570b8d806337035cc3ae798e0c36d" - integrity sha512-Ycg2tnXwixaXOVb29rana8HNPgLVBof8qqtNQ9LE22IoyZboQbGSxI6ZySMdW3K5nAe6gu35IaJefUJflhUFTQ== + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.26.8.tgz#7af0090829b606d2046db99679004731e1dc364d" + integrity sha512-um7Sy+2THd697S4zJEfv/U5MHGJzkN2xhtsR3T/SWRbVSic62nbISh51VVfU9JiO/L/Z97QczHTaFVkOU8IzNg== dependencies: - "@babel/compat-data" "^7.26.5" + "@babel/compat-data" "^7.26.8" "@babel/helper-compilation-targets" "^7.26.5" "@babel/helper-plugin-utils" "^7.26.5" "@babel/helper-validator-option" "^7.25.9" @@ -1492,7 +1493,7 @@ "@babel/plugin-syntax-import-attributes" "^7.26.0" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" "@babel/plugin-transform-arrow-functions" "^7.25.9" - "@babel/plugin-transform-async-generator-functions" "^7.25.9" + "@babel/plugin-transform-async-generator-functions" "^7.26.8" "@babel/plugin-transform-async-to-generator" "^7.25.9" "@babel/plugin-transform-block-scoped-functions" "^7.26.5" "@babel/plugin-transform-block-scoping" "^7.25.9" @@ -1535,7 +1536,7 @@ "@babel/plugin-transform-shorthand-properties" "^7.25.9" "@babel/plugin-transform-spread" "^7.25.9" "@babel/plugin-transform-sticky-regex" "^7.25.9" - "@babel/plugin-transform-template-literals" "^7.25.9" + "@babel/plugin-transform-template-literals" "^7.26.8" "@babel/plugin-transform-typeof-symbol" "^7.26.7" "@babel/plugin-transform-unicode-escapes" "^7.25.9" "@babel/plugin-transform-unicode-property-regex" "^7.25.9" @@ -1543,9 +1544,9 @@ "@babel/plugin-transform-unicode-sets-regex" "^7.25.9" "@babel/preset-modules" "0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.6" + babel-plugin-polyfill-corejs3 "^0.11.0" babel-plugin-polyfill-regenerator "^0.6.1" - core-js-compat "^3.38.1" + core-js-compat "^3.40.0" semver "^6.3.1" "@babel/preset-modules@0.1.6-no-external-plugins": @@ -1595,32 +1596,32 @@ dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.25.9", "@babel/template@^7.3.3": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" - integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== +"@babel/template@^7.25.9", "@babel/template@^7.26.8", "@babel/template@^7.3.3": + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.26.8.tgz#db3898f47a17bab2f4c78ec1d0de38527c2ffe19" + integrity sha512-iNKaX3ZebKIsCvJ+0jd6embf+Aulaa3vNBqZ41kM7iTWjx5qzWKXGHiJUW3+nTpQ18SG11hdF8OAzKrpXkb96Q== dependencies: - "@babel/code-frame" "^7.25.9" - "@babel/parser" "^7.25.9" - "@babel/types" "^7.25.9" + "@babel/code-frame" "^7.26.2" + "@babel/parser" "^7.26.8" + "@babel/types" "^7.26.8" -"@babel/traverse@^7.16.8", "@babel/traverse@^7.25.9", "@babel/traverse@^7.26.5", "@babel/traverse@^7.26.7": - version "7.26.7" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.7.tgz#99a0a136f6a75e7fb8b0a1ace421e0b25994b8bb" - integrity sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA== +"@babel/traverse@^7.16.8", "@babel/traverse@^7.25.9", "@babel/traverse@^7.26.5", "@babel/traverse@^7.26.8": + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.8.tgz#0a8a9c2b7cc9519eed14275f4fd2278ad46e8cc9" + integrity sha512-nic9tRkjYH0oB2dzr/JoGIm+4Q6SuYeLEiIiZDwBscRMYFJ+tMAz98fuel9ZnbXViA2I0HVSSRRK8DW5fjXStA== dependencies: "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.26.5" - "@babel/parser" "^7.26.7" - "@babel/template" "^7.25.9" - "@babel/types" "^7.26.7" + "@babel/generator" "^7.26.8" + "@babel/parser" "^7.26.8" + "@babel/template" "^7.26.8" + "@babel/types" "^7.26.8" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.16.8", "@babel/types@^7.20.7", "@babel/types@^7.21.3", "@babel/types@^7.25.9", "@babel/types@^7.26.5", "@babel/types@^7.26.7", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.26.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.7.tgz#5e2b89c0768e874d4d061961f3a5a153d71dc17a" - integrity sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg== +"@babel/types@^7.0.0", "@babel/types@^7.16.8", "@babel/types@^7.20.7", "@babel/types@^7.21.3", "@babel/types@^7.25.9", "@babel/types@^7.26.7", "@babel/types@^7.26.8", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.8.tgz#97dcdc190fab45be7f3dc073e3c11160d677c127" + integrity sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA== dependencies: "@babel/helper-string-parser" "^7.25.9" "@babel/helper-validator-identifier" "^7.25.9" @@ -1645,6 +1646,16 @@ eventemitter3 "^5.0.1" preact "^10.24.2" +"@coinbase/wallet-sdk@4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-4.3.0.tgz#03b8fce92ac2b3b7cf132f64d6008ac081569b4e" + integrity sha512-T3+SNmiCw4HzDm4we9wCHCxlP0pqCiwKe4sOwPH3YAK2KSKjxPRydKu6UQJrdONFVLG7ujXvbd/6ZqmvJb8rkw== + dependencies: + "@noble/hashes" "^1.4.0" + clsx "^1.2.1" + eventemitter3 "^5.0.1" + preact "^10.24.2" + "@colors/colors@1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" @@ -2393,6 +2404,11 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" +"@faker-js/faker@^9.4.0": + version "9.5.0" + resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-9.5.0.tgz#ce254c83706250ca8a5a0e05683608160610dd84" + integrity sha512-3qbjLv+fzuuCg3umxc9/7YjrEXNaKwHgmig949nfyaTx8eL4FAsvFbu+1JcFUj1YAXofhaDn6JdEUBTYuk0Ssw== + "@float-capital/float-subgraph-uncrashable@^0.0.0-alpha.4": version "0.0.0-internal-testing.5" resolved "https://registry.yarnpkg.com/@float-capital/float-subgraph-uncrashable/-/float-subgraph-uncrashable-0.0.0-internal-testing.5.tgz#060f98440f6e410812766c5b040952d2d02e2b73" @@ -2757,9 +2773,9 @@ integrity sha512-lpxQGKFFPf5fzieY6Z1Hik5zGvXu6GGUnZdmjeGWB+OjzY2ucTPxfN3biPCfy18Od6YKdkkSUZUyteVLdUbigA== "@hcaptcha/react-hcaptcha@^1.10.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@hcaptcha/react-hcaptcha/-/react-hcaptcha-1.11.1.tgz#cc0dd0b180b3458ca7b0f8cf1446f09afca2ec55" - integrity sha512-g6TwatNIzBtOR3RM4mxzvTUQGs5T9HMN+4fcNGHn7wUVThvmazThUs0vImI836bSkGpJS8n0rOYvv1UZ47q8Vw== + version "1.11.2" + resolved "https://registry.yarnpkg.com/@hcaptcha/react-hcaptcha/-/react-hcaptcha-1.11.2.tgz#269556e312e579d0443084b00e3edc196a638757" + integrity sha512-F6+aZknrpTHoAhKIP80wWNJI5nhOJg0qyazM3pAw0bCyvVLSsveWeZyTK7W8EhO6nvovTE061gehlC+bmS/vMw== dependencies: "@babel/runtime" "^7.17.9" "@hcaptcha/loader" "^1.2.1" @@ -3104,11 +3120,11 @@ "@lit-labs/ssr-dom-shim" "^1.2.0" "@ljharb/through@^2.3.12": - version "2.3.13" - resolved "https://registry.yarnpkg.com/@ljharb/through/-/through-2.3.13.tgz#b7e4766e0b65aa82e529be945ab078de79874edc" - integrity sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ== + version "2.3.14" + resolved "https://registry.yarnpkg.com/@ljharb/through/-/through-2.3.14.tgz#a5df44295f44dc23bfe106af59426dd0677760b1" + integrity sha512-ajBvlKpWucBB17FuQYUShqpqy8GRgYEpJW0vWJbUu1CV9lWyrDCapy0lScU8T8Z6qn49sSwJB3+M+evYIdGg+A== dependencies: - call-bind "^1.0.7" + call-bind "^1.0.8" "@lukeed/csprng@^1.0.0": version "1.1.0" @@ -3469,9 +3485,9 @@ integrity sha512-sbjXW+BBSvmzn61XyTMun899E7nGPTXwqD9drm1jBUAvWEhJpPFIRxwQQiATWZnd9rvdxtnhhdsDxEGWI0jxqA== "@mui/icons-material@^6.2.0", "@mui/icons-material@^6.3.1": - version "6.4.3" - resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-6.4.3.tgz#11f275781f442f864ca5522a6196a0a17cc063ea" - integrity sha512-3IY9LpjkwIJVgL/SkZQKKCUcumdHdQEsJaIavvsQze2QEztBt0HJ17naToN0DBBdhKdtwX5xXrfD6ZFUeWWk8g== + version "6.4.4" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-6.4.4.tgz#cbc2c9e9c9bbb66f4062085dc69c0b886cd7f888" + integrity sha512-uF1chGaoFmYdRUomK6f8kgJfWosk9A3HXWiVD0vQm+2mE7f25eTQ1E8RRO11LXpnUBqu8Rbv/uGlpnjT/u1Ksg== dependencies: "@babel/runtime" "^7.26.0" @@ -3580,34 +3596,35 @@ react-is "^19.0.0" "@mui/x-data-grid@^7.23.2": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@mui/x-data-grid/-/x-data-grid-7.25.0.tgz#04617d72ad86ce7fac256834ca2c7f04228b6c88" - integrity sha512-e9ZLbCgnDiADFiDyXo91ucZFHEMkKBNpwpkaTq5KohzefJfMpMQjTEbJeueSfBG2G1Q1Am2TPeBqrNeReIA7RQ== + version "7.26.0" + resolved "https://registry.yarnpkg.com/@mui/x-data-grid/-/x-data-grid-7.26.0.tgz#6e516bc215633213ff040e1dfb7a88f4b3a02613" + integrity sha512-9RNQeT2OL6jBOCE0MSUH11ol3fV5Zs9MkGxUIAGXcy/Fui0rZRNFO1yLmWDZU5yvskiNmUZJHWV/qXh++ZFarA== dependencies: "@babel/runtime" "^7.25.7" "@mui/utils" "^5.16.6 || ^6.0.0" - "@mui/x-internals" "7.25.0" + "@mui/x-internals" "7.26.0" clsx "^2.1.1" prop-types "^15.8.1" reselect "^5.1.1" + use-sync-external-store "^1.0.0" "@mui/x-date-pickers@^7.23.6": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@mui/x-date-pickers/-/x-date-pickers-7.25.0.tgz#3cbd6733e84061bf1643571248de217f24075027" - integrity sha512-t62OSFAKwj7KYQ8KcwTuKj6OgDuLQPSe4QUJcKDzD9rEhRIJVRUw2x27gBSdcls4l0PTrba19TghvDxCZprriw== + version "7.26.0" + resolved "https://registry.yarnpkg.com/@mui/x-date-pickers/-/x-date-pickers-7.26.0.tgz#f6d928db771a81d2e53e79ec7ff5b134b60a908b" + integrity sha512-bhSDce1b5MBYYlCdHQJBThe10LGTE3D/u53TDQ41+IRj+iiNCun8jivw3DxKhmoBxlB+hVdkcltpTtIGlPjQZQ== dependencies: "@babel/runtime" "^7.25.7" "@mui/utils" "^5.16.6 || ^6.0.0" - "@mui/x-internals" "7.25.0" + "@mui/x-internals" "7.26.0" "@types/react-transition-group" "^4.4.11" clsx "^2.1.1" prop-types "^15.8.1" react-transition-group "^4.4.5" -"@mui/x-internals@7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@mui/x-internals/-/x-internals-7.25.0.tgz#981a5365391190ab3aa0e9c7a346315b3d1f621c" - integrity sha512-tBUN54YznAkmtCIRAOl35Kgl0MjFDIjUbzIrbWRgVSIR3QJ8bXnVSkiRBi+P91SZEl9+ZW0rDj+osq7xFJV0kg== +"@mui/x-internals@7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@mui/x-internals/-/x-internals-7.26.0.tgz#e8c3060582c102127ab55b0a93e881930dac107b" + integrity sha512-VxTCYQcZ02d3190pdvys2TDg9pgbvewAVakEopiOgReKAUhLdRlgGJHcOA/eAuGLyK1YIo26A6Ow6ZKlSRLwMg== dependencies: "@babel/runtime" "^7.25.7" "@mui/utils" "^5.16.6 || ^6.0.0" @@ -4200,30 +4217,30 @@ resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-5.0.2.tgz#b1d03075e49290d06570b2fd42154d76c2a5d210" integrity sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA== -"@openzeppelin/defender-sdk-base-client@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-base-client/-/defender-sdk-base-client-2.1.0.tgz#f4f969fb327068c1024ba61b10a24f88cffdeece" - integrity sha512-YxrOgjESsbmxArLoe8kRA6lKwz/Qm/OtaZBfquzAg+w0jgOG9ogFuXA3NI6w2sVw1w/PzI1dWKe30u62p5vLXw== +"@openzeppelin/defender-sdk-base-client@^2.1.0", "@openzeppelin/defender-sdk-base-client@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-base-client/-/defender-sdk-base-client-2.2.0.tgz#015b1b11352a9fa56a4d626ac180926c7212fce6" + integrity sha512-aZm8aP7HCcaczzO54JiOVZ6kmwoog1qmajwDGU+DJGshszYwy2x3TRtnRG1tyfAXmeu8yNSOpP5N+fuTt8X5rg== dependencies: "@aws-sdk/client-lambda" "^3.563.0" amazon-cognito-identity-js "^6.3.6" async-retry "^1.3.3" "@openzeppelin/defender-sdk-deploy-client@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-deploy-client/-/defender-sdk-deploy-client-2.1.0.tgz#02cfa27041c50f79694103c5ba80f0631375f481" - integrity sha512-tg1EIqFVQ59UNbEV7a5XHVvsGM1dL0tVrwXMB4EzlDnDRS70l6jjeCgl6d0SUQqK8Cob1AzjdLn9+Ax+oFcceQ== + version "2.2.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-deploy-client/-/defender-sdk-deploy-client-2.2.0.tgz#509d30a4a5c065eb08aeea4ac0430c1029a34504" + integrity sha512-7LWY6DwHOjI0VlgvAVbPV4udWm3Q4de58EMLQvm1DG6eAaXIIZtfd3tV4mk6MYVLgBaiRbtSX0L9F9LH4p17OA== dependencies: - "@openzeppelin/defender-sdk-base-client" "^2.1.0" + "@openzeppelin/defender-sdk-base-client" "^2.2.0" axios "^1.7.4" lodash "^4.17.21" "@openzeppelin/defender-sdk-network-client@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-network-client/-/defender-sdk-network-client-2.1.0.tgz#6486fff52f3531604e325e4887839e020c127755" - integrity sha512-ebtSmihHMlcjFTtXyB/IFr+CjCcjdW0nV+ijG24SNnRvOaHn2BNORs6CwhdEZc8ok9YHWnKouGKdfzmxX+mp/A== + version "2.2.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-network-client/-/defender-sdk-network-client-2.2.0.tgz#51ea4117498dcd5a42926ffb343c31828e5cbb51" + integrity sha512-d8sCjRBTEek+LKog2zVY3rtYVN8BsVGFcEh5g6VLJV3Ljmdf5SppjP6WPFlD7+IRKqmpiZ3R4EdzuhqOKMKKMA== dependencies: - "@openzeppelin/defender-sdk-base-client" "^2.1.0" + "@openzeppelin/defender-sdk-base-client" "^2.2.0" axios "^1.7.4" lodash "^4.17.21" @@ -4666,100 +4683,100 @@ estree-walker "^2.0.2" picomatch "^4.0.2" -"@rollup/rollup-android-arm-eabi@4.34.4": - version "4.34.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.4.tgz#186addf2d9da1df57c69394f8eb74d40cc833686" - integrity sha512-gGi5adZWvjtJU7Axs//CWaQbQd/vGy8KGcnEaCWiyCqxWYDxwIlAHFuSe6Guoxtd0SRvSfVTDMPd5H+4KE2kKA== - -"@rollup/rollup-android-arm64@4.34.4": - version "4.34.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.4.tgz#88d8b13c7a42231f22ac26d0abb1ad4dd8d88535" - integrity sha512-1aRlh1gqtF7vNPMnlf1vJKk72Yshw5zknR/ZAVh7zycRAGF2XBMVDAHmFQz/Zws5k++nux3LOq/Ejj1WrDR6xg== - -"@rollup/rollup-darwin-arm64@4.34.4": - version "4.34.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.4.tgz#a8a1fbc658f86d2d2283d6b1b5b8f0c2fd117dbc" - integrity sha512-drHl+4qhFj+PV/jrQ78p9ch6A0MfNVZScl/nBps5a7u01aGf/GuBRrHnRegA9bP222CBDfjYbFdjkIJ/FurvSQ== - -"@rollup/rollup-darwin-x64@4.34.4": - version "4.34.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.4.tgz#116e2186564f5c26db819cea20248e310761d7ec" - integrity sha512-hQqq/8QALU6t1+fbNmm6dwYsa0PDD4L5r3TpHx9dNl+aSEMnIksHZkSO3AVH+hBMvZhpumIGrTFj8XCOGuIXjw== - -"@rollup/rollup-freebsd-arm64@4.34.4": - version "4.34.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.4.tgz#38d0db29f2fafa64fc6d082fd952617684742bf7" - integrity sha512-/L0LixBmbefkec1JTeAQJP0ETzGjFtNml2gpQXA8rpLo7Md+iXQzo9kwEgzyat5Q+OG/C//2B9Fx52UxsOXbzw== - -"@rollup/rollup-freebsd-x64@4.34.4": - version "4.34.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.4.tgz#4ec412756d87ea1cd6adae36b52796bffbc9625d" - integrity sha512-6Rk3PLRK+b8L/M6m/x6Mfj60LhAUcLJ34oPaxufA+CfqkUrDoUPQYFdRrhqyOvtOKXLJZJwxlOLbQjNYQcRQfw== - -"@rollup/rollup-linux-arm-gnueabihf@4.34.4": - version "4.34.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.4.tgz#48abd91a8829048221cded46d88edc0fa20797a3" - integrity sha512-kmT3x0IPRuXY/tNoABp2nDvI9EvdiS2JZsd4I9yOcLCCViKsP0gB38mVHOhluzx+SSVnM1KNn9k6osyXZhLoCA== - -"@rollup/rollup-linux-arm-musleabihf@4.34.4": - version "4.34.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.4.tgz#be3ea31aa56c0d0329572ca898bdb8ad6c82b522" - integrity sha512-3iSA9tx+4PZcJH/Wnwsvx/BY4qHpit/u2YoZoXugWVfc36/4mRkgGEoRbRV7nzNBSCOgbWMeuQ27IQWgJ7tRzw== - -"@rollup/rollup-linux-arm64-gnu@4.34.4": - version "4.34.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.4.tgz#0ad274a83f8366b3c434b4ee4c109e3e89942f72" - integrity sha512-7CwSJW+sEhM9sESEk+pEREF2JL0BmyCro8UyTq0Kyh0nu1v0QPNY3yfLPFKChzVoUmaKj8zbdgBxUhBRR+xGxg== - -"@rollup/rollup-linux-arm64-musl@4.34.4": - version "4.34.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.4.tgz#05da429ff2975c2ba6b766354bd6588371eddf2a" - integrity sha512-GZdafB41/4s12j8Ss2izofjeFXRAAM7sHCb+S4JsI9vaONX/zQ8cXd87B9MRU/igGAJkKvmFmJJBeeT9jJ5Cbw== - -"@rollup/rollup-linux-loongarch64-gnu@4.34.4": - version "4.34.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.4.tgz#eb2af43af6456235e1dc097e0a06d058e87603cb" - integrity sha512-uuphLuw1X6ur11675c2twC6YxbzyLSpWggvdawTUamlsoUv81aAXRMPBC1uvQllnBGls0Qt5Siw8reSIBnbdqQ== - -"@rollup/rollup-linux-powerpc64le-gnu@4.34.4": - version "4.34.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.4.tgz#f52928672c40c8a8a30f46edf8eeb72d2b5560ab" - integrity sha512-KvLEw1os2gSmD6k6QPCQMm2T9P2GYvsMZMRpMz78QpSoEevHbV/KOUbI/46/JRalhtSAYZBYLAnT9YE4i/l4vg== - -"@rollup/rollup-linux-riscv64-gnu@4.34.4": - version "4.34.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.4.tgz#ec9fce2a5d221517a4aad8e657ee2951d4709e8d" - integrity sha512-wcpCLHGM9yv+3Dql/CI4zrY2mpQ4WFergD3c9cpRowltEh5I84pRT/EuHZsG0In4eBPPYthXnuR++HrFkeqwkA== - -"@rollup/rollup-linux-s390x-gnu@4.34.4": - version "4.34.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.4.tgz#a6d303c937fb1a49b7aa44ab32be6d61bb571f59" - integrity sha512-nLbfQp2lbJYU8obhRQusXKbuiqm4jSJteLwfjnunDT5ugBKdxqw1X9KWwk8xp1OMC6P5d0WbzxzhWoznuVK6XA== - -"@rollup/rollup-linux-x64-gnu@4.34.4": - version "4.34.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.4.tgz#5d58ee6c68e160754a9b5950156308b8a5eaa18f" - integrity sha512-JGejzEfVzqc/XNiCKZj14eb6s5w8DdWlnQ5tWUbs99kkdvfq9btxxVX97AaxiUX7xJTKFA0LwoS0KU8C2faZRg== - -"@rollup/rollup-linux-x64-musl@4.34.4": - version "4.34.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.4.tgz#ba3d117d0c36502b448936dba001579df9dc549a" - integrity sha512-/iFIbhzeyZZy49ozAWJ1ZR2KW6ZdYUbQXLT4O5n1cRZRoTpwExnHLjlurDXXPKEGxiAg0ujaR9JDYKljpr2fDg== - -"@rollup/rollup-win32-arm64-msvc@4.34.4": - version "4.34.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.4.tgz#33423f0b5e763aa79d9ef14aed9e22c3217a5051" - integrity sha512-qORc3UzoD5UUTneiP2Afg5n5Ti1GAW9Gp5vHPxzvAFFA3FBaum9WqGvYXGf+c7beFdOKNos31/41PRMUwh1tpA== - -"@rollup/rollup-win32-ia32-msvc@4.34.4": - version "4.34.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.4.tgz#6b31c29ae32721f422d03bfaf7a865a464d9c85b" - integrity sha512-5g7E2PHNK2uvoD5bASBD9aelm44nf1w4I5FEI7MPHLWcCSrR8JragXZWgKPXk5i2FU3JFfa6CGZLw2RrGBHs2Q== - -"@rollup/rollup-win32-x64-msvc@4.34.4": - version "4.34.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.4.tgz#21f0d5e44e4ac7d9b6510bef283faace629c6f7e" - integrity sha512-p0scwGkR4kZ242xLPBuhSckrJ734frz6v9xZzD+kHVYRAkSUmdSLCIJRfql6H5//aF8Q10K+i7q8DiPfZp0b7A== +"@rollup/rollup-android-arm-eabi@4.34.6": + version "4.34.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.6.tgz#9b726b4dcafb9332991e9ca49d54bafc71d9d87f" + integrity sha512-+GcCXtOQoWuC7hhX1P00LqjjIiS/iOouHXhMdiDSnq/1DGTox4SpUvO52Xm+div6+106r+TcvOeo/cxvyEyTgg== + +"@rollup/rollup-android-arm64@4.34.6": + version "4.34.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.6.tgz#88326ff46168a47851077ca0bf0c442689ec088f" + integrity sha512-E8+2qCIjciYUnCa1AiVF1BkRgqIGW9KzJeesQqVfyRITGQN+dFuoivO0hnro1DjT74wXLRZ7QF8MIbz+luGaJA== + +"@rollup/rollup-darwin-arm64@4.34.6": + version "4.34.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.6.tgz#b8fbcc9389bc6fad3334a1d16dbeaaa5637c5772" + integrity sha512-z9Ib+OzqN3DZEjX7PDQMHEhtF+t6Mi2z/ueChQPLS/qUMKY7Ybn5A2ggFoKRNRh1q1T03YTQfBTQCJZiepESAg== + +"@rollup/rollup-darwin-x64@4.34.6": + version "4.34.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.6.tgz#1aa2bcad84c0fb5902e945d88822e17a4f661d51" + integrity sha512-PShKVY4u0FDAR7jskyFIYVyHEPCPnIQY8s5OcXkdU8mz3Y7eXDJPdyM/ZWjkYdR2m0izD9HHWA8sGcXn+Qrsyg== + +"@rollup/rollup-freebsd-arm64@4.34.6": + version "4.34.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.6.tgz#29c54617e0929264dcb6416597d6d7481696e49f" + integrity sha512-YSwyOqlDAdKqs0iKuqvRHLN4SrD2TiswfoLfvYXseKbL47ht1grQpq46MSiQAx6rQEN8o8URtpXARCpqabqxGQ== + +"@rollup/rollup-freebsd-x64@4.34.6": + version "4.34.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.6.tgz#a8b58ab7d31882559d93f2d1b5863d9e4b4b2678" + integrity sha512-HEP4CgPAY1RxXwwL5sPFv6BBM3tVeLnshF03HMhJYCNc6kvSqBgTMmsEjb72RkZBAWIqiPUyF1JpEBv5XT9wKQ== + +"@rollup/rollup-linux-arm-gnueabihf@4.34.6": + version "4.34.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.6.tgz#a844e1978c8b9766b169ecb1cb5cc0d8a3f05930" + integrity sha512-88fSzjC5xeH9S2Vg3rPgXJULkHcLYMkh8faix8DX4h4TIAL65ekwuQMA/g2CXq8W+NJC43V6fUpYZNjaX3+IIg== + +"@rollup/rollup-linux-arm-musleabihf@4.34.6": + version "4.34.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.6.tgz#6b44c3b7257985d71b087fcb4ef01325e2fff201" + integrity sha512-wM4ztnutBqYFyvNeR7Av+reWI/enK9tDOTKNF+6Kk2Q96k9bwhDDOlnCUNRPvromlVXo04riSliMBs/Z7RteEg== + +"@rollup/rollup-linux-arm64-gnu@4.34.6": + version "4.34.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.6.tgz#ebb499cf1720115256d0c9ae7598c90cc2251bc5" + integrity sha512-9RyprECbRa9zEjXLtvvshhw4CMrRa3K+0wcp3KME0zmBe1ILmvcVHnypZ/aIDXpRyfhSYSuN4EPdCCj5Du8FIA== + +"@rollup/rollup-linux-arm64-musl@4.34.6": + version "4.34.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.6.tgz#9658221b59d9e5643348f9a52fa5ef35b4dc07b1" + integrity sha512-qTmklhCTyaJSB05S+iSovfo++EwnIEZxHkzv5dep4qoszUMX5Ca4WM4zAVUMbfdviLgCSQOu5oU8YoGk1s6M9Q== + +"@rollup/rollup-linux-loongarch64-gnu@4.34.6": + version "4.34.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.6.tgz#19418cc57579a5655af2d850a89d74b3f7e9aa92" + integrity sha512-4Qmkaps9yqmpjY5pvpkfOerYgKNUGzQpFxV6rnS7c/JfYbDSU0y6WpbbredB5cCpLFGJEqYX40WUmxMkwhWCjw== + +"@rollup/rollup-linux-powerpc64le-gnu@4.34.6": + version "4.34.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.6.tgz#fe0bce7778cb6ce86898c781f3f11369d1a4952c" + integrity sha512-Zsrtux3PuaxuBTX/zHdLaFmcofWGzaWW1scwLU3ZbW/X+hSsFbz9wDIp6XvnT7pzYRl9MezWqEqKy7ssmDEnuQ== + +"@rollup/rollup-linux-riscv64-gnu@4.34.6": + version "4.34.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.6.tgz#9c158360abf6e6f7794285642ba0898c580291f6" + integrity sha512-aK+Zp+CRM55iPrlyKiU3/zyhgzWBxLVrw2mwiQSYJRobCURb781+XstzvA8Gkjg/hbdQFuDw44aUOxVQFycrAg== + +"@rollup/rollup-linux-s390x-gnu@4.34.6": + version "4.34.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.6.tgz#f9113498d22962baacdda008b5587d568b05aa34" + integrity sha512-WoKLVrY9ogmaYPXwTH326+ErlCIgMmsoRSx6bO+l68YgJnlOXhygDYSZe/qbUJCSiCiZAQ+tKm88NcWuUXqOzw== + +"@rollup/rollup-linux-x64-gnu@4.34.6": + version "4.34.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.6.tgz#aec8d4cdf911cd869a72b8bd00833cb426664e0c" + integrity sha512-Sht4aFvmA4ToHd2vFzwMFaQCiYm2lDFho5rPcvPBT5pCdC+GwHG6CMch4GQfmWTQ1SwRKS0dhDYb54khSrjDWw== + +"@rollup/rollup-linux-x64-musl@4.34.6": + version "4.34.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.6.tgz#61c0a146bdd1b5e0dcda33690dd909b321d8f20f" + integrity sha512-zmmpOQh8vXc2QITsnCiODCDGXFC8LMi64+/oPpPx5qz3pqv0s6x46ps4xoycfUiVZps5PFn1gksZzo4RGTKT+A== + +"@rollup/rollup-win32-arm64-msvc@4.34.6": + version "4.34.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.6.tgz#c6c5bf290a3a459c18871110bc2e7009ce35b15a" + integrity sha512-3/q1qUsO/tLqGBaD4uXsB6coVGB3usxw3qyeVb59aArCgedSF66MPdgRStUd7vbZOsko/CgVaY5fo2vkvPLWiA== + +"@rollup/rollup-win32-ia32-msvc@4.34.6": + version "4.34.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.6.tgz#16ca6bdadc9e054818b9c51f8dac82f6b8afab81" + integrity sha512-oLHxuyywc6efdKVTxvc0135zPrRdtYVjtVD5GUm55I3ODxhU/PwkQFD97z16Xzxa1Fz0AEe4W/2hzRtd+IfpOA== + +"@rollup/rollup-win32-x64-msvc@4.34.6": + version "4.34.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.6.tgz#f3d03ce2d82723eb089188ea1494a719b09e1561" + integrity sha512-0PVwmgzZ8+TZ9oGBmdZoQVXflbvuwzN/HRclujpl4N/q3i+y0lqLw8n1bXA8ru3sApDjlmONaNAuYr38y1Kr9w== "@rtsao/scc@^1.1.0": version "1.1.0" @@ -5037,7 +5054,7 @@ "@smithy/util-middleware" "^4.0.1" tslib "^2.6.2" -"@smithy/core@^3.1.1", "@smithy/core@^3.1.2": +"@smithy/core@^3.1.2": version "3.1.2" resolved "https://registry.yarnpkg.com/@smithy/core/-/core-3.1.2.tgz#f5b4c89bf054b717781d71c66b4fb594e06cbb62" integrity sha512-htwQXkbdF13uwwDevz9BEzL5ABK+1sJpVQXywwGSH973AVOvisHNfpcB8A8761G6XgHoS2kHPqc9DqHJ2gp+/Q== @@ -5159,7 +5176,7 @@ "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@smithy/middleware-endpoint@^4.0.2", "@smithy/middleware-endpoint@^4.0.3": +"@smithy/middleware-endpoint@^4.0.3": version "4.0.3" resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-4.0.3.tgz#74b64fb2473ae35649a8d22d41708bc5d8d99df2" integrity sha512-YdbmWhQF5kIxZjWqPIgboVfi8i5XgiYMM7GGKFMTvBei4XjNQfNv8sukT50ITvgnWKKKpOtp0C0h7qixLgb77Q== @@ -5173,7 +5190,7 @@ "@smithy/util-middleware" "^4.0.1" tslib "^2.6.2" -"@smithy/middleware-retry@^4.0.3": +"@smithy/middleware-retry@^4.0.4": version "4.0.4" resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-4.0.4.tgz#95e55a1b163ff06264f20b4dbbcbd915c8028f60" integrity sha512-wmxyUBGHaYUqul0wZiset4M39SMtDBOtUr2KpDuftKNN74Do9Y36Go6Eqzj9tL0mIPpr31ulB5UUtxcsCeGXsQ== @@ -5188,7 +5205,7 @@ tslib "^2.6.2" uuid "^9.0.1" -"@smithy/middleware-serde@^4.0.1", "@smithy/middleware-serde@^4.0.2": +"@smithy/middleware-serde@^4.0.2": version "4.0.2" resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-4.0.2.tgz#f792d72f6ad8fa6b172e3f19c6fe1932a856a56d" integrity sha512-Sdr5lOagCn5tt+zKsaW+U2/iwr6bI9p08wOkCp6/eL6iMbgdtc2R5Ety66rf87PeohR0ExI84Txz9GYv5ou3iQ== @@ -5287,7 +5304,7 @@ "@smithy/util-utf8" "^4.0.0" tslib "^2.6.2" -"@smithy/smithy-client@^4.1.2", "@smithy/smithy-client@^4.1.3": +"@smithy/smithy-client@^4.1.3": version "4.1.3" resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-4.1.3.tgz#2c8f9aff3377e7655cebe84239da6be277ba8554" integrity sha512-A2Hz85pu8BJJaYFdX8yb1yocqigyqBzn+OVaVgm+Kwi/DkN8vhN2kbDVEfADo6jXf5hPKquMLGA3UINA64UZ7A== @@ -5362,7 +5379,7 @@ dependencies: tslib "^2.6.2" -"@smithy/util-defaults-mode-browser@^4.0.3": +"@smithy/util-defaults-mode-browser@^4.0.4": version "4.0.4" resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.4.tgz#6fa7ba64a80a77f27b9b5c6972918904578b8d5b" integrity sha512-Ej1bV5sbrIfH++KnWxjjzFNq9nyP3RIUq2c9Iqq7SmMO/idUR24sqvKH2LUQFTSPy/K7G4sB2m8n7YYlEAfZaw== @@ -5373,7 +5390,7 @@ bowser "^2.11.0" tslib "^2.6.2" -"@smithy/util-defaults-mode-node@^4.0.3": +"@smithy/util-defaults-mode-node@^4.0.4": version "4.0.4" resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.4.tgz#5470fdc96672cee5199620b576d7025de3b17333" integrity sha512-HE1I7gxa6yP7ZgXPCFfZSDmVmMtY7SHqzFF55gM/GPegzZKaQWZZ+nYn9C2Cc3JltCMyWe63VPR3tSFDEvuGjw== @@ -5715,9 +5732,9 @@ integrity sha512-Oa3vVDq8Um2lJ2L1nG/vCPdOzTF6ccgbizrtaLPf/37VjbiLr4CGb1fVqMhzsMFs0niK4qL97NZni7DR/8nDmg== "@tanstack/eslint-plugin-query@^5.60.1": - version "5.66.0" - resolved "https://registry.yarnpkg.com/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.66.0.tgz#c4537d62ca8bb94fbd7f0b1323053b03a79b39b0" - integrity sha512-CzZhBxicLDuuSJbkZ4nPcuBqWnhLu72Zt9p/7qLQ93BepVnZJV6ZDlBLBuN5eg7YRACwECPLsntnwo1zuhgseQ== + version "5.66.1" + resolved "https://registry.yarnpkg.com/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.66.1.tgz#9951e4d3633ca6248196742cad437b4d7c760cd7" + integrity sha512-pYMVTGgJ7yPk9Rm6UWEmbY6TX0EmMmxJqYkthgeDCwEznToy2m+W928nUODFirtZBZlhBsqHy33LO0kyTlgf0w== dependencies: "@typescript-eslint/utils" "^8.18.1" @@ -6201,6 +6218,11 @@ dependencies: "@types/node" "*" +"@types/gensync@^1.0.0": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@types/gensync/-/gensync-1.0.4.tgz#7122d8f0cd3bf437f9725cc95b180197190cf50b" + integrity sha512-C3YYeRQWp2fmq9OryX+FoDy8nXS6scQ7dPptD8LnFDAUNcKWJjXQKDNJD3HVm+kOUsXhTOkpi69vI4EuAr95bA== + "@types/glob@^7.1.1": version "7.2.0" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" @@ -6798,13 +6820,13 @@ "@typescript-eslint/types" "7.18.0" "@typescript-eslint/visitor-keys" "7.18.0" -"@typescript-eslint/scope-manager@8.23.0": - version "8.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.23.0.tgz#ee3bb7546421ca924b9b7a8b62a77d388193ddec" - integrity sha512-OGqo7+dXHqI7Hfm+WqkZjKjsiRtFUQHPdGMXzk5mYXhJUedO7e/Y7i8AK3MyLMgZR93TX4bIzYrfyVjLC+0VSw== +"@typescript-eslint/scope-manager@8.24.0": + version "8.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.24.0.tgz#2e34b3eb2ce768f2ffb109474174ced5417002b1" + integrity sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw== dependencies: - "@typescript-eslint/types" "8.23.0" - "@typescript-eslint/visitor-keys" "8.23.0" + "@typescript-eslint/types" "8.24.0" + "@typescript-eslint/visitor-keys" "8.24.0" "@typescript-eslint/type-utils@5.62.0": version "5.62.0" @@ -6851,10 +6873,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.18.0.tgz#b90a57ccdea71797ffffa0321e744f379ec838c9" integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ== -"@typescript-eslint/types@8.23.0": - version "8.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.23.0.tgz#3355f6bcc5ebab77ef6dcbbd1113ec0a683a234a" - integrity sha512-1sK4ILJbCmZOTt9k4vkoulT6/y5CHJ1qUYxqpF1K/DBAd8+ZUL4LlSCxOssuH5m4rUaaN0uS0HlVPvd45zjduQ== +"@typescript-eslint/types@8.24.0": + version "8.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.24.0.tgz#694e7fb18d70506c317b816de9521300b0f72c8e" + integrity sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" @@ -6897,13 +6919,13 @@ semver "^7.6.0" ts-api-utils "^1.3.0" -"@typescript-eslint/typescript-estree@8.23.0": - version "8.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.23.0.tgz#f633ef08efa656e386bc44b045ffcf9537cc6924" - integrity sha512-LcqzfipsB8RTvH8FX24W4UUFk1bl+0yTOf9ZA08XngFwMg4Kj8A+9hwz8Cr/ZS4KwHrmo9PJiLZkOt49vPnuvQ== +"@typescript-eslint/typescript-estree@8.24.0": + version "8.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.0.tgz#0487349be174097bb329a58273100a9629e03c6c" + integrity sha512-ITjYcP0+8kbsvT9bysygfIfb+hBj6koDsu37JZG7xrCiy3fPJyNmfVtaGsgTUSEuTzcvME5YI5uyL5LD1EV5ZQ== dependencies: - "@typescript-eslint/types" "8.23.0" - "@typescript-eslint/visitor-keys" "8.23.0" + "@typescript-eslint/types" "8.24.0" + "@typescript-eslint/visitor-keys" "8.24.0" debug "^4.3.4" fast-glob "^3.3.2" is-glob "^4.0.3" @@ -6949,14 +6971,14 @@ "@typescript-eslint/typescript-estree" "7.18.0" "@typescript-eslint/utils@^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/utils@^8.18.1", "@typescript-eslint/utils@^8.22.0": - version "8.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.23.0.tgz#b269cbdc77129fd6e0e600b168b5ef740a625554" - integrity sha512-uB/+PSo6Exu02b5ZEiVtmY6RVYO7YU5xqgzTIVZwTHvvK3HsL8tZZHFaTLFtRG3CsV4A5mhOv+NZx5BlhXPyIA== + version "8.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.24.0.tgz#21cb1195ae79230af825bfeed59574f5cb70a749" + integrity sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.23.0" - "@typescript-eslint/types" "8.23.0" - "@typescript-eslint/typescript-estree" "8.23.0" + "@typescript-eslint/scope-manager" "8.24.0" + "@typescript-eslint/types" "8.24.0" + "@typescript-eslint/typescript-estree" "8.24.0" "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" @@ -6982,12 +7004,12 @@ "@typescript-eslint/types" "7.18.0" eslint-visitor-keys "^3.4.3" -"@typescript-eslint/visitor-keys@8.23.0": - version "8.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.23.0.tgz#40405fd26a61d23f5f4c2ed0f016a47074781df8" - integrity sha512-oWWhcWDLwDfu++BGTZcmXWqpwtkwb5o7fxUIGksMQQDSdPW9prsSnfIOZMlsj4vBOSrcnjIUZMiIjODgGosFhQ== +"@typescript-eslint/visitor-keys@8.24.0": + version "8.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.0.tgz#36ecf0b9b1d819ad88a3bd4157ab7d594cb797c9" + integrity sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg== dependencies: - "@typescript-eslint/types" "8.23.0" + "@typescript-eslint/types" "8.24.0" eslint-visitor-keys "^4.2.0" "@ungap/structured-clone@^1.2.0": @@ -7180,12 +7202,12 @@ "@walletconnect/ethereum-provider" "2.17.0" cbw-sdk "npm:@coinbase/wallet-sdk@3.9.3" -"@wagmi/connectors@5.7.6": - version "5.7.6" - resolved "https://registry.yarnpkg.com/@wagmi/connectors/-/connectors-5.7.6.tgz#b31434f52546ba19cc381e5c4da0ebd60323386c" - integrity sha512-Kl6UbvPlWJY/NgWj7M1869Wdx0kLQxZrC0Hv1Lc+RhgiHspHvhpTW/+0OGJOAEQm3XtN20P98n3KcdglvB+19A== +"@wagmi/connectors@5.7.7": + version "5.7.7" + resolved "https://registry.yarnpkg.com/@wagmi/connectors/-/connectors-5.7.7.tgz#35fe03d69ca3f1494c0e97a758884e06e535eefd" + integrity sha512-hveKxuR35ZQQyteLo7aiN/TBVECYKVbLNTYGGgqzTNHJ8vVoblTP9PwPrRPGOPi5ji8raYSFWShxNK7QpGL+Kg== dependencies: - "@coinbase/wallet-sdk" "4.2.3" + "@coinbase/wallet-sdk" "4.3.0" "@metamask/sdk" "0.32.0" "@safe-global/safe-apps-provider" "0.18.5" "@safe-global/safe-apps-sdk" "9.1.0" @@ -7201,6 +7223,15 @@ mipd "0.0.7" zustand "5.0.0" +"@wagmi/core@2.16.4": + version "2.16.4" + resolved "https://registry.yarnpkg.com/@wagmi/core/-/core-2.16.4.tgz#96f1a2803dbf3ca110938402bdf2d99ab8da638e" + integrity sha512-E4jY4A98gwuHCjzuEajHIG/WhNDY5BChVHMjflV9Bx5CO7COqYRG2dcRLuF6Bo0LQNvVvXDAFUwR2JShJnT5pA== + dependencies: + eventemitter3 "5.0.1" + mipd "0.0.7" + zustand "5.0.0" + "@walletconnect/core@2.17.0": version "2.17.0" resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.17.0.tgz#bf490e85a4702eff0f7cf81ba0d3c1016dffff33" @@ -8391,6 +8422,14 @@ babel-plugin-polyfill-corejs3@^0.10.6: "@babel/helper-define-polyfill-provider" "^0.6.2" core-js-compat "^3.38.0" +babel-plugin-polyfill-corejs3@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz#4e4e182f1bb37c7ba62e2af81d8dd09df31344f6" + integrity sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.3" + core-js-compat "^3.40.0" + babel-plugin-polyfill-regenerator@^0.6.1: version "0.6.3" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz#abeb1f3f1c762eace37587f42548b08b57789bc8" @@ -8992,9 +9031,9 @@ camelize@^1.0.0: integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== caniuse-lite@^1.0.30001688: - version "1.0.30001697" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001697.tgz#040bbbb54463c4b4b3377c716b34a322d16e6fc7" - integrity sha512-GwNPlWJin8E+d7Gxq96jxM6w0w+VFeyyXRsjU58emtkYqnbwHqXm5uT2uCmO0RQE9htWknOP4xtBlLmM/gWxvQ== + version "1.0.30001699" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001699.tgz#a102cf330d153bf8c92bfb5be3cd44c0a89c8c12" + integrity sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w== cardinal@^2.1.1: version "2.1.1" @@ -9570,17 +9609,15 @@ concat-stream@^1.5.2, concat-stream@^1.6.0, concat-stream@^1.6.2, concat-stream@ readable-stream "^2.2.2" typedarray "^0.0.6" -concurrently@^8.2.2: - version "8.2.2" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-8.2.2.tgz#353141985c198cfa5e4a3ef90082c336b5851784" - integrity sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg== +concurrently@^9.1.2: + version "9.1.2" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-9.1.2.tgz#22d9109296961eaee773e12bfb1ce9a66bc9836c" + integrity sha512-H9MWcoPsYddwbOGM6difjVwVZHl63nwMEwDJG/L7VGtuaJhb12h2caPG2tVPWs7emuYix252iGfqOyrz1GczTQ== dependencies: chalk "^4.1.2" - date-fns "^2.30.0" lodash "^4.17.21" rxjs "^7.8.1" shell-quote "^1.8.1" - spawn-command "0.0.2" supports-color "^8.1.1" tree-kill "^1.2.2" yargs "^17.7.2" @@ -9600,11 +9637,6 @@ consola@^2.15.0: resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== -consola@^3.2.3: - version "3.4.0" - resolved "https://registry.yarnpkg.com/consola/-/consola-3.4.0.tgz#4cfc9348fd85ed16a17940b3032765e31061ab88" - integrity sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA== - console-browserify@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" @@ -9684,7 +9716,7 @@ copy-to-clipboard@^3.3.3: dependencies: toggle-selection "^1.0.6" -core-js-compat@^3.34.0, core-js-compat@^3.38.0, core-js-compat@^3.38.1: +core-js-compat@^3.34.0, core-js-compat@^3.38.0, core-js-compat@^3.40.0: version "3.40.0" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.40.0.tgz#7485912a5a4a4315c2fdb2cbdc623e6881c88b38" integrity sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ== @@ -9845,10 +9877,10 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -crossws@^0.3.2: - version "0.3.3" - resolved "https://registry.yarnpkg.com/crossws/-/crossws-0.3.3.tgz#627f5e7e55f459e0ca52dfe48094f5ada7865cb4" - integrity sha512-/71DJT3xJlqSnBr83uGJesmVHSzZEvgxHt/fIKxBAAngqMHmnBWQNxCphVxxJ2XL3xleu5+hJD6IQ3TglBedcw== +crossws@^0.3.3: + version "0.3.4" + resolved "https://registry.yarnpkg.com/crossws/-/crossws-0.3.4.tgz#06164c6495ea99152ea7557c99310b52d9be9b29" + integrity sha512-uj0O1ETYX1Bh6uSgktfPvwDiPYGQ3aI4qVsaC/LWpkIzGj1nUYm5FK3K+t11oOlpN01lGbprFCH4wBlKdJjVgw== dependencies: uncrypto "^0.1.3" @@ -10049,7 +10081,7 @@ dataloader@^2.2.2: resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.2.3.tgz#42d10b4913515f5b37c6acedcb4960d6ae1b1517" integrity sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA== -date-fns@^2.29.3, date-fns@^2.30.0: +date-fns@^2.29.3: version "2.30.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== @@ -10530,9 +10562,9 @@ electron-fetch@^1.7.2: encoding "^0.1.13" electron-to-chromium@^1.5.73: - version "1.5.93" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.93.tgz#6fae820ac8bb772a841aa67fce5389e6c6da7ba2" - integrity sha512-M+29jTcfNNoR9NV7la4SwUqzWAxEwnc7ThA5e1m6LRSotmpfpCpLcIfgtSCVL+MllNLgAyM/5ru86iMRemPzDQ== + version "1.5.97" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.97.tgz#5c4a4744c79e7c85b187adf5160264ac130c776f" + integrity sha512-HKLtaH02augM7ZOdYRuO19rWDeY+QSJ1VxnXFa/XDFLf07HvM90pALIJFgrO+UVaajI3+aJMMpojoUTLZyQ7JQ== elliptic@6.5.4: version "6.5.4" @@ -10797,11 +10829,11 @@ es-set-tostringtag@^2.0.3, es-set-tostringtag@^2.1.0: hasown "^2.0.2" es-shim-unscopables@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" - integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== + version "1.1.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz#438df35520dac5d105f3943d927549ea3b00f4b5" + integrity sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw== dependencies: - hasown "^2.0.0" + hasown "^2.0.2" es-to-primitive@^1.3.0: version "1.3.0" @@ -11196,9 +11228,9 @@ eslint-plugin-react-hooks@^5.1.0: integrity sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw== eslint-plugin-react-refresh@^0.4.11: - version "0.4.18" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.18.tgz#d2ae6dc8d48c87f7722f5304385b0cd8b3a32a54" - integrity sha512-IRGEoFn3OKalm3hjfolEWGqoF/jPqeEYFp+C8B0WMzwGwBMvlRDQd06kghDhF0C61uJ6WfSDhEZE/sAQjduKgw== + version "0.4.19" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.19.tgz#f15020c0caa58e33fc4efda27d328281ca74e53d" + integrity sha512-eyy8pcr/YxSYjBoqIFSrlbn9i/xvxUFa8CjzAYo9cFjgGXqq1hyjihcpZvxRLalpaWmueWR81xn7vuKmAFijDQ== eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.34.0, eslint-plugin-react@^7.34.3: version "7.37.4" @@ -11573,7 +11605,7 @@ ethers@^5.7.0: "@ethersproject/web" "5.7.1" "@ethersproject/wordlists" "5.7.0" -ethers@^6.12.0, ethers@^6.12.1, ethers@^6.13.1, ethers@^6.7.0, ethers@^6.8.1: +ethers@^6.13.5, ethers@^6.7.0, ethers@^6.8.1: version "6.13.5" resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.13.5.tgz#8c1d6ac988ac08abc3c1d8fabbd4b8b602851ac4" integrity sha512-+knKNieu5EKRThQJWwqaJ10a6HE9sSehGeqWN65//wE7j47ZpFhKAnHB/JJFibwwg61I/koxaPsXbXpD/skNOQ== @@ -12004,9 +12036,9 @@ follow-redirects@^1.12.1, follow-redirects@^1.14.0, follow-redirects@^1.14.9, fo integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== for-each@^0.3.3: - version "0.3.4" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.4.tgz#814517ffc303d1399b2564d8165318e735d0341c" - integrity sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw== + version "0.3.5" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47" + integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== dependencies: is-callable "^1.2.7" @@ -12650,20 +12682,20 @@ gtoken@^7.0.0: jws "^4.0.0" h3@^1.13.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/h3/-/h3-1.14.0.tgz#292bf0602444b36fd6b333b1d6872d685ecc9899" - integrity sha512-ao22eiONdgelqcnknw0iD645qW0s9NnrJHr5OBz4WOMdBdycfSas1EQf1wXRsm+PcB2Yoj43pjBPwqIpJQTeWg== + version "1.15.0" + resolved "https://registry.yarnpkg.com/h3/-/h3-1.15.0.tgz#1a149cbe8c0418691cae331d5744c0c65fbf42b3" + integrity sha512-OsjX4JW8J4XGgCgEcad20pepFQWnuKH+OwkCJjogF3C+9AZ1iYdtB4hX6vAb5DskBiu5ljEXqApINjR8CqoCMQ== dependencies: cookie-es "^1.2.2" - crossws "^0.3.2" + crossws "^0.3.3" defu "^6.1.4" destr "^2.0.3" iron-webcrypto "^1.2.1" + node-mock-http "^1.0.0" ohash "^1.1.4" radix3 "^1.1.2" ufo "^1.5.4" uncrypto "^0.1.3" - unenv "^1.10.0" handlebars@^4.0.1: version "4.7.8" @@ -12898,7 +12930,7 @@ hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hasown@^2.0.0, hasown@^2.0.2: +hasown@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== @@ -14763,7 +14795,7 @@ linkify-it@^5.0.0: dependencies: uc.micro "^2.0.0" -lint-staged@^15.3.0: +lint-staged@^15.4.3: version "15.4.3" resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.4.3.tgz#e73587cc857f580c99f907abefe9ac8d8d5e74c1" integrity sha512-FoH1vOeouNh1pw+90S+cnuoFwRfUD9ijY2GKy5h7HS3OR7JVir2N2xrsa0+Twc1B7cW72L+88geG5cW4wIhn7g== @@ -15049,15 +15081,10 @@ long@^4.0.0: resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== -long@^5.0.0, long@^5.2.0: - version "5.2.4" - resolved "https://registry.yarnpkg.com/long/-/long-5.2.4.tgz#ee651d5c7c25901cfca5e67220ae9911695e99b2" - integrity sha512-qtzLbJE8hq7VabR3mISmVGtoXP8KGc2Z/AT8OuqlYD7JTR3oqrgwdjnk07wpj1twXxYmgDXgoKVWUG/fReSzHg== - -long@^5.2.1: - version "5.2.4" - resolved "https://registry.yarnpkg.com/long/-/long-5.2.4.tgz#ee651d5c7c25901cfca5e67220ae9911695e99b2" - integrity sha512-qtzLbJE8hq7VabR3mISmVGtoXP8KGc2Z/AT8OuqlYD7JTR3oqrgwdjnk07wpj1twXxYmgDXgoKVWUG/fReSzHg== +long@^5.0.0, long@^5.2.0, long@^5.2.1: + version "5.3.0" + resolved "https://registry.yarnpkg.com/long/-/long-5.3.0.tgz#3bab70330c40c2c1b5cb73c4254723c81f00e15c" + integrity sha512-5vvY5yF1zF/kXk+L94FRiTDa1Znom46UjPCH6/XbSvS8zBKMFBHTJk8KDMqJ+2J6QezQFi7k1k8v21ClJYHPaw== loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" @@ -15344,11 +15371,6 @@ mime@2.6.0: resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== -mime@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" - integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -15855,6 +15877,11 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== +node-mock-http@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-mock-http/-/node-mock-http-1.0.0.tgz#4b32cd509c7f46d844e68ea93fb8be405a18a42a" + integrity sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ== + node-releases@^2.0.19: version "2.0.19" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" @@ -16536,9 +16563,9 @@ pathe@^1.1.1, pathe@^1.1.2: integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== pathe@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/pathe/-/pathe-2.0.2.tgz#5ed86644376915b3c7ee4d00ac8c348d671da3a5" - integrity sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w== + version "2.0.3" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-2.0.3.tgz#3ecbec55421685b70a9da872b2cff3e1cbed1716" + integrity sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w== pathval@^1.1.1: version "1.1.1" @@ -16582,14 +16609,14 @@ pg-numeric@1.0.2: integrity sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw== pg-pool@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.7.0.tgz#d4d3c7ad640f8c6a2245adc369bafde4ebb8cbec" - integrity sha512-ZOBQForurqh4zZWjrgSwwAtzJ7QiRX0ovFkZr2klsen3Nm0aoh33Ls0fzfv3imeH/nw/O27cjdz5kzYJfeGp/g== + version "3.7.1" + resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.7.1.tgz#d1aaf618618d8f878acf185e86084928b8cd5b3c" + integrity sha512-xIOsFoh7Vdhojas6q3596mXFsR8nwBQBXX5JiV7p9buEVAGqYL4yFzclON5P9vFrpu1u7Zwl2oriyDa89n0wbw== pg-protocol@*, pg-protocol@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.7.0.tgz#ec037c87c20515372692edac8b63cf4405448a93" - integrity sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ== + version "1.7.1" + resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.7.1.tgz#aad61a6f927b51e89dcf721408b76c0e536d43dc" + integrity sha512-gjTHWGYWsEgy9MsY0Gp6ZJxV24IjDqdpTW7Eh0x+WfJLFsm/TJx1MzL6T0D88mBvkpxotCQ6TwW6N+Kko7lhgQ== pg-types@^2.1.0: version "2.2.0" @@ -16802,9 +16829,9 @@ pony-cause@^2.1.10: integrity sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg== possible-typed-array-names@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" - integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + version "1.1.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae" + integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== postcss-value-parser@^4.0.2: version "4.2.0" @@ -16821,9 +16848,9 @@ postcss@8.4.49: source-map-js "^1.2.1" postcss@^8.4.43: - version "8.5.1" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.1.tgz#e2272a1f8a807fafa413218245630b5db10a3214" - integrity sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ== + version "8.5.2" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.2.tgz#e7b99cb9d2ec3e8dd424002e7c16517cb2b846bd" + integrity sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA== dependencies: nanoid "^3.3.8" picocolors "^1.1.1" @@ -16921,7 +16948,7 @@ prettier@3.0.3: resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.3.tgz#432a51f7ba422d1469096c0fdc28e235db8f9643" integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== -prettier@3.4.2, prettier@^3.4.2: +prettier@3.4.2: version "3.4.2" resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f" integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ== @@ -16931,6 +16958,11 @@ prettier@^2.3.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== +prettier@^3.4.2: + version "3.5.0" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.0.tgz#50325a28887c6dfdf2ca3f8eaba02b66a8429ca7" + integrity sha512-quyMrVt6svPS7CjQ9gKb3GLEX/rl3BCL2oa/QkNcXv4YNVBC9olt3s+H7ukto06q7B1Qz46PbrKLO34PR6vXcA== + pretty-format@^27.0.2: version "27.5.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" @@ -17877,31 +17909,31 @@ rlp@^2.2.3, rlp@^2.2.4: bn.js "^5.2.0" rollup@^4.20.0: - version "4.34.4" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.34.4.tgz#b87a08a0c158e2f9d12bcd876221ef717ffa6bc2" - integrity sha512-spF66xoyD7rz3o08sHP7wogp1gZ6itSq22SGa/IZTcUDXDlOyrShwMwkVSB+BUxFRZZCUYqdb3KWDEOMVQZxuw== + version "4.34.6" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.34.6.tgz#a07e4d2621759e29034d909655e7a32eee9195c9" + integrity sha512-wc2cBWqJgkU3Iz5oztRkQbfVkbxoz5EhnCGOrnJvnLnQ7O0WhQUYyv18qQI79O8L7DdHrrlJNeCHd4VGpnaXKQ== dependencies: "@types/estree" "1.0.6" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.34.4" - "@rollup/rollup-android-arm64" "4.34.4" - "@rollup/rollup-darwin-arm64" "4.34.4" - "@rollup/rollup-darwin-x64" "4.34.4" - "@rollup/rollup-freebsd-arm64" "4.34.4" - "@rollup/rollup-freebsd-x64" "4.34.4" - "@rollup/rollup-linux-arm-gnueabihf" "4.34.4" - "@rollup/rollup-linux-arm-musleabihf" "4.34.4" - "@rollup/rollup-linux-arm64-gnu" "4.34.4" - "@rollup/rollup-linux-arm64-musl" "4.34.4" - "@rollup/rollup-linux-loongarch64-gnu" "4.34.4" - "@rollup/rollup-linux-powerpc64le-gnu" "4.34.4" - "@rollup/rollup-linux-riscv64-gnu" "4.34.4" - "@rollup/rollup-linux-s390x-gnu" "4.34.4" - "@rollup/rollup-linux-x64-gnu" "4.34.4" - "@rollup/rollup-linux-x64-musl" "4.34.4" - "@rollup/rollup-win32-arm64-msvc" "4.34.4" - "@rollup/rollup-win32-ia32-msvc" "4.34.4" - "@rollup/rollup-win32-x64-msvc" "4.34.4" + "@rollup/rollup-android-arm-eabi" "4.34.6" + "@rollup/rollup-android-arm64" "4.34.6" + "@rollup/rollup-darwin-arm64" "4.34.6" + "@rollup/rollup-darwin-x64" "4.34.6" + "@rollup/rollup-freebsd-arm64" "4.34.6" + "@rollup/rollup-freebsd-x64" "4.34.6" + "@rollup/rollup-linux-arm-gnueabihf" "4.34.6" + "@rollup/rollup-linux-arm-musleabihf" "4.34.6" + "@rollup/rollup-linux-arm64-gnu" "4.34.6" + "@rollup/rollup-linux-arm64-musl" "4.34.6" + "@rollup/rollup-linux-loongarch64-gnu" "4.34.6" + "@rollup/rollup-linux-powerpc64le-gnu" "4.34.6" + "@rollup/rollup-linux-riscv64-gnu" "4.34.6" + "@rollup/rollup-linux-s390x-gnu" "4.34.6" + "@rollup/rollup-linux-x64-gnu" "4.34.6" + "@rollup/rollup-linux-x64-musl" "4.34.6" + "@rollup/rollup-win32-arm64-msvc" "4.34.6" + "@rollup/rollup-win32-ia32-msvc" "4.34.6" + "@rollup/rollup-win32-x64-msvc" "4.34.6" fsevents "~2.3.2" rrweb-cssom@^0.7.1: @@ -18406,9 +18438,9 @@ socks-proxy-agent@^8.0.3: socks "^2.8.3" socks@^2.8.3: - version "2.8.3" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" - integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== + version "2.8.4" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.4.tgz#07109755cdd4da03269bda4725baa061ab56d5cc" + integrity sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ== dependencies: ip-address "^9.0.5" smart-buffer "^4.2.0" @@ -18532,11 +18564,6 @@ source-map@~0.2.0: dependencies: amdefine ">=0.0.4" -spawn-command@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e" - integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ== - spdx-correct@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" @@ -19044,9 +19071,9 @@ swagger-ui-dist@5.17.14: integrity sha512-CVbSfaLpstV65OnSjbXfVd6Sta3q3F7Cj/yYuvHMp1P90LztOLs6PfUnKEVAeiIVQt9u2SaPwv0LiH/OyMjHRw== swiper@^11.1.3: - version "11.2.2" - resolved "https://registry.yarnpkg.com/swiper/-/swiper-11.2.2.tgz#b49089fad99501e34cb1be916e1ae05379aace9a" - integrity sha512-FmAN6zACpVUbd/1prO9xQ9gKo9cc6RE2UKU/z4oXtS8fNyX4sdOW/HHT/e444WucLJs0jeMId6WjdWM2Lrs8zA== + version "11.2.3" + resolved "https://registry.yarnpkg.com/swiper/-/swiper-11.2.3.tgz#6358e8169dcd78fc1dffb65bb29b5875c7bcedcc" + integrity sha512-24m5tqHCd1Wmp9+86aKDoIGMsZGEjIL++3nuB1UjhAhIlvwj4k0Jikxu9PGQ/VswLpoje6JtMDWo12uu4aS2FA== swr@^2.2.4: version "2.3.2" @@ -19187,9 +19214,9 @@ terser-webpack-plugin@^5.3.10: terser "^5.31.1" terser@^5.31.1: - version "5.38.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.38.0.tgz#df742bb69ee556c29650e926ff154d116f4ccf79" - integrity sha512-a4GD5R1TjEeuCT6ZRiYMHmIf7okbCPEuhQET8bczV6FrQMMlFXA1n+G0KKjdlFCm3TEHV77GxfZB3vZSUQGFpg== + version "5.38.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.38.2.tgz#24aef4ea48c900d46a4b13f6a53789980d59967f" + integrity sha512-w8CXxxbFA5zfNsR/i8HZq5bvn18AK0O9jj7hyo1YqkovLxEFa0uP0LCVGZRqiRaKRFxXhELBp8SteeAjEnfeJg== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -19333,17 +19360,17 @@ tinyspy@^2.2.0: resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.2.1.tgz#117b2342f1f38a0dbdcc73a50a454883adf861d1" integrity sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A== -tldts-core@^6.1.76: - version "6.1.76" - resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-6.1.76.tgz#1ea632bbf11b288645dd7e2f3fb9cb6fa41e6bd7" - integrity sha512-uzhJ02RaMzgQR3yPoeE65DrcHI6LoM4saUqXOt/b5hmb3+mc4YWpdSeAQqVqRUlQ14q8ZuLRWyBR1ictK1dzzg== +tldts-core@^6.1.77: + version "6.1.77" + resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-6.1.77.tgz#0fa4563163a7a61d72c4b05650fb66fc7e815500" + integrity sha512-bCaqm24FPk8OgBkM0u/SrEWJgHnhBWYqeBo6yUmcZJDCHt/IfyWBb+14CXdGi4RInMv4v7eUAin15W0DoA+Ytg== tldts@^6.1.32: - version "6.1.76" - resolved "https://registry.yarnpkg.com/tldts/-/tldts-6.1.76.tgz#c8b60fba55ca78e1c228bead4f69d18731526079" - integrity sha512-6U2ti64/nppsDxQs9hw8ephA3nO6nSQvVVfxwRw8wLQPFtLI1cFI1a1eP22g+LUP+1TA2pKKjUTwWB+K2coqmQ== + version "6.1.77" + resolved "https://registry.yarnpkg.com/tldts/-/tldts-6.1.77.tgz#714e3d1989e562886f2ed97b65e95a8e9f9e92d9" + integrity sha512-lBpoWgy+kYmuXWQ83+R7LlJCnsd9YW8DGpZSHhrMl4b8Ly/1vzOie3OdtmUJDkKxcgRGOehDu5btKkty+JEe+g== dependencies: - tldts-core "^6.1.76" + tldts-core "^6.1.77" tmp-promise@3.0.3: version "3.0.3" @@ -19412,9 +19439,9 @@ tough-cookie@^4.1.2: url-parse "^1.5.3" tough-cookie@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-5.1.0.tgz#0667b0f2fbb5901fe6f226c3e0b710a9a4292f87" - integrity sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg== + version "5.1.1" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-5.1.1.tgz#4641c1fdbf024927e29c5532edb7b6e5377ea1f2" + integrity sha512-Ek7HndSVkp10hmHP9V4qZO1u+pn1RU5sI0Fw+jCU3lyvuMZcgqsNgc6CmJJZyByK4Vm/qotGRJlfgAX8q+4JiA== dependencies: tldts "^6.1.32" @@ -19761,14 +19788,14 @@ typedarray@^0.0.6: integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== typedoc-plugin-markdown@^4.2.3: - version "4.4.1" - resolved "https://registry.yarnpkg.com/typedoc-plugin-markdown/-/typedoc-plugin-markdown-4.4.1.tgz#f57266fa6916cb3837a9c84f59f3aaced309be9a" - integrity sha512-fx23nSCvewI9IR8lzIYtzDphETcgTDuxKcmHKGD4lo36oexC+B1k4NaCOY58Snqb4OlE8OXDAGVcQXYYuLRCNw== + version "4.4.2" + resolved "https://registry.yarnpkg.com/typedoc-plugin-markdown/-/typedoc-plugin-markdown-4.4.2.tgz#fc31779595aa9bf00e66709f3894e048345bf7ed" + integrity sha512-kJVkU2Wd+AXQpyL6DlYXXRrfNrHrEIUgiABWH8Z+2Lz5Sq6an4dQ/hfvP75bbokjNDUskOdFlEEm/0fSVyC7eg== typedoc@^0.27.5: - version "0.27.6" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.27.6.tgz#7e8d067bd5386b7908afcb12c9054a83e8bb326b" - integrity sha512-oBFRoh2Px6jFx366db0lLlihcalq/JzyCVp7Vaq1yphL/tbgx2e+bkpkCgJPunaPvPwoTOXSwasfklWHm7GfAw== + version "0.27.7" + resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.27.7.tgz#09047ffb5c845f45765de26c68b77260867fe967" + integrity sha512-K/JaUPX18+61W3VXek1cWC5gwmuLvYTOXJzBvD9W7jFvbPnefRnCHQCEPw7MSNrP/Hj7JJrhZtDDLKdcYm6ucg== dependencies: "@gerrit0/mini-shiki" "^1.24.0" lunr "^2.3.9" @@ -19893,17 +19920,6 @@ undici@5.28.4, undici@^5.14.0, undici@^6.11.1: resolved "https://registry.yarnpkg.com/undici/-/undici-6.21.1.tgz#336025a14162e6837e44ad7b819b35b6c6af0e05" integrity sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ== -unenv@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/unenv/-/unenv-1.10.0.tgz#c3394a6c6e4cfe68d699f87af456fe3f0db39571" - integrity sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ== - dependencies: - consola "^3.2.3" - defu "^6.1.4" - mime "^3.0.0" - node-fetch-native "^1.6.4" - pathe "^1.1.2" - unfetch@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" @@ -20041,7 +20057,7 @@ use-sync-external-store@1.2.0: resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== -use-sync-external-store@1.4.0, use-sync-external-store@^1.2.2, use-sync-external-store@^1.4.0: +use-sync-external-store@1.4.0, use-sync-external-store@^1.0.0, use-sync-external-store@^1.2.2, use-sync-external-store@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz#adbc795d8eeb47029963016cefdf89dc799fcebc" integrity sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw== @@ -20184,9 +20200,9 @@ viem@2.7.14: ws "8.13.0" viem@2.x, viem@^2.1.1, viem@^2.21.44: - version "2.22.22" - resolved "https://registry.yarnpkg.com/viem/-/viem-2.22.22.tgz#2b722f45c30bcfc13d12a89cd3a0c1c0045093a8" - integrity sha512-0z7EFheP+paC/KRlVpu7zXYiqkTX6GR86G0p84LnYr5NgaVxGz0mGsiERy41ThERX1ahkTdEWGGiNgfi6wVqBQ== + version "2.23.2" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.23.2.tgz#db395c8cf5f4fb5572914b962fb8ce5db09f681c" + integrity sha512-NVmW/E0c5crMOtbEAqMF0e3NmvQykFXhLOc/CkLIXOlzHSA6KXVz3CYVmaKqBF8/xtjsjHAGjdJN3Ru1kFJLaA== dependencies: "@noble/curves" "1.8.1" "@noble/hashes" "1.7.1" @@ -20309,12 +20325,12 @@ wagmi@2.14.6: use-sync-external-store "1.2.0" wagmi@^2.14.6: - version "2.14.10" - resolved "https://registry.yarnpkg.com/wagmi/-/wagmi-2.14.10.tgz#e5549cad7fd43e914dcebe91c2549a59bac28307" - integrity sha512-6KXZ4K4VC4fBY5M4t/KdBSqMujQVMV2MqiUnZf3ZZbSG2tpz1PEuJzS/umYRm8UIJAt8/KikC7LMewF5K6C+Nw== + version "2.14.11" + resolved "https://registry.yarnpkg.com/wagmi/-/wagmi-2.14.11.tgz#bfdd479e88bb3907efb412d04b5135a0017d5090" + integrity sha512-Qj79cq+9MAcnKict9QLo60Lc4S2IXVVE94HBwCmczDrFtoM31NxfX4uQP73Elj2fV9lXH4/dw3jlb8eDhlm6iQ== dependencies: - "@wagmi/connectors" "5.7.6" - "@wagmi/core" "2.16.3" + "@wagmi/connectors" "5.7.7" + "@wagmi/core" "2.16.4" use-sync-external-store "1.4.0" walker@^1.0.8: @@ -20723,9 +20739,9 @@ whatwg-url@^11.0.0: webidl-conversions "^7.0.0" whatwg-url@^14.0.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-14.1.0.tgz#fffebec86cc8e6c2a657e50dc606207b870f0ab3" - integrity sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w== + version "14.1.1" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-14.1.1.tgz#ce71e240c61541315833b5cdafd139a479e47058" + integrity sha512-mDGf9diDad/giZ/Sm9Xi2YcyzaFpbdLpJPr+E9fSkyQ7KpQD4SdFcugkRQYzhmfI4KeV4Qpnn2sKPdo+kmsgRQ== dependencies: tr46 "^5.0.0" webidl-conversions "^7.0.0" @@ -21087,7 +21103,7 @@ yocto-queue@^1.0.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.1.1.tgz#fef65ce3ac9f8a32ceac5a634f74e17e5b232110" integrity sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g== -yup@^1.2.0: +yup@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/yup/-/yup-1.6.1.tgz#8defcff9daaf9feac178029c0e13b616563ada4b" integrity sha512-JED8pB50qbA4FOkDol0bYF/p60qSEDQqBD0/qeIrUCG1KbPBIQ776fCUNb9ldbPcSTxA69g/47XTo4TqWiuXOA== @@ -21120,9 +21136,9 @@ zod@3.22.4: integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg== zod@^3.21.4, zod@^3.22.4, zod@^3.23.8: - version "3.24.1" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.1.tgz#27445c912738c8ad1e9de1bea0359fa44d9d35ee" - integrity sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A== + version "3.24.2" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.2.tgz#8efa74126287c675e92f46871cfc8d15c34372b3" + integrity sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ== zustand@5.0.0: version "5.0.0"