From 652e7f8a4e9548d83fd186f7f7add0801436a93c Mon Sep 17 00:00:00 2001 From: Kolade Date: Mon, 30 Sep 2024 14:33:34 +0100 Subject: [PATCH] Rewards V2 (#1772) * added loading colour * add icon * add components * update styles * update mobile view * update titles * change button labels * update multiplier * update useDailyRewards hook * update unlock profile modal changes * update usedailyrewards hook * fix isLoading onclick * update locked status/ rewards ui * update new users status * add skeleton loader * comment out stake push activities * update skeleton loader * update locked icon * format text * feat: add alert ds component (#1781) * feat: add alert ds component * chore: update alert ds acc to review * chore: update component acc to review * update alert for error messages * update indexes * Update Dashboard.tsx * remove unusued * fixed review comments * Update Button.tsx * update completed state * fixed the spinner and button * fixed the spinner and button * Added spinner component (#1783) * added spinner component * added review changes * added correct variants * added the review comments * added the review comments * Add progress bar to ds (#1787) * feat: add progress bar to ds * chore: update progress bar according to review * add loading state * update locked status * update isLocked * update loading state * remove disabled state from button * update locked divider * update error message * fix icons and illustrations * update naming and imports * update reward activites hook * update type * add types * resolve conments * update box * update text changes * update text * update points real time * update mutiplier conditions in bonus * update gap * update padding referal section * adjust daily section ui * update stake array * update stake api * update rewards verification hook * fix: yield farming layouts and resize buttons to take full width (#1793) * Add support for erc1155 (#1794) * chore: add support for erc1155 * chore: update uiweb version to include erc1155 support * Replaced older tab implementation in trending channels with the new tab block component (#1800) * added * moved function to utils * tab changes * reverted rewards tab change * Update Dashboard.utils.ts * Opt-In Dropdown for dashboard (#1802) * Opt-In Dropdown for dashboard * Fixed the comments and issues * Fixed the context issue * DS-Dapp Notification Component (#1801) * add in-app semantics and block files * update notification component * add localstorage identifier * update library * add duration option * resolve comments * update comment fixes * fix comments * testing notification * update notification component --------- Co-authored-by: rohitmalhotra1420 * DApp-1804 tag component added in blocks (#1805) * tag in progress * implemented tag component * Tag component implemented in blocks * update hook and export component * update code * add componentdid mount flow * update mount logic * fix stake font size * fix conflicts * Fixed create channel ui , fixed message for unlock profile, removed governance from sidebar (#1817) * fixed minor ui issues * fixed minor ui issues * fixed minor ui issues * fixed select text color * fixed select text color * fixed select text color * fixed chain issue * fixed send notif delegate issue (#1822) * fixed send notif delegate issue * Fixed the send notification button on the navigation for delegatee list * added fixes for alias * added fixes for alias * fixed review comment --------- Co-authored-by: abhishek-01k * DApp-1799 blocks/table (#1824) * table in progress * in progress * in progress * table complete * fixed header route + reverted changes * added alignment support * set debug to false * fix comments * export type and fix issues * update rewards notification * fix loading state * add activit days * update locked status * updates test whitelist file for nft claims * fixed smart contract for alpha nft * update reset time * refactor code * update fixes * stake push * update types * update yarn.lock * update icons * update icons batch 2 * sort stake section * add local storage key * update hasEnded and has text * fixed channel notifications (#1852) * added the new monotone icons (#1857) * added support for icons in tag components (#1853) * update stat in yield farming data store (#1859) * update refetch leaderboard * fix double text issue - media query * update icon * hide notifs * update font sizes * fix invalid verification proof issue * remove console * update success flow * fixes done * removed the png file * lock file fixed * remove isActive Account in auth hook --------- Co-authored-by: Monalisha Mishra Co-authored-by: rohitmalhotra1420 Co-authored-by: Kalash Shah <81062983+kalashshah@users.noreply.github.com> Co-authored-by: Monalisha Mishra <42746736+mishramonalisha76@users.noreply.github.com> Co-authored-by: Abhishek <77395788+abhishek-01k@users.noreply.github.com> Co-authored-by: abhishek-01k --- src/App.tsx | 14 +- src/blocks/icons/components/Clockwise.tsx | 59 + src/blocks/icons/components/Lock.tsx | 42 + src/blocks/icons/components/Stopwatch.tsx | 30 + src/blocks/icons/index.ts | 5 + .../components/ActivePushPoints.tsx | 60 + .../components/AlphaAccessNFT.tsx | 338 +++ .../BlueBonusActivitySubscribers.tsx | 61 + .../illustrations/components/CheckCircle.tsx | 42 + .../components/CreateChannelPoints.tsx | 80 + .../components/GatedGroupPoints.tsx | 76 + .../GradientBonusActivitySubscribers.tsx | 99 + .../GreyBonusActivitySubscribers.tsx | 57 + .../components/MultipleRewardsCoin.tsx | 350 +++ .../illustrations/components/Multiplier.tsx | 58 + .../{Notification.tsx => NotificationImg.tsx} | 6 +- .../OrangeBonusActivitySubscribers.tsx | 57 + .../illustrations/components/RewardsCoin.tsx | 120 ++ .../illustrations/components/RockstarNFT.tsx | 104 + .../components/SetupProfilePoints.tsx | 296 +++ .../components/StakePushBlueCoin.tsx | 78 + .../components/StakePushBlueMultiplier.tsx | 94 + .../components/StakePushGradientCoin.tsx | 116 + .../StakePushGradientMultiplier.tsx | 156 ++ .../components/StakePushGreyCoin.tsx | 78 + .../components/StakePushGreyMultiplier.tsx | 68 + .../components/StakePushOrangeCoin.tsx | 78 + .../StakePushOrangeDoubleStarMultiplier.tsx | 94 + .../components/StakePushOrangeMultiplier.tsx | 68 + .../components/StakePushPurpleCoin.tsx | 78 + .../components/StakePushYellowCoin.tsx | 78 + .../components/StakePushYellowMultiplier.tsx | 171 ++ .../components/SubscribePoints.tsx | 66 + .../components/TripleRewardsCoin.tsx | 163 ++ .../YellowBonusActivitySubscribers.tsx | 61 + src/blocks/illustrations/index.ts | 65 +- src/blocks/index.ts | 2 +- src/blocks/notification/Notification.tsx | 22 +- src/common/Common.localStorageKeys.ts | 6 + src/common/components/ModalHeader.tsx | 36 +- src/common/components/StakingVariant.tsx | 12 +- src/common/components/Stepper.tsx | 4 +- src/common/hooks/index.ts | 1 + src/common/hooks/useRewardsNotification.tsx | 49 + src/common/index.ts | 1 + .../chat/unlockProfile/UnlockProfile.tsx | 38 +- src/config/alphaAccessNft/testWhiteList.json | 4 +- src/config/config-dev.js | 2 +- src/config/config-staging.js | 2 +- src/contexts/AppContext.tsx | 52 +- src/contexts/RewardsContext.tsx | 13 +- src/modules/addNewChain/AddNewChain.tsx | 8 +- .../components/CreateChannelHeader.tsx | 8 +- .../components/DashboardSubHeader.tsx | 4 +- .../dashboard/components/RewardsSection.tsx | 4 +- src/modules/rewards/Rewards.tsx | 8 +- .../rewards/components/ActivityButton.tsx | 29 +- .../components/ActivityVerificationButton.tsx | 56 +- .../components/BonusActivitiesItem.tsx | 179 ++ .../components/BonusActivitiesSection.tsx | 92 + .../rewards/components/DailyRewardsItem.tsx | 82 + .../components/DailyRewardsSection.tsx | 167 ++ .../rewards/components/DashboardSection.tsx | 8 + .../components/DashboardSectionPoints.tsx | 39 +- .../rewards/components/LeaderBoardList.tsx | 11 +- .../components/LeaderBoardListItem.tsx | 8 +- .../rewards/components/LeaderBoardSection.tsx | 4 +- .../rewards/components/ReferralSection.tsx | 6 +- .../RewardsActivitiesBottomSection.tsx | 65 + .../components/RewardsActivitiesList.tsx | 112 +- .../components/RewardsActivitiesListItem.tsx | 154 +- .../components/RewardsActivitiesSection.tsx | 2 +- .../components/RewardsActivityIcon.tsx | 267 ++- .../components/RewardsActivityTitle.tsx | 47 +- .../components/RewardsTabsContainer.tsx | 32 +- .../StakePushActivitiesListItem.tsx | 193 ++ .../rewards/components/StakePushSection.tsx | 205 ++ .../rewards/hooks/useCreateRewardsUser.tsx | 15 +- src/modules/rewards/hooks/useDailyRewards.tsx | 131 ++ .../rewards/hooks/useFormattedDuration.tsx | 42 + src/modules/rewards/hooks/useLockedStatus.tsx | 83 + src/modules/rewards/hooks/useRewardsAuth.tsx | 4 +- .../hooks/useStakeRewardsResetTime.tsx | 166 ++ .../rewards/hooks/useVerifyDiscord.tsx | 115 +- .../rewards/hooks/useVerifyRewards.tsx | 121 ++ .../rewards/hooks/useVerifyTwitter.tsx | 129 +- .../rewards/hooks/useWithAuthButton.tsx | 18 +- .../rewards/utils/activityTypeArray.ts | 59 + .../utils/resolveRecentActivityStatus.ts | 58 + .../rewards/utils/stakeRewardUtilities.ts | 66 + .../sendNotification/SendNotification.tsx | 4 +- src/queries/hooks/rewards/index.ts | 3 + .../hooks/rewards/useGetPushStakeEpoch.ts | 9 + .../rewards/useGetRewardActivityStatus.ts | 9 + .../hooks/rewards/useGetRewardsActivities.ts | 20 +- .../hooks/rewards/useGetUniV2StakeEpoch.ts | 9 + .../rewards/createUserRewardsDetailsModel.ts | 2 +- .../models/rewards/getPushStakeEpochModel.ts | 3 + .../rewards/getRewardActivityStatusModel.ts | 4 + .../models/rewards/getUniV2StakeEpochModel.ts | 3 + src/queries/models/rewards/index.ts | 3 + src/queries/queryKeys.ts | 21 +- .../services/rewards/getPushStakeEpoch.ts | 10 + .../rewards/getRewardActivityStatus.ts | 14 + .../services/rewards/getRewardsActivities.ts | 10 +- .../services/rewards/getUniV2StakeEpoch.ts | 10 + src/queries/services/rewards/index.ts | 3 + src/queries/types/rewards.ts | 93 +- src/structure/Header.tsx | 7 +- yarn.lock | 1918 ++++++++--------- 110 files changed, 7304 insertions(+), 1358 deletions(-) create mode 100644 src/blocks/icons/components/Clockwise.tsx create mode 100644 src/blocks/icons/components/Lock.tsx create mode 100644 src/blocks/icons/components/Stopwatch.tsx create mode 100644 src/blocks/illustrations/components/ActivePushPoints.tsx create mode 100644 src/blocks/illustrations/components/AlphaAccessNFT.tsx create mode 100644 src/blocks/illustrations/components/BlueBonusActivitySubscribers.tsx create mode 100644 src/blocks/illustrations/components/CheckCircle.tsx create mode 100644 src/blocks/illustrations/components/CreateChannelPoints.tsx create mode 100644 src/blocks/illustrations/components/GatedGroupPoints.tsx create mode 100644 src/blocks/illustrations/components/GradientBonusActivitySubscribers.tsx create mode 100644 src/blocks/illustrations/components/GreyBonusActivitySubscribers.tsx create mode 100644 src/blocks/illustrations/components/MultipleRewardsCoin.tsx create mode 100644 src/blocks/illustrations/components/Multiplier.tsx rename src/blocks/illustrations/components/{Notification.tsx => NotificationImg.tsx} (97%) create mode 100644 src/blocks/illustrations/components/OrangeBonusActivitySubscribers.tsx create mode 100644 src/blocks/illustrations/components/RewardsCoin.tsx create mode 100644 src/blocks/illustrations/components/RockstarNFT.tsx create mode 100644 src/blocks/illustrations/components/SetupProfilePoints.tsx create mode 100644 src/blocks/illustrations/components/StakePushBlueCoin.tsx create mode 100644 src/blocks/illustrations/components/StakePushBlueMultiplier.tsx create mode 100644 src/blocks/illustrations/components/StakePushGradientCoin.tsx create mode 100644 src/blocks/illustrations/components/StakePushGradientMultiplier.tsx create mode 100644 src/blocks/illustrations/components/StakePushGreyCoin.tsx create mode 100644 src/blocks/illustrations/components/StakePushGreyMultiplier.tsx create mode 100644 src/blocks/illustrations/components/StakePushOrangeCoin.tsx create mode 100644 src/blocks/illustrations/components/StakePushOrangeDoubleStarMultiplier.tsx create mode 100644 src/blocks/illustrations/components/StakePushOrangeMultiplier.tsx create mode 100644 src/blocks/illustrations/components/StakePushPurpleCoin.tsx create mode 100644 src/blocks/illustrations/components/StakePushYellowCoin.tsx create mode 100644 src/blocks/illustrations/components/StakePushYellowMultiplier.tsx create mode 100644 src/blocks/illustrations/components/SubscribePoints.tsx create mode 100644 src/blocks/illustrations/components/TripleRewardsCoin.tsx create mode 100644 src/blocks/illustrations/components/YellowBonusActivitySubscribers.tsx create mode 100644 src/common/Common.localStorageKeys.ts create mode 100644 src/common/hooks/useRewardsNotification.tsx create mode 100644 src/modules/rewards/components/BonusActivitiesItem.tsx create mode 100644 src/modules/rewards/components/BonusActivitiesSection.tsx create mode 100644 src/modules/rewards/components/DailyRewardsItem.tsx create mode 100644 src/modules/rewards/components/DailyRewardsSection.tsx create mode 100644 src/modules/rewards/components/RewardsActivitiesBottomSection.tsx create mode 100644 src/modules/rewards/components/StakePushActivitiesListItem.tsx create mode 100644 src/modules/rewards/components/StakePushSection.tsx create mode 100644 src/modules/rewards/hooks/useDailyRewards.tsx create mode 100644 src/modules/rewards/hooks/useFormattedDuration.tsx create mode 100644 src/modules/rewards/hooks/useLockedStatus.tsx create mode 100644 src/modules/rewards/hooks/useStakeRewardsResetTime.tsx create mode 100644 src/modules/rewards/hooks/useVerifyRewards.tsx create mode 100644 src/modules/rewards/utils/activityTypeArray.ts create mode 100644 src/modules/rewards/utils/resolveRecentActivityStatus.ts create mode 100644 src/modules/rewards/utils/stakeRewardUtilities.ts create mode 100644 src/queries/hooks/rewards/useGetPushStakeEpoch.ts create mode 100644 src/queries/hooks/rewards/useGetRewardActivityStatus.ts create mode 100644 src/queries/hooks/rewards/useGetUniV2StakeEpoch.ts create mode 100644 src/queries/models/rewards/getPushStakeEpochModel.ts create mode 100644 src/queries/models/rewards/getRewardActivityStatusModel.ts create mode 100644 src/queries/models/rewards/getUniV2StakeEpochModel.ts create mode 100644 src/queries/services/rewards/getPushStakeEpoch.ts create mode 100644 src/queries/services/rewards/getRewardActivityStatus.ts create mode 100644 src/queries/services/rewards/getUniV2StakeEpoch.ts diff --git a/src/App.tsx b/src/App.tsx index 07e5a4bf84..1297c11491 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,5 +1,5 @@ // React + Web3 Essentials -import { FC, useContext, useEffect, useMemo, useRef, useState } from 'react'; +import { FC, useContext, useEffect, useMemo, useState } from 'react'; // External Packages import * as dotenv from 'dotenv'; @@ -11,7 +11,6 @@ import styled, { ThemeProvider } from 'styled-components'; import { ChatUIProvider, darkChatTheme, IChatTheme } from '@pushprotocol/uiweb'; import { createGlobalStyle } from 'styled-components'; -import { Toaster } from 'sonner'; // Internal Compoonents import InitState from 'components/InitState'; @@ -51,8 +50,9 @@ import { darkTheme, lightTheme } from 'config/spaceTheme'; import SpaceComponentContextProvider from 'contexts/SpaceComponentsContext'; import SpaceContextProvider from 'contexts/SpaceContext'; import { SpaceWidgetSection } from 'sections/space/SpaceWidgetSection'; -import { blocksColors, getBlocksCSSVariables } from 'blocks'; +import { blocksColors, getBlocksCSSVariables, Notification } from 'blocks'; import APP_PATHS from 'config/AppPaths'; +import { useRewardsNotification } from 'common'; dotenv.config(); @@ -193,6 +193,8 @@ export default function App() { const dispatch = useDispatch(); const { isActive, account, provider } = useAccount(); + // TODO: comment until rewards v2 launch is accounced + // useRewardsNotification(); const [currentTime, setcurrentTime] = useState(0); const { pgpPvtKey } = useContext(AppContext); @@ -347,11 +349,7 @@ export default function App() { <> - + = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default Clockwise; diff --git a/src/blocks/icons/components/Lock.tsx b/src/blocks/icons/components/Lock.tsx new file mode 100644 index 0000000000..9b95956f11 --- /dev/null +++ b/src/blocks/icons/components/Lock.tsx @@ -0,0 +1,42 @@ +import { FC } from 'react'; +import { IconWrapper } from '../IconWrapper'; +import { IconProps } from '../Icons.types'; + +const Lock: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default Lock; diff --git a/src/blocks/icons/components/Stopwatch.tsx b/src/blocks/icons/components/Stopwatch.tsx new file mode 100644 index 0000000000..66095bd799 --- /dev/null +++ b/src/blocks/icons/components/Stopwatch.tsx @@ -0,0 +1,30 @@ +import { FC } from 'react'; +import { IconWrapper } from '../IconWrapper'; +import { IconProps } from '../Icons.types'; + +const Stopwatch: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + } + {...restProps} + /> + ); +}; + +export default Stopwatch; diff --git a/src/blocks/icons/index.ts b/src/blocks/icons/index.ts index ecb14ee2cf..3d846cc4b3 100644 --- a/src/blocks/icons/index.ts +++ b/src/blocks/icons/index.ts @@ -40,6 +40,7 @@ export { default as ChannelHomeFilled } from './components/ChannelHomeFilled'; export { default as Chat } from './components/Chat'; export { default as ChatFilled } from './components/ChatFilled'; +export { default as Clockwise } from './components/Clockwise'; export { default as CircleFilled } from './components/CircleFilled'; export { default as CloudUpload } from './components/CloudUpload'; @@ -91,6 +92,8 @@ export { default as KebabMenuHorizontal } from './components/KebabMenuHorizontal export { default as LightFilled } from './components/LightFilled'; +export { default as Lock } from './components/Lock'; + export { default as MaximizeRight } from './components/MaximizeRight'; export { default as MaximizeLeft } from './components/MaximizeLeft'; @@ -154,6 +157,8 @@ export { default as Star } from './components/Star'; export { default as Settings } from './components/Settings'; +export { default as Stopwatch } from './components/Stopwatch'; + export { default as Swap } from './components/Swap'; export { default as Tick } from './components/Tick'; diff --git a/src/blocks/illustrations/components/ActivePushPoints.tsx b/src/blocks/illustrations/components/ActivePushPoints.tsx new file mode 100644 index 0000000000..466619c332 --- /dev/null +++ b/src/blocks/illustrations/components/ActivePushPoints.tsx @@ -0,0 +1,60 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const ActivePushPoints: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default ActivePushPoints; diff --git a/src/blocks/illustrations/components/AlphaAccessNFT.tsx b/src/blocks/illustrations/components/AlphaAccessNFT.tsx new file mode 100644 index 0000000000..78e4e7922d --- /dev/null +++ b/src/blocks/illustrations/components/AlphaAccessNFT.tsx @@ -0,0 +1,338 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const AlphaAccessPoints: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default AlphaAccessPoints; diff --git a/src/blocks/illustrations/components/BlueBonusActivitySubscribers.tsx b/src/blocks/illustrations/components/BlueBonusActivitySubscribers.tsx new file mode 100644 index 0000000000..2346e1bd05 --- /dev/null +++ b/src/blocks/illustrations/components/BlueBonusActivitySubscribers.tsx @@ -0,0 +1,61 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const BlueBonusActivitySubscribers: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default BlueBonusActivitySubscribers; diff --git a/src/blocks/illustrations/components/CheckCircle.tsx b/src/blocks/illustrations/components/CheckCircle.tsx new file mode 100644 index 0000000000..a6fcc3cf70 --- /dev/null +++ b/src/blocks/illustrations/components/CheckCircle.tsx @@ -0,0 +1,42 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const CheckCircle: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default CheckCircle; diff --git a/src/blocks/illustrations/components/CreateChannelPoints.tsx b/src/blocks/illustrations/components/CreateChannelPoints.tsx new file mode 100644 index 0000000000..6f918dcc11 --- /dev/null +++ b/src/blocks/illustrations/components/CreateChannelPoints.tsx @@ -0,0 +1,80 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const CreateChannelPoints: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default CreateChannelPoints; diff --git a/src/blocks/illustrations/components/GatedGroupPoints.tsx b/src/blocks/illustrations/components/GatedGroupPoints.tsx new file mode 100644 index 0000000000..cf7a7706b2 --- /dev/null +++ b/src/blocks/illustrations/components/GatedGroupPoints.tsx @@ -0,0 +1,76 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const GatedGroupPoints: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default GatedGroupPoints; diff --git a/src/blocks/illustrations/components/GradientBonusActivitySubscribers.tsx b/src/blocks/illustrations/components/GradientBonusActivitySubscribers.tsx new file mode 100644 index 0000000000..fa3cd6213a --- /dev/null +++ b/src/blocks/illustrations/components/GradientBonusActivitySubscribers.tsx @@ -0,0 +1,99 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const GradientBonusActivitySubscribers: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default GradientBonusActivitySubscribers; diff --git a/src/blocks/illustrations/components/GreyBonusActivitySubscribers.tsx b/src/blocks/illustrations/components/GreyBonusActivitySubscribers.tsx new file mode 100644 index 0000000000..04194371d3 --- /dev/null +++ b/src/blocks/illustrations/components/GreyBonusActivitySubscribers.tsx @@ -0,0 +1,57 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const GreyBonusActivitySubscribers: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default GreyBonusActivitySubscribers; diff --git a/src/blocks/illustrations/components/MultipleRewardsCoin.tsx b/src/blocks/illustrations/components/MultipleRewardsCoin.tsx new file mode 100644 index 0000000000..826238a072 --- /dev/null +++ b/src/blocks/illustrations/components/MultipleRewardsCoin.tsx @@ -0,0 +1,350 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const MultipleRewardsCoin: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default MultipleRewardsCoin; diff --git a/src/blocks/illustrations/components/Multiplier.tsx b/src/blocks/illustrations/components/Multiplier.tsx new file mode 100644 index 0000000000..7b0d4e11fe --- /dev/null +++ b/src/blocks/illustrations/components/Multiplier.tsx @@ -0,0 +1,58 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const Multiplier: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default Multiplier; diff --git a/src/blocks/illustrations/components/Notification.tsx b/src/blocks/illustrations/components/NotificationImg.tsx similarity index 97% rename from src/blocks/illustrations/components/Notification.tsx rename to src/blocks/illustrations/components/NotificationImg.tsx index 6ebd6e6598..4f12fcfca6 100644 --- a/src/blocks/illustrations/components/Notification.tsx +++ b/src/blocks/illustrations/components/NotificationImg.tsx @@ -2,11 +2,11 @@ import { FC } from 'react'; import { IllustrationWrapper } from '../IllustrationWrapper'; import { IllustrationProps } from '../Illustrations.types'; -const Notification: FC = (allProps) => { +const NotificationImg: FC = (allProps) => { const { svgProps: props, ...restProps } = allProps; return ( = (allProps) => { ); }; -export default Notification; +export default NotificationImg; diff --git a/src/blocks/illustrations/components/OrangeBonusActivitySubscribers.tsx b/src/blocks/illustrations/components/OrangeBonusActivitySubscribers.tsx new file mode 100644 index 0000000000..1e11dab95d --- /dev/null +++ b/src/blocks/illustrations/components/OrangeBonusActivitySubscribers.tsx @@ -0,0 +1,57 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const OrangeBonusActivitySubscribers: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default OrangeBonusActivitySubscribers; diff --git a/src/blocks/illustrations/components/RewardsCoin.tsx b/src/blocks/illustrations/components/RewardsCoin.tsx new file mode 100644 index 0000000000..8363e92be7 --- /dev/null +++ b/src/blocks/illustrations/components/RewardsCoin.tsx @@ -0,0 +1,120 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const RewardsCoin: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default RewardsCoin; diff --git a/src/blocks/illustrations/components/RockstarNFT.tsx b/src/blocks/illustrations/components/RockstarNFT.tsx new file mode 100644 index 0000000000..ac84a7f118 --- /dev/null +++ b/src/blocks/illustrations/components/RockstarNFT.tsx @@ -0,0 +1,104 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const RockstarNFT: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default RockstarNFT; diff --git a/src/blocks/illustrations/components/SetupProfilePoints.tsx b/src/blocks/illustrations/components/SetupProfilePoints.tsx new file mode 100644 index 0000000000..ac4bdd5803 --- /dev/null +++ b/src/blocks/illustrations/components/SetupProfilePoints.tsx @@ -0,0 +1,296 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const SetupProfilePoints: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default SetupProfilePoints; diff --git a/src/blocks/illustrations/components/StakePushBlueCoin.tsx b/src/blocks/illustrations/components/StakePushBlueCoin.tsx new file mode 100644 index 0000000000..a61c17db26 --- /dev/null +++ b/src/blocks/illustrations/components/StakePushBlueCoin.tsx @@ -0,0 +1,78 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const StakePushBlueCoin: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default StakePushBlueCoin; diff --git a/src/blocks/illustrations/components/StakePushBlueMultiplier.tsx b/src/blocks/illustrations/components/StakePushBlueMultiplier.tsx new file mode 100644 index 0000000000..cc453a964d --- /dev/null +++ b/src/blocks/illustrations/components/StakePushBlueMultiplier.tsx @@ -0,0 +1,94 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const StakePushBlueMultiplier: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default StakePushBlueMultiplier; diff --git a/src/blocks/illustrations/components/StakePushGradientCoin.tsx b/src/blocks/illustrations/components/StakePushGradientCoin.tsx new file mode 100644 index 0000000000..7ad3ac70d4 --- /dev/null +++ b/src/blocks/illustrations/components/StakePushGradientCoin.tsx @@ -0,0 +1,116 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const StakePushGradientCoin: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default StakePushGradientCoin; diff --git a/src/blocks/illustrations/components/StakePushGradientMultiplier.tsx b/src/blocks/illustrations/components/StakePushGradientMultiplier.tsx new file mode 100644 index 0000000000..51d4059dd2 --- /dev/null +++ b/src/blocks/illustrations/components/StakePushGradientMultiplier.tsx @@ -0,0 +1,156 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const StakePushGradientMultiplier: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default StakePushGradientMultiplier; diff --git a/src/blocks/illustrations/components/StakePushGreyCoin.tsx b/src/blocks/illustrations/components/StakePushGreyCoin.tsx new file mode 100644 index 0000000000..1865a8f7e5 --- /dev/null +++ b/src/blocks/illustrations/components/StakePushGreyCoin.tsx @@ -0,0 +1,78 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const StakePushGreyCoin: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default StakePushGreyCoin; diff --git a/src/blocks/illustrations/components/StakePushGreyMultiplier.tsx b/src/blocks/illustrations/components/StakePushGreyMultiplier.tsx new file mode 100644 index 0000000000..71b96d39ba --- /dev/null +++ b/src/blocks/illustrations/components/StakePushGreyMultiplier.tsx @@ -0,0 +1,68 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const StakePushGreyMultiplier: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default StakePushGreyMultiplier; diff --git a/src/blocks/illustrations/components/StakePushOrangeCoin.tsx b/src/blocks/illustrations/components/StakePushOrangeCoin.tsx new file mode 100644 index 0000000000..ff4ebf49f0 --- /dev/null +++ b/src/blocks/illustrations/components/StakePushOrangeCoin.tsx @@ -0,0 +1,78 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const StakePushOrangeCoin: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default StakePushOrangeCoin; diff --git a/src/blocks/illustrations/components/StakePushOrangeDoubleStarMultiplier.tsx b/src/blocks/illustrations/components/StakePushOrangeDoubleStarMultiplier.tsx new file mode 100644 index 0000000000..93de81ad8c --- /dev/null +++ b/src/blocks/illustrations/components/StakePushOrangeDoubleStarMultiplier.tsx @@ -0,0 +1,94 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const StakePushOrangeDoubleStarMultiplier: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default StakePushOrangeDoubleStarMultiplier; diff --git a/src/blocks/illustrations/components/StakePushOrangeMultiplier.tsx b/src/blocks/illustrations/components/StakePushOrangeMultiplier.tsx new file mode 100644 index 0000000000..5fb5984305 --- /dev/null +++ b/src/blocks/illustrations/components/StakePushOrangeMultiplier.tsx @@ -0,0 +1,68 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const StakePushOrangeMultiplier: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default StakePushOrangeMultiplier; diff --git a/src/blocks/illustrations/components/StakePushPurpleCoin.tsx b/src/blocks/illustrations/components/StakePushPurpleCoin.tsx new file mode 100644 index 0000000000..16794736ed --- /dev/null +++ b/src/blocks/illustrations/components/StakePushPurpleCoin.tsx @@ -0,0 +1,78 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const StakePushPurpleCoin: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default StakePushPurpleCoin; diff --git a/src/blocks/illustrations/components/StakePushYellowCoin.tsx b/src/blocks/illustrations/components/StakePushYellowCoin.tsx new file mode 100644 index 0000000000..7a5795635d --- /dev/null +++ b/src/blocks/illustrations/components/StakePushYellowCoin.tsx @@ -0,0 +1,78 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const StakePushYellowCoin: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default StakePushYellowCoin; diff --git a/src/blocks/illustrations/components/StakePushYellowMultiplier.tsx b/src/blocks/illustrations/components/StakePushYellowMultiplier.tsx new file mode 100644 index 0000000000..055d157e09 --- /dev/null +++ b/src/blocks/illustrations/components/StakePushYellowMultiplier.tsx @@ -0,0 +1,171 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const StakePushYellowMultiplier: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + + + + + + + + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + } + {...restProps} + /> + ); +}; + +export default StakePushYellowMultiplier; diff --git a/src/blocks/illustrations/components/SubscribePoints.tsx b/src/blocks/illustrations/components/SubscribePoints.tsx new file mode 100644 index 0000000000..89506e6c21 --- /dev/null +++ b/src/blocks/illustrations/components/SubscribePoints.tsx @@ -0,0 +1,66 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const SubscribePoints: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default SubscribePoints; diff --git a/src/blocks/illustrations/components/TripleRewardsCoin.tsx b/src/blocks/illustrations/components/TripleRewardsCoin.tsx new file mode 100644 index 0000000000..410c018504 --- /dev/null +++ b/src/blocks/illustrations/components/TripleRewardsCoin.tsx @@ -0,0 +1,163 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const TripleRewardsCoin: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default TripleRewardsCoin; diff --git a/src/blocks/illustrations/components/YellowBonusActivitySubscribers.tsx b/src/blocks/illustrations/components/YellowBonusActivitySubscribers.tsx new file mode 100644 index 0000000000..47d53625ec --- /dev/null +++ b/src/blocks/illustrations/components/YellowBonusActivitySubscribers.tsx @@ -0,0 +1,61 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const YellowBonusActivitySubscribers: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default YellowBonusActivitySubscribers; diff --git a/src/blocks/illustrations/index.ts b/src/blocks/illustrations/index.ts index f39e5fcd6a..0b006f4130 100644 --- a/src/blocks/illustrations/index.ts +++ b/src/blocks/illustrations/index.ts @@ -1,25 +1,46 @@ export * from './IllustrationWrapper'; export * from './Illustrations.types'; +export { default as ActivePushPoints } from './components/ActivePushPoints'; + +export { default as AlphaAccessNFT } from './components/AlphaAccessNFT'; + export { default as Arbitrum } from './components/Arbitrum'; export { default as Base } from './components/Base'; + +export { default as BlueBonusActivitySubscribers } from './components/BlueBonusActivitySubscribers'; + export { default as BNB } from './components/BNB'; export { default as ChatIllustration } from './components/Chat'; + export { default as ChatDark } from './components/ChatDark'; +export { default as CheckCircle } from './components/CheckCircle'; + export { default as Communication } from './components/Communication'; + export { default as CommunicationDark } from './components/CommunicationDark'; +export { default as CreateChannelPoints } from './components/CreateChannelPoints'; + export { default as Discord } from './components/Discord'; export { default as EarnOnPush } from './components/EarnOnPush'; export { default as Ethereum } from './components/Ethereum'; +export { default as GatedGroupPoints } from './components/GatedGroupPoints'; + +export { default as GradientBonusActivitySubscribers } from './components/GradientBonusActivitySubscribers'; + +export { default as GreyBonusActivitySubscribers } from './components/GreyBonusActivitySubscribers'; + export { default as Linea } from './components/Linea'; +export { default as OrangeBonusActivitySubscribers } from './components/OrangeBonusActivitySubscribers'; + export { default as PushAlpha } from './components/PushAlpha'; export { default as PushBot } from './components/PushBot'; @@ -30,20 +51,62 @@ export { default as Points } from './components/Points'; export { default as Metamask } from './components/Metamask'; -export { default as Notification } from './components/Notification'; +export { default as Multiplier } from './components/Multiplier'; + +export { default as MultipleRewardsCoin } from './components/MultipleRewardsCoin'; + +export { default as NotificationImg } from './components/NotificationImg'; + export { default as NotificationDark } from './components/NotificationDark'; export { default as RewardsBell } from './components/RewardsBell'; export { default as RewardPoints } from './components/RewardPoints'; +export { default as RockstarNFT } from './components/RockstarNFT'; + export { default as Referral } from './components/Referral'; +export { default as SetupProfilePoints } from './components/SetupProfilePoints'; + +export { default as StakePushBlueCoin } from './components/StakePushBlueCoin'; + +export { default as StakePushBlueMultiplier } from './components/StakePushBlueMultiplier'; + +export { default as StakePushGradientCoin } from './components/StakePushGradientCoin'; + +export { default as StakePushGradientMultiplier } from './components/StakePushGradientMultiplier'; + +export { default as StakePushGreyCoin } from './components/StakePushGreyCoin'; + +export { default as StakePushGreyMultiplier } from './components/StakePushGreyMultiplier'; + +export { default as StakePushOrangeCoin } from './components/StakePushOrangeCoin'; + +export { default as StakePushOrangeMultiplier } from './components/StakePushOrangeMultiplier'; + +export { default as StakePushOrangeDoubleStarMultiplier } from './components/StakePushOrangeDoubleStarMultiplier'; + +export { default as StakePushPurpleCoin } from './components/StakePushPurpleCoin'; + +export { default as StakePushYellowCoin } from './components/StakePushYellowCoin'; + +export { default as StakePushYellowMultiplier } from './components/StakePushYellowMultiplier'; + +export { default as SubscribePoints } from './components/SubscribePoints'; + +export { default as TripleRewardsCoin } from './components/TripleRewardsCoin'; + export { default as Twitter } from './components/Twitter'; export { default as RewardsActivity } from './components/RewardsActivity'; +export { default as RewardsCoin } from './components/RewardsCoin'; + export { default as PushLogo } from './components/PushLogo'; export { default as Polygon } from './components/Polygon'; + export { default as PolygonZK } from './components/PolygonZK'; + +export { default as YellowBonusActivitySubscribers } from './components/YellowBonusActivitySubscribers'; diff --git a/src/blocks/index.ts b/src/blocks/index.ts index e6cf7852db..bd1534fafa 100644 --- a/src/blocks/index.ts +++ b/src/blocks/index.ts @@ -7,7 +7,7 @@ export { Link, type LinkProps } from './link'; export { Lozenge, type LozengeProps } from './lozenge'; export { Menu, type MenuProps, MenuItem, type MenuItemComponentProps } from './menu'; export { Modal, type ModalProps, modal } from './modal'; -export { notification } from './notification'; +export { notification, Notification } from './notification'; export { Pagination, type PaginationProps } from './pagination'; export { ProgressBar, type ProgressBarProps } from './progressBar'; export { Separator, type SeparatorProps } from './separator'; diff --git a/src/blocks/notification/Notification.tsx b/src/blocks/notification/Notification.tsx index 536e252b19..0a873a5c82 100644 --- a/src/blocks/notification/Notification.tsx +++ b/src/blocks/notification/Notification.tsx @@ -2,7 +2,7 @@ import { FC } from 'react'; import styled from 'styled-components'; import { Cross } from '../icons'; import { NotificationProps } from './Notification.types'; -import { toast } from 'sonner'; +import { toast, Toaster } from 'sonner'; import { getTextVariantStyles } from 'blocks/Blocks.utils'; const NotificationContainer = styled.div` @@ -61,7 +61,8 @@ const CloseButton = styled.div` top: var(--spacing-xxs); `; -const Notification: FC = ({ onClose, title, description, image, onClick }) => { +const NotificationItem: FC = ({ onClose, title, description, image, onClick }) => { + const handleNotificationClick = () => onClick?.(); const handleNotificationClose = () => { @@ -88,13 +89,25 @@ const Notification: FC = ({ onClose, title, description, imag ); }; +const Notification = () => { + return ( + + ); +}; + + // Store the toastId(s) in an array to manage multiple notifications const toastIds: Array = []; // Export the notification object with show and hide methods const notification = { show: (config: NotificationProps) => { - const toastId = toast.custom(() => , { + const toastId = toast.custom(() => , { + duration: config.duration || Infinity, position: config.position || 'bottom-right', }); @@ -108,4 +121,5 @@ const notification = { }, }; -export { notification }; +export { notification, Notification }; + diff --git a/src/common/Common.localStorageKeys.ts b/src/common/Common.localStorageKeys.ts new file mode 100644 index 0000000000..dcde1f4e3f --- /dev/null +++ b/src/common/Common.localStorageKeys.ts @@ -0,0 +1,6 @@ +const CommonLocalStorageKeys = { + notificationShown: 'notificationShown', + resetStakeEndDate: 'resetStakeEndDate', +}; + +export { CommonLocalStorageKeys }; diff --git a/src/common/components/ModalHeader.tsx b/src/common/components/ModalHeader.tsx index 0341c4d7d2..2366caab4b 100644 --- a/src/common/components/ModalHeader.tsx +++ b/src/common/components/ModalHeader.tsx @@ -1,15 +1,12 @@ -import { FC } from "react"; -import { Box, Text } from "blocks"; +import { FC } from 'react'; +import { Box, Text } from 'blocks'; type ModalHeaderProps = { title: string; description: string; -} +}; -const ModalHeader: FC = ({ - title, - description -}) => { +const ModalHeader: FC = ({ title, description }) => { return ( = ({ gap="spacing-xxxs" alignSelf="stretch" > - {title} {description} - {title} {description} - ); }; -export { ModalHeader }; \ No newline at end of file +export { ModalHeader }; diff --git a/src/common/components/StakingVariant.tsx b/src/common/components/StakingVariant.tsx index 1bbef3d537..611cb51656 100644 --- a/src/common/components/StakingVariant.tsx +++ b/src/common/components/StakingVariant.tsx @@ -95,14 +95,14 @@ const StakingVariant: FC = ({ {title} {title} @@ -110,7 +110,7 @@ const StakingVariant: FC = ({ {description} @@ -118,7 +118,7 @@ const StakingVariant: FC = ({ {description} @@ -141,14 +141,14 @@ const StakingVariant: FC = ({ {fees} PUSH {fees} PUSH diff --git a/src/common/components/Stepper.tsx b/src/common/components/Stepper.tsx index 16b828f6cd..3ff3a05cfb 100644 --- a/src/common/components/Stepper.tsx +++ b/src/common/components/Stepper.tsx @@ -61,7 +61,7 @@ const Stepper: FC = ({ steps, setActiveStepKey, completedSteps }) color={completedSteps.includes(step.value) ? 'text-brand-medium' : 'text-tertiary'} variant="h5-semibold" ellipsis - display={{ ml: 'none', dp: 'block' }} + display={{ ml: 'none', initial: 'block' }} > {step.label} @@ -70,7 +70,7 @@ const Stepper: FC = ({ steps, setActiveStepKey, completedSteps }) ellipsis textAlign="center" variant="h6-semibold" - display={{ ml: 'block', dp: 'none' }} + display={{ ml: 'block', initial: 'none' }} > {step.label} diff --git a/src/common/hooks/index.ts b/src/common/hooks/index.ts index d872d65587..c86b3c4920 100644 --- a/src/common/hooks/index.ts +++ b/src/common/hooks/index.ts @@ -1,3 +1,4 @@ export { useIsVisible } from './useIsVisible'; export { usePushStakingStats } from './usePushStakingStats'; +export { useRewardsNotification } from './useRewardsNotification'; export { useDisclosure } from './useDisclosure'; diff --git a/src/common/hooks/useRewardsNotification.tsx b/src/common/hooks/useRewardsNotification.tsx new file mode 100644 index 0000000000..f39b4f9698 --- /dev/null +++ b/src/common/hooks/useRewardsNotification.tsx @@ -0,0 +1,49 @@ +// React and other libraries +import { useEffect, useState } from 'react'; +import { useNavigate, useLocation } from 'react-router-dom'; + +// components +import { notification, RewardPoints } from 'blocks'; +import { CommonLocalStorageKeys } from 'common'; + +export const useRewardsNotification = () => { + const location = useLocation(); + const navigate = useNavigate(); + const [hasMounted, setHasMounted] = useState(false); + + const notificationAlreadyShown = localStorage.getItem('notificationShown') === 'true'; + const isRewardsRelatedPage = location?.pathname.includes('/points') || location?.pathname.includes('/discord'); + + const showNotification = () => + notification.show({ + title: 'Push Points are Live', + description: 'Complete Tasks on Push. Check-in, Earn Push Points, Unlock Rewards and Level up!', + image: , + position: 'bottom-left', + onClick: () => { + navigate('/points'); + localStorage.setItem(CommonLocalStorageKeys.notificationShown, 'true'); + notification.hide(); + }, + onClose: () => { + localStorage.setItem(CommonLocalStorageKeys.notificationShown, 'true'); + }, + }); + + const showNotificationFn = () => { + if (!notificationAlreadyShown && !isRewardsRelatedPage) { + // include componentDidMount logic + if (!hasMounted) { + showNotification(); + setHasMounted(true); + } + } else { + notification.hide(); + setHasMounted(false); + } + }; + + useEffect(() => { + showNotificationFn(); + }, [isRewardsRelatedPage]); +}; diff --git a/src/common/index.ts b/src/common/index.ts index 7cf9ee02f2..87bf8ef3fd 100644 --- a/src/common/index.ts +++ b/src/common/index.ts @@ -3,4 +3,5 @@ export * from './components'; export * from './Common.constants'; export * from './Common.utils'; export * from './Common.form'; +export * from './Common.localStorageKeys'; export * from './Common.types'; diff --git a/src/components/chat/unlockProfile/UnlockProfile.tsx b/src/components/chat/unlockProfile/UnlockProfile.tsx index b37f9c3449..df8ccd2c75 100644 --- a/src/components/chat/unlockProfile/UnlockProfile.tsx +++ b/src/components/chat/unlockProfile/UnlockProfile.tsx @@ -20,6 +20,8 @@ import Wallet from '../../../assets/chat/wallet.svg'; import { Button, Box, deviceMediaQ } from 'blocks'; import { checkUnlockProfileErrors } from './UnlockProfile.utils'; import { colorBrands } from 'blocks/theme/colors/colors.brands'; +import { useSelector } from 'react-redux'; +import { UserStoreType } from 'types'; // Constants export enum UNLOCK_PROFILE_TYPE { @@ -46,6 +48,7 @@ const UnlockProfile = ({ InnerComponentProps, onClose }: UnlockProfileModalProps const theme = useTheme(); const { handleConnectWalletAndEnableProfile, initializePushSDK } = useContext(AppContext); + const { userPushSDKInstance } = useSelector((state: UserStoreType) => state.user); const { account, wallet, connect } = useAccount(); @@ -82,7 +85,7 @@ const UnlockProfile = ({ InnerComponentProps, onClose }: UnlockProfileModalProps setActiveStatus({ status: PROFILESTATE.UNLOCK_PROFILE, title: 'Unlock Profile', - body: description ? description : 'Unlock your profile to read and send messages.', + body: description ? description : 'Unlock your profile to read and send messages', }); } }, [wallet]); @@ -200,9 +203,10 @@ const UnlockProfile = ({ InnerComponentProps, onClose }: UnlockProfileModalProps > {!isLoading ? ( + gap="spacing-sm" + > diff --git a/src/modules/rewards/components/BonusActivitiesItem.tsx b/src/modules/rewards/components/BonusActivitiesItem.tsx new file mode 100644 index 0000000000..25c2600999 --- /dev/null +++ b/src/modules/rewards/components/BonusActivitiesItem.tsx @@ -0,0 +1,179 @@ +// React and other libraries +import { FC } from 'react'; + +// hooks +import { Activity, useGetRewardsActivity } from 'queries'; +import { useAccount } from 'hooks'; + +// components +import { Box, Button, Lock, Multiplier, RewardsBell, Skeleton, Text } from 'blocks'; +import { ActivityButton } from './ActivityButton'; +import { RewardsActivityIcon } from './RewardsActivityIcon'; +import { RewardsActivityTitle } from './RewardsActivityTitle'; + +export type BonusActivitiesItemProps = { + userId: string; + activity: Activity; + isLoadingItem: boolean; + setErrorMessage: (errorMessage: string) => void; + isLocked: boolean; +}; + +const BonusActivitiesItem: FC = ({ + userId, + activity, + isLoadingItem, + setErrorMessage, + isLocked, +}) => { + const { + data: usersSingleActivity, + isLoading, + refetch: refetchActivity, + } = useGetRewardsActivity({ userId, activityId: activity.id }, { enabled: !!userId }); + + const { isWalletConnected } = useAccount(); + + const isLockedOrNotConnected = isLocked || !isWalletConnected; + + return ( + + + {isLockedOrNotConnected ? ( + + + + ) : ( + + )} + + + + + {activity?.activityTitle} + + + + + {activity?.activityTitle} + + + + + + + + + + {/* Rewards Multiplier and Points */} + {activity.multiplier > 1 ? ( + + + + {activity.multiplier?.toLocaleString()}x + + + ) : ( + + + + {activity.points?.toLocaleString()} + + + )} + + + {/* Buttons Logic */} + + {isLockedOrNotConnected && ( + + )} + + {!isLocked && isWalletConnected && ( + + )} + + + + ); +}; + +export { BonusActivitiesItem }; diff --git a/src/modules/rewards/components/BonusActivitiesSection.tsx b/src/modules/rewards/components/BonusActivitiesSection.tsx new file mode 100644 index 0000000000..bcd6252117 --- /dev/null +++ b/src/modules/rewards/components/BonusActivitiesSection.tsx @@ -0,0 +1,92 @@ +// React and other libraries +import { FC, useState } from 'react'; + +// third party libraries +import { css } from 'styled-components'; + +// hooks +import { useGetRewardsActivities, useGetUserRewardsDetails } from 'queries'; +import { useAccount } from 'hooks'; +import { useRewardsContext } from 'contexts/RewardsContext'; + +// helpers +import { walletToCAIP10 } from 'helpers/w2w'; + +// components +import { Alert, Box, Text } from 'blocks'; +import { BonusActivitiesItem } from './BonusActivitiesItem'; + +export type BonusActivitiesSectionProps = {}; + +const BonusActivities: FC = () => { + const { account } = useAccount(); + const [errorMessage, setErrorMessage] = useState(''); + + const { data: rewardActivitiesResponse, isLoading: isLoadingActivities } = useGetRewardsActivities(); + + // Getting user Id by wallet address + const caip10WalletAddress = walletToCAIP10({ account }); + const { data: userDetails } = useGetUserRewardsDetails({ + caip10WalletAddress: caip10WalletAddress, + }); + + const isLoading = isLoadingActivities; + + // If there are activities then render them else render 2 skeletons + const activityList = rewardActivitiesResponse?.activities.flatMap((page) => page) || []; + + const bonusActivities = isLoading + ? Array(8).fill(0) + : activityList.filter((activity) => activity.index.startsWith(`bonus-activity`) && activity?.status === 'ENABLED'); + + const { isLocked } = useRewardsContext(); + + return ( + + + Bonus Activities + + + {errorMessage && ( + + setErrorMessage('')} + /> + + )} + + + {bonusActivities.map((activity) => ( + + ))} + + + ); +}; + +export { BonusActivities }; diff --git a/src/modules/rewards/components/DailyRewardsItem.tsx b/src/modules/rewards/components/DailyRewardsItem.tsx new file mode 100644 index 0000000000..825b6a3e44 --- /dev/null +++ b/src/modules/rewards/components/DailyRewardsItem.tsx @@ -0,0 +1,82 @@ +// React and other libraries +import { FC, useMemo } from 'react'; + +// types +import { Activity } from 'queries'; + +// components +import { Box, CheckCircle, Skeleton, Text, RewardsCoin, TripleRewardsCoin, MultipleRewardsCoin } from 'blocks'; + +export type DailyRewardsItemProps = { + activity: Activity; + activeDay: number; + isLoading: boolean; + isActivityDisabled: boolean; +}; + +const DailyRewardsItem: FC = ({ activity, activeDay, isLoading, isActivityDisabled }) => { + const day = parseInt(activity?.activityTitle?.split('- Day')[1]); + const isActive = day === activeDay && !isActivityDisabled; + const isCompleted = activeDay <= day; + + // style variables + const backgroundColor = useMemo(() => { + return isActive ? 'surface-brand-medium' : day === 7 && isCompleted ? 'surface-brand-subtle' : 'surface-secondary'; + }, [isActive, day, isCompleted]); + + const textColor = useMemo(() => { + return isActive + ? 'text-on-dark-bg' + : activeDay > day + ? 'text-tertiary' + : day === 7 && isCompleted + ? 'text-on-light-bg' + : 'text-secondary'; + }, [isActive, activeDay, day, isCompleted]); + + const getIconComponent = (day: number) => { + if (day < 5) return ; + if (day >= 5 && day < 7) return ; + return ; + }; + + return ( + + day ? 'border-xs solid stroke-secondary' : 'none'} + className="item" + > + + {activity?.activityTitle?.split('-')[1]} + + + {isCompleted ? {getIconComponent(day)} : } + + + +{activity.points?.toLocaleString()} + + + + ); +}; + +export { DailyRewardsItem }; diff --git a/src/modules/rewards/components/DailyRewardsSection.tsx b/src/modules/rewards/components/DailyRewardsSection.tsx new file mode 100644 index 0000000000..e577aeb1fe --- /dev/null +++ b/src/modules/rewards/components/DailyRewardsSection.tsx @@ -0,0 +1,167 @@ +// React and other libraries +import { FC, useMemo, useState } from 'react'; +import { css } from 'styled-components'; + +// hooks +import { useDailyRewards } from '../hooks/useDailyRewards'; +import { useRewardsContext } from 'contexts/RewardsContext'; + +// type +import { ActvityType } from 'queries'; + +// components +import { Alert, Box, Button, Text } from 'blocks'; +import { DailyRewardsItem } from './DailyRewardsItem'; +import { ActivityVerificationButton } from './ActivityVerificationButton'; + +export type DailyRewardsSectionProps = {}; + +const DailyRewardsSection: FC = () => { + const [errorMessage, setErrorMessage] = useState(''); + + const { activeItem, activeDay, isActivityDisabled, isLoading, userDetails, dailyRewardsActivities, handleCheckIn } = + useDailyRewards(); + + const { isLocked } = useRewardsContext(); + + const isDailyRewardClaimed = useMemo(() => { + return isActivityDisabled && activeDay > 1 && userDetails; + }, [isActivityDisabled, activeDay, userDetails]); + + const displayDailyRewards = useMemo(() => { + return !isActivityDisabled && activeDay > 0 && activeItem && userDetails; + }, [isActivityDisabled, activeDay, userDetails, activeItem]); + + return ( + + + + + Daily Rewards + + + Check-in daily and unlock more rewards each day. + + + {isLocked && ( + + )} + + {!isLocked && ( + <> + {isDailyRewardClaimed && ( + + )} + + {displayDailyRewards && ( + handleCheckIn()} + setErrorMessage={setErrorMessage} + isLoadingActivity={false} + label="Check In" + /> + )} + + )} + + + {errorMessage && ( + + setErrorMessage('')} + /> + + )} + + + {dailyRewardsActivities?.map((activity) => ( + + ))} + + + ); +}; + +export { DailyRewardsSection }; diff --git a/src/modules/rewards/components/DashboardSection.tsx b/src/modules/rewards/components/DashboardSection.tsx index c04384e5d7..d190b0e84f 100644 --- a/src/modules/rewards/components/DashboardSection.tsx +++ b/src/modules/rewards/components/DashboardSection.tsx @@ -60,6 +60,14 @@ const DashboardSection: FC = ({ onGetStarted }) => { refetch={() => refetch()} /> + + = ({ @@ -28,6 +29,7 @@ const DashboardSectionPoints: FC = ({ isLoading, isFetching, data, + multiplier, }) => { const { isWalletConnected } = useAccount(); @@ -84,8 +86,9 @@ const DashboardSectionPoints: FC = ({ + {/* total points */} - {isWalletConnected && ( + {isWalletConnected && !multiplier && ( = ({ )} - {!isWalletConnected && ( + {/* other section placeholder */} + {!isWalletConnected && !multiplier && ( = ({ )} + {/* multipler placeholder for new users or when wallet is not connected */} + {((!isWalletConnected && multiplier) || (isWalletConnected && multiplier && !data)) && ( + + + 1x + + + )} + + {/* show multiplier for center box */} + {isWalletConnected && multiplier && data && ( + + + {`${data?.multiplier}x`} + + + Complete activities to increase + + + )} + {/* show rank only when user has points more than 0 */} {points && points > 0 && rank != null ? ( @@ -116,6 +150,7 @@ const DashboardSectionPoints: FC = ({ ) : null} + {/* show users invited only when user has a1or more users invited */} {usersInvited && usersInvited > 0 ? ( { + const location = useLocation(); + const url = '/points/leaderboard'; const { data, isError, refetch, fetchNextPage, hasNextPage, isLoading, isFetchingNextPage } = useGetRewardsLeaderboard({ pageSize: 20 }); @@ -24,6 +27,12 @@ const LeaderBoardList: FC = () => { const hasMoreData = !isFetchingNextPage && hasNextPage; + useEffect(() => { + if (url === location.pathname) { + refetch(); + } + }, [location.pathname]); + return !leaderboardList.length ? ( = ({ rank, address, poin {displayName} {displayName} @@ -107,14 +107,14 @@ const LeaderboardListItem: FC = ({ rank, address, poin > {points?.toLocaleString()} {points?.toLocaleString()} diff --git a/src/modules/rewards/components/LeaderBoardSection.tsx b/src/modules/rewards/components/LeaderBoardSection.tsx index 68be038e4d..2663ccbfb8 100644 --- a/src/modules/rewards/components/LeaderBoardSection.tsx +++ b/src/modules/rewards/components/LeaderBoardSection.tsx @@ -17,14 +17,14 @@ const LeaderBoardSection: FC = () => { > Leaderboard Leaderboard diff --git a/src/modules/rewards/components/ReferralSection.tsx b/src/modules/rewards/components/ReferralSection.tsx index e2b9d35773..bc812cbc47 100644 --- a/src/modules/rewards/components/ReferralSection.tsx +++ b/src/modules/rewards/components/ReferralSection.tsx @@ -43,7 +43,7 @@ const ReferralSection: FC = ({ handleUnlockProfile }) => { = ({ handleUnlockProfile }) => { diff --git a/src/modules/rewards/components/RewardsActivitiesBottomSection.tsx b/src/modules/rewards/components/RewardsActivitiesBottomSection.tsx new file mode 100644 index 0000000000..f5bfe65265 --- /dev/null +++ b/src/modules/rewards/components/RewardsActivitiesBottomSection.tsx @@ -0,0 +1,65 @@ +// React and other libraries +import { FC } from 'react'; + +// components +import { RewardsActivitiesSection } from './RewardsActivitiesSection'; +import { Box } from 'blocks'; +import { BonusActivities } from './BonusActivitiesSection'; +import { StakePushSection } from './StakePushSection'; + +export type RewardsActivitiesBottomSectionProps = {}; + +const RewardsActivitiesBottomSection: FC = () => { + return ( + + + + + + + + + + + + + + + + ); +}; + +export { RewardsActivitiesBottomSection }; diff --git a/src/modules/rewards/components/RewardsActivitiesList.tsx b/src/modules/rewards/components/RewardsActivitiesList.tsx index e7dd947931..a777d2c495 100644 --- a/src/modules/rewards/components/RewardsActivitiesList.tsx +++ b/src/modules/rewards/components/RewardsActivitiesList.tsx @@ -1,26 +1,21 @@ import { FC } from 'react'; -import InfiniteScroll from 'react-infinite-scroller'; -import { Box } from 'blocks'; +import { css } from 'styled-components'; + +import { Box, Lock, Text } from 'blocks'; import { useAccount } from 'hooks'; import { walletToCAIP10 } from 'helpers/w2w'; import { Activity, useGetRewardsActivities, useGetUserRewardsDetails } from 'queries'; +import { useRewardsContext } from 'contexts/RewardsContext'; -import LoaderSpinner, { LOADER_TYPE } from 'components/reusables/loaders/LoaderSpinner'; import { RewardsActivitiesListItem } from './RewardsActivitiesListItem'; export type RewardActivitiesProps = {}; const RewardsActivitiesList: FC = () => { - const { account } = useAccount(); + const { account, isWalletConnected } = useAccount(); - const { - data: rewardActivitiesResponse, - isLoading: isLoadingActivities, - fetchNextPage, - hasNextPage, - isFetchingNextPage, - } = useGetRewardsActivities({ pageSize: 5 }); + const { data: rewardActivitiesResponse, isLoading: isLoadingActivities } = useGetRewardsActivities(); // Getting user Id by wallet address const caip10WalletAddress = walletToCAIP10({ account }); @@ -29,48 +24,81 @@ const RewardsActivitiesList: FC = () => { }); const isLoading = isLoadingActivities; - // const isLoading = isLoadingUserDetails || isLoadingActivities; // If there are activities then render them else render 2 skeletons - const activityList = isLoading + const activityList = rewardActivitiesResponse?.activities?.map((page) => page) || []; + + // Filter activities based on the index + const firstGroupActivities = isLoading ? Array(2).fill(0) - : rewardActivitiesResponse?.pages.flatMap((page) => page.activities) || []; + : activityList.filter((activity) => activity.index.startsWith(`social-activity`) && activity?.status === 'ENABLED'); + + const secondGroupActivities = isLoading + ? Array(7).fill(0) + : activityList.filter((activity) => activity.index.startsWith(`reward-activity`) && activity?.status === 'ENABLED'); - const hasMoreData = !isFetchingNextPage && hasNextPage; + const { isLocked } = useRewardsContext(); return ( - fetchNextPage()} - hasMore={hasMoreData} - loader={ - - - - } - useWindow={false} - threshold={150} - > - {activityList.map((activity: Activity) => ( - ( + + ))} + {(isLocked || !isWalletConnected) && ( + + - ))} - + + Verify X and Discord to unlock more activities + + + )} + + {secondGroupActivities.map((activity: Activity) => ( + + ))} ); }; diff --git a/src/modules/rewards/components/RewardsActivitiesListItem.tsx b/src/modules/rewards/components/RewardsActivitiesListItem.tsx index 57f2c321d4..015a90f895 100644 --- a/src/modules/rewards/components/RewardsActivitiesListItem.tsx +++ b/src/modules/rewards/components/RewardsActivitiesListItem.tsx @@ -1,16 +1,19 @@ -import { FC, useState } from 'react'; +import { FC, useEffect, useMemo, useState } from 'react'; import { Activity, useGetRewardsActivity } from 'queries'; +import { useAccount } from 'hooks'; -import { Box, ErrorFilled, InfoFilled, Lozenge, RewardsBell, Skeleton, Text } from 'blocks'; +import { Box, Button, ErrorFilled, InfoFilled, Lozenge, RewardsBell, Skeleton, Text, Lock, Multiplier } from 'blocks'; import { ActivityButton } from './ActivityButton'; import { RewardsActivityIcon } from './RewardsActivityIcon'; import { RewardsActivityTitle } from './RewardsActivityTitle'; +import useLockedStatus from '../hooks/useLockedStatus'; export type RewardActivitiesListItemProps = { userId: string; activity: Activity; isLoadingItem: boolean; + isLocked: boolean; }; const getUpdatedExpiryTime = (timestamp: number) => { @@ -19,7 +22,13 @@ const getUpdatedExpiryTime = (timestamp: number) => { return days; }; -const RewardsActivitiesListItem: FC = ({ userId, activity, isLoadingItem }) => { +const RewardsActivitiesListItem: FC = ({ + userId, + activity, + isLoadingItem, + isLocked, +}) => { + const { isWalletConnected } = useAccount(); const { data: usersSingleActivity, isLoading, @@ -27,6 +36,25 @@ const RewardsActivitiesListItem: FC = ({ userId, } = useGetRewardsActivity({ userId, activityId: activity.id }, { enabled: !!userId }); const [errorMessage, setErrorMessage] = useState(''); + const { handleLockStatus } = useLockedStatus(); + + const isRewardsLocked = useMemo(() => { + return ( + (isLocked || !isWalletConnected) && + activity.activityType !== 'follow_push_on_discord' && + activity.activityType !== 'follow_push_on_twitter' + ); + }, [isLocked, isWalletConnected, activity.activityType]); + + const isNotDiscordOrTwitter = + activity.activityType !== 'follow_push_on_discord' && activity.activityType !== 'follow_push_on_twitter'; + + // if activityType is twitter or discord, then re-call check lock status fn + useEffect(() => { + if (activity.activityType == 'follow_push_on_discord' || activity.activityType == 'follow_push_on_twitter') { + handleLockStatus(); + } + }, [usersSingleActivity?.status, activity.activityType]); return ( @@ -34,18 +62,35 @@ const RewardsActivitiesListItem: FC = ({ userId, display="flex" flexDirection="column" borderRadius="radius-sm" - margin={{ ml: 'spacing-sm spacing-none', initial: 'spacing-xxs spacing-none' }} backgroundColor="surface-secondary" > - + {isRewardsLocked ? ( + + + + ) : ( + + )} = ({ userId, {activity.activityType !== 'follow_push_on_discord' && activity.activityType !== 'follow_push_on_twitter' && ( - - {activity.activityDesc} - + variant="bs-regular" + /> )} - {/* Rewards Points */} - 1 && ( + + + + {activity.multiplier?.toLocaleString()}x + + + )} + + - - - {activity.points?.toLocaleString()} Points - - + + + {activity.points?.toLocaleString()} + + + {/* Buttons Logic */} - + {isRewardsLocked && ( + + )} + + {!isRewardsLocked && ( + + )} diff --git a/src/modules/rewards/components/RewardsActivitiesSection.tsx b/src/modules/rewards/components/RewardsActivitiesSection.tsx index 79468cc705..9ee6e43d7d 100644 --- a/src/modules/rewards/components/RewardsActivitiesSection.tsx +++ b/src/modules/rewards/components/RewardsActivitiesSection.tsx @@ -6,7 +6,7 @@ const RewardsActivitiesSection = () => { = ({ type }) => { - if (type === 'follow_push_on_discord') { - return ; + return ( + + ); } if (type === 'follow_push_on_twitter') { - return ; + return ( + + ); + } + + if (type === 'create_gated_group_push_chat') { + return ( + + ); + } + + if (type === 'subscribe_5_channels_push' || type === 'subscribe_20_channels_push') { + return ( + + ); + } + + if (type === 'setup_push_user_profile') { + return ( + + ); + } + + if (type === 'active_push_chat_user') { + return ( + + ); + } + + if (type === 'hold_push_alpha_access_nft') { + return ( + + ); + } + + if (type === 'hold_push_rockstar_nft') { + return ( + + ); + } + + if (type === 'create_channel_push') { + return ( + + ); + } + + if (type === 'reach_100_subscribers') { + return ( + + ); + } + + if (type === 'reach_500_subscribers' || type === 'reach_1000_subscribers') { + return ( + + ); + } + + if (type === 'reach_5000_subscribers') { + return ( + + ); + } + + if (type === 'reach_10000_subscribers') { + return ( + + ); + } + + if (type === 'reach_50000_subscribers' || type === 'reach_100000_subscribers') { + return ( + + ); + } + + if (type === 'stake_1_uni_v2_lp_epoch' || type === 'stake_1k_push_epoch') { + return ( + + ); + } + + if (type === 'stake_5_uni_v2_lp_epoch' || type === 'stake_5k_push_epoch') { + return ( + + ); + } + + if (type === 'stake_10_uni_v2_lp_epoch' || type === 'stake_10k_push_epoch') { + return ( + + ); + } + + if (type === 'stake_50_uni_v2_lp_epoch' || type === 'stake_50k_push_epoch') { + return ( + + ); + } + + if (type === 'stake_100_uni_v2_lp_epoch' || type === 'stake_100k_push_epoch') { + return ( + + ); + } + + if (type === 'stake_500_uni_v2_lp_epoch' || type === 'stake_500k_push_epoch') { + return ( + + ); + } + + if (type === 'stake_1_uni_v2_lp_one_time' || type === 'stake_1k_push_one_time') { + return ( + + ); + } + + if (type === 'stake_5_uni_v2_lp_one_time' || type === 'stake_5k_push_one_time') { + return ( + + ); + } + + if (type === 'stake_10_uni_v2_lp_one_time' || type === 'stake_10k_push_one_time') { + return ( + + ); + } + + if (type === 'stake_50_uni_v2_lp_one_time' || type === 'stake_50k_push_one_time') { + return ( + + ); + } + + if (type === 'stake_100_uni_v2_lp_one_time' || type === 'stake_100k_push_one_time') { + return ( + + ); + } + + if (type === 'stake_500_uni_v2_lp_one_time' || type === 'stake_500k_push_one_time') { + return ( + + ); } return ; }; -export { RewardsActivityIcon }; \ No newline at end of file +export { RewardsActivityIcon }; diff --git a/src/modules/rewards/components/RewardsActivityTitle.tsx b/src/modules/rewards/components/RewardsActivityTitle.tsx index a28565e482..29c4eaa788 100644 --- a/src/modules/rewards/components/RewardsActivityTitle.tsx +++ b/src/modules/rewards/components/RewardsActivityTitle.tsx @@ -1,13 +1,24 @@ -import { Box, Link, Skeleton, Text } from 'blocks'; +// React and other libraries import { FC } from 'react'; + +// hooks import { getRewardsActivityTitle } from '../utils/getRewardsActivityTitle'; +// types +import { TextVariants } from 'blocks/text'; +import { TextColors } from 'blocks/theme/Theme.types'; + +// components +import { Box, Link, Skeleton, Text } from 'blocks'; + type RewardsActivityTitleProps = { activityTitle: string; isLoading: boolean; + color?: TextColors; + variant?: TextVariants; }; -const RewardsActivityTitle: FC = ({ activityTitle, isLoading }) => { +const RewardsActivityTitle: FC = ({ activityTitle, isLoading, color, variant }) => { const extractedTitle = getRewardsActivityTitle(activityTitle); if (extractedTitle) { @@ -15,30 +26,34 @@ const RewardsActivityTitle: FC = ({ activityTitle, is return ( {preText} + - - {linkedText} - + {linkedText} + {' '} {postText} @@ -50,8 +65,8 @@ const RewardsActivityTitle: FC = ({ activityTitle, is return ( {activityTitle} diff --git a/src/modules/rewards/components/RewardsTabsContainer.tsx b/src/modules/rewards/components/RewardsTabsContainer.tsx index f688b9ff35..d0b925ac25 100644 --- a/src/modules/rewards/components/RewardsTabsContainer.tsx +++ b/src/modules/rewards/components/RewardsTabsContainer.tsx @@ -4,15 +4,22 @@ import { FC } from 'react'; import { Box, TabItem, Tabs } from 'blocks'; import { DashboardSection } from './DashboardSection'; import { LeaderBoardSection } from './LeaderBoardSection'; -import { RewardsActivitiesSection } from './RewardsActivitiesSection'; import { RewardsTabs } from '../Rewards.types'; +import { ReferralSection } from './ReferralSection'; +import { RewardsActivitiesBottomSection } from './RewardsActivitiesBottomSection'; +import { DailyRewardsSection } from './DailyRewardsSection'; export type RewardsTabsContainerProps = { activeTab: RewardsTabs; handleSetActiveTab: (tab: RewardsTabs) => void; + handleUnlockProfile: () => void; }; -const RewardsTabsContainer: FC = ({ activeTab, handleSetActiveTab }) => { +const RewardsTabsContainer: FC = ({ + activeTab, + handleSetActiveTab, + handleUnlockProfile, +}) => { const rewardsTabs: TabItem[] = [ { key: 'dashboard', @@ -22,7 +29,7 @@ const RewardsTabsContainer: FC = ({ activeTab, handle { key: 'activity', label: 'Reward Activities', - children: , + children: , }, { key: 'leaderboard', @@ -30,18 +37,15 @@ const RewardsTabsContainer: FC = ({ activeTab, handle children: , }, ]; + return ( - + <> = ({ activeTab, handle onChange={(activeKey) => handleSetActiveTab(activeKey as RewardsTabs)} /> - + + {/* bottom sections */} + {activeTab === 'dashboard' && } + {activeTab === 'activity' && } + ); }; diff --git a/src/modules/rewards/components/StakePushActivitiesListItem.tsx b/src/modules/rewards/components/StakePushActivitiesListItem.tsx new file mode 100644 index 0000000000..ad3ccda965 --- /dev/null +++ b/src/modules/rewards/components/StakePushActivitiesListItem.tsx @@ -0,0 +1,193 @@ +// React and other libraries +import { FC } from 'react'; + +// hooks +import { Activity, useGetRewardsActivity } from 'queries'; +import { useAccount } from 'hooks'; + +// components +import { Box, Button, Lock, Multiplier, RewardsBell, Skeleton, Text } from 'blocks'; +import { RewardsActivityIcon } from './RewardsActivityIcon'; +import { ActivityButton } from './ActivityButton'; + +export type StakeActivitiesItemProps = { + userId: string; + activity: Activity; + isLoadingItem: boolean; + setErrorMessage: (errorMessage: string) => void; + isLocked: boolean; + hasEpochEnded?: boolean; +}; +const StakePushActivitiesListItem: FC = ({ + userId, + activity, + isLoadingItem, + setErrorMessage, + isLocked, + hasEpochEnded, +}) => { + const { + data: usersSingleActivity, + isLoading, + refetch: refetchActivity, + } = useGetRewardsActivity({ userId, activityId: activity.id }, { enabled: !!userId }); + + const { isWalletConnected } = useAccount(); + + const hasActivityEndedUnclaimed = usersSingleActivity?.status !== 'COMPLETED' && hasEpochEnded; + + const isLockedOrNotConnected = isLocked || !isWalletConnected; + return ( + + + + {isLockedOrNotConnected ? ( + + + + ) : ( + + )} + + + + + {activity?.activityTitle} + + + + + {activity?.activityTitle} + + + + {activity.points > 0 && ( + + + + {activity.points?.toLocaleString()} + + + )} + + {activity.multiplier > 0 && ( + + + + {activity.multiplier?.toLocaleString()}x + + + )} + + + + {/* Buttons Logic */} + + {isLockedOrNotConnected && ( + + )} + + {hasActivityEndedUnclaimed && !isLocked && isWalletConnected && ( + + )} + + {!hasActivityEndedUnclaimed && !isLocked && isWalletConnected && ( + + )} + + + + ); +}; + +export { StakePushActivitiesListItem }; diff --git a/src/modules/rewards/components/StakePushSection.tsx b/src/modules/rewards/components/StakePushSection.tsx new file mode 100644 index 0000000000..f2a6a0e9ea --- /dev/null +++ b/src/modules/rewards/components/StakePushSection.tsx @@ -0,0 +1,205 @@ +// React and other libraries +import { FC, useMemo, useState } from 'react'; + +// hooks +import { useAccount } from 'hooks'; +import { useGetUserRewardsDetails } from 'queries'; +import { useRewardsContext } from 'contexts/RewardsContext'; + +// helpers +import { walletToCAIP10 } from 'helpers/w2w'; + +// components +import { Alert, Box, Clockwise, Lozenge, Skeleton, Stopwatch, Text } from 'blocks'; +import { StakePushActivitiesListItem } from './StakePushActivitiesListItem'; +import { RewardsActivityTitle } from './RewardsActivityTitle'; +import { useStakeRewardsResetTime } from '../hooks/useStakeRewardsResetTime'; + +export type StakePushPoints = { + title: string; + subtitle: string; + timeline?: boolean; + multiplier?: boolean; +}; + +const StakePushSection: FC = ({ title, subtitle, timeline, multiplier }) => { + const { account, isWalletConnected } = useAccount(); + const { isLocked } = useRewardsContext(); + const { stakePushArray, uniV2PushArray, isLoading, daysToReset } = useStakeRewardsResetTime({ + multiplier, + }); + const [errorMessage, setErrorMessage] = useState(''); + + // Getting user Id by wallet address + const caip10WalletAddress = walletToCAIP10({ account }); + const { data: userDetails } = useGetUserRewardsDetails({ + caip10WalletAddress: caip10WalletAddress, + }); + + const activityResetDate = daysToReset + 7; + + const isEpochStatusActive = useMemo(() => { + return daysToReset != null && !multiplier && daysToReset >= 0 && activityResetDate > 7 && isWalletConnected; + }, [daysToReset, multiplier, activityResetDate, isWalletConnected]); + + const hasEpochEnded = useMemo(() => { + return daysToReset != null && activityResetDate >= 0 && activityResetDate <= 7 && !multiplier && isWalletConnected; + }, [daysToReset, activityResetDate, multiplier, isWalletConnected]); + + return ( + + + + + + {title} + + + {isEpochStatusActive && ( + } + > + {daysToReset} DAYS + + )} + + {hasEpochEnded && ( + } + > + ENDED + + )} + + + + + + + {isWalletConnected && timeline && activityResetDate != null && activityResetDate >= 0 && ( + + + + + Activity resets in {activityResetDate} days + + + + )} + + + + {errorMessage && ( + + setErrorMessage('')} + /> + + )} + + + + {stakePushArray?.map((activity) => ( + + ))} + + + + {uniV2PushArray?.map((activity) => ( + + ))} + + + + {!multiplier && ( + + Staking rewards can be claimed once per reset after a cooldown period of 7 days. + + )} + + ); +}; + +export { StakePushSection }; diff --git a/src/modules/rewards/hooks/useCreateRewardsUser.tsx b/src/modules/rewards/hooks/useCreateRewardsUser.tsx index 1e644dce94..886d5dd081 100644 --- a/src/modules/rewards/hooks/useCreateRewardsUser.tsx +++ b/src/modules/rewards/hooks/useCreateRewardsUser.tsx @@ -16,18 +16,19 @@ import { useCreateRewardsUser as useCreateRewardsUserQuery, useGetUserRewardsDet // types import { UserStoreType } from 'types'; import { AppContextType } from 'types/context'; +import { PushAPI } from '@pushprotocol/restapi'; const useCreateRewardsUser = () => { const { account } = useAccount(); const caip10WalletAddress = walletToCAIP10({ account }); - const [isSuccess, setIsSuccess] = useState(false); // @ts-expect-error const { isUserProfileUnlocked } = useContext(AppContext); const { userPushSDKInstance } = useSelector((state: UserStoreType) => state.user); + const isActiveAccount = userPushSDKInstance?.account === account; const { status, refetch } = useGetUserRewardsDetails({ caip10WalletAddress: caip10WalletAddress, @@ -35,7 +36,7 @@ const useCreateRewardsUser = () => { const { mutate: createUser } = useCreateRewardsUserQuery(); - const handleCreateUser = async () => { + const handleCreateUser = async ({ userPushSDKInstance }: { userPushSDKInstance: PushAPI }) => { // get ref, send with user wallet. if ref is null, send only user wallet const ref = sessionStorage.getItem('ref'); const data = { @@ -56,8 +57,8 @@ const useCreateRewardsUser = () => { }, { onSuccess: () => { - refetch(); setIsSuccess(true); + refetch(); }, onError: (err) => { console.error('Error', err); @@ -67,12 +68,12 @@ const useCreateRewardsUser = () => { }; useEffect(() => { - if (isUserProfileUnlocked && userPushSDKInstance && status !== 'success') { - handleCreateUser(); + if (isUserProfileUnlocked && isActiveAccount && status !== 'success') { + handleCreateUser({ userPushSDKInstance }); } - }, [isUserProfileUnlocked, userPushSDKInstance, status]); + }, [isUserProfileUnlocked, userPushSDKInstance, account]); - return { handleCreateUser, isSuccess, isUserProfileUnlocked }; + return { handleCreateUser, isSuccess, setIsSuccess, isUserProfileUnlocked }; }; export { useCreateRewardsUser }; diff --git a/src/modules/rewards/hooks/useDailyRewards.tsx b/src/modules/rewards/hooks/useDailyRewards.tsx new file mode 100644 index 0000000000..3c2860f829 --- /dev/null +++ b/src/modules/rewards/hooks/useDailyRewards.tsx @@ -0,0 +1,131 @@ +// React and other libraries +import { useCallback, useEffect, useState } from 'react'; + +// hooks +import { useGetRewardActivityStatus, useGetRewardsActivities, useGetUserRewardsDetails } from 'queries'; +import { useAccount } from 'hooks'; + +// helpers +import { walletToCAIP10 } from 'helpers/w2w'; +import { checkTimeToCurrent, getActivityStatus, getDayNumber } from '../utils/resolveRecentActivityStatus'; + +// types +import { Activity } from 'queries'; + +const useDailyRewards = () => { + const { account, isWalletConnected } = useAccount(); + + // State variables + const [activeItem, setActiveItem] = useState(null); + const [activeDay, setActiveDay] = useState(0); + const [isActivityDisabled, setIsActivityDisabled] = useState(false); + const [isLoadingRewards, setIsLoadingRewards] = useState(false); + + // Getting user ID by wallet address + const caip10WalletAddress = walletToCAIP10({ account }); + const { data: userDetails } = useGetUserRewardsDetails({ + caip10WalletAddress, + }); + const { data: rewardActivitiesResponse, isLoading: isLoadingActivities } = useGetRewardsActivities(); + + const isLoading = isLoadingActivities || isLoadingRewards; + + // Flatten the activities response and filter daily activities + const activityList = rewardActivitiesResponse?.activities.map((page) => page) || []; + + const dailyActivities = activityList.filter((activity) => activity.index.startsWith(`daily-activity`)); + const dailyRewardsActivities = isLoading + ? Array(7).fill(0) + : dailyActivities.sort((a, b) => { + if (a && b) { + return getDayNumber(a) - getDayNumber(b); + } + return 0; + }); + + // Mutation for sending recent activities + const { mutate: sendRecentActivities } = useGetRewardActivityStatus({ + userId: userDetails?.userId as string, + }); + + // Reset state function + const resetState = useCallback(() => { + setActiveDay(0); + setActiveItem(null); + setIsActivityDisabled(false); + setIsLoadingRewards(false); + }, []); + + // Handle check-in function + const handleCheckIn = () => { + if (!userDetails?.userId) return; + + const activityTitles = dailyRewardsActivities?.map((activity) => activity.activityType); + + sendRecentActivities( + { + userId: userDetails?.userId as string, + activities: activityTitles, + }, + { + onSuccess: handleSuccess, + onError: (err) => { + console.error('Error', err); + }, + } + ); + }; + + // Handle success response from sending recent activities + const handleSuccess = (data: any) => { + const { activities: dataActivity } = data; + const { isEmpty, firstEmptyActivity, latestActivityKey } = getActivityStatus(dataActivity); + + const targetActivity = isEmpty + ? dailyRewardsActivities?.find((activity) => activity.activityType === firstEmptyActivity) + : dailyRewardsActivities?.find((activity) => activity.activityType === latestActivityKey); + + const newDay = isEmpty ? 1 : getDayNumber(targetActivity) + 1; + const newDayData = dailyRewardsActivities?.find( + (activity) => activity.activityType === `daily_check_in_7_days_day${newDay}` + ); + + if (latestActivityKey && !isEmpty) { + const number = checkTimeToCurrent(dataActivity?.[latestActivityKey]?.updatedAt); + if (number) { + setIsActivityDisabled(true); + } + } + + setActiveDay(newDay); + setActiveItem(newDayData); + setIsLoadingRewards(false); + }; + + // Effect for handling check-in when user details change or wallet is connected + useEffect(() => { + if (isWalletConnected && userDetails?.userId) { + if (isLoadingActivities || dailyRewardsActivities.length <= 0) return; + setIsLoadingRewards(true); + handleCheckIn(); + } + + if (!isWalletConnected) { + resetState(); + } + }, [userDetails?.userId, isWalletConnected, account, isLoadingActivities]); + + return { + account, + activeItem, + activeDay, + isActivityDisabled, + isLoading, + userDetails, + dailyRewardsActivities, + handleCheckIn, + resetState, + }; +}; + +export { useDailyRewards }; diff --git a/src/modules/rewards/hooks/useFormattedDuration.tsx b/src/modules/rewards/hooks/useFormattedDuration.tsx new file mode 100644 index 0000000000..82b6de8f3f --- /dev/null +++ b/src/modules/rewards/hooks/useFormattedDuration.tsx @@ -0,0 +1,42 @@ +import { usePushStakingStats } from 'common'; +import { useState, useEffect, useCallback } from 'react'; + +export const useFormattedDuration = () => { + const [formattedDuration, setFormattedDuration] = useState(null); + const { poolStats } = usePushStakingStats(); + const [epochEndTime, setEpochEndTime] = useState(); + + const calculateEpochEndDuration = useCallback(() => { + const epochEndSeconds = poolStats?.epochEndTime; + const epochEndTimeStamp = new Date().getTime() + (epochEndSeconds || 0) * 1000; + setEpochEndTime(epochEndTimeStamp); + }, [poolStats]); + + const getFormattedDuration = () => { + if (poolStats?.epochEndTimestamp) { + const now = new Date().getTime(); + const timeRemaining = (epochEndTime as number) - now; + + // plus 7 day rest period + const day = Math.floor(timeRemaining / (1000 * 60 * 60 * 24)) + 7; + + setFormattedDuration(day); + } + }; + + useEffect(() => { + if (poolStats) { + calculateEpochEndDuration(); + } + }, [poolStats, calculateEpochEndDuration]); + + useEffect(() => { + const timeout = setTimeout(() => { + getFormattedDuration(); + }, 1000); + + return () => clearTimeout(timeout); + }, [getFormattedDuration]); + + return { formattedDuration }; +}; diff --git a/src/modules/rewards/hooks/useLockedStatus.tsx b/src/modules/rewards/hooks/useLockedStatus.tsx new file mode 100644 index 0000000000..3652e19584 --- /dev/null +++ b/src/modules/rewards/hooks/useLockedStatus.tsx @@ -0,0 +1,83 @@ +// React and other libraries +import { useEffect, useState } from 'react'; + +// hooks +import { useAccount } from 'hooks'; +import { useGetRewardActivityStatus, useGetUserRewardsDetails } from 'queries'; + +// helpers +import { walletToCAIP10 } from 'helpers/w2w'; + +// types +import { AxiosError } from 'axios'; +import { useRewardsContext } from 'contexts/RewardsContext'; + +const useLockedStatus = () => { + const { account, isWalletConnected } = useAccount(); + const { setIsLocked } = useRewardsContext(); + const [hasMounted, setHasMounted] = useState(false); + + const caip10WalletAddress = walletToCAIP10({ account }); + const { data: userDetails, status, error } = useGetUserRewardsDetails({ caip10WalletAddress }); + + const { mutate: sendRecentActivities } = useGetRewardActivityStatus({ + userId: userDetails?.userId as string, + }); + + // error responses + const errorMessage = 'Failed to retrieve user'; + + useEffect(() => { + if (!hasMounted) { + if (isWalletConnected && userDetails?.userId) { + // do componentDidMount logic + setHasMounted(true); + handleLockStatus(); + } + } + + if (status === 'error' && isWalletConnected) { + if (error instanceof AxiosError && error?.response?.data?.error === errorMessage) { + setIsLocked(true); + } + } + }, [userDetails?.userId, isWalletConnected, account, status]); + + const getLockStatus = (data: any) => { + if ( + data?.follow_push_on_discord?.status === 'COMPLETED' && + (data?.follow_push_on_twitter?.status === 'COMPLETED' || data?.follow_push_on_twitter?.status === 'PENDING') + ) { + setIsLocked(false); + } else { + setIsLocked(true); + } + }; + + const handleLockStatus = () => { + if (!userDetails?.userId) { + console.log('No userId, exiting handleLockStatus'); + return; + } + + sendRecentActivities( + { + userId: userDetails?.userId, + activities: ['follow_push_on_discord', 'follow_push_on_twitter'], + }, + { + onSuccess: (data) => { + getLockStatus(data?.activities); + }, + + onError: (err) => { + console.error('Error in sendRecentActivities:', err); + }, + } + ); + }; + + return { handleLockStatus }; +}; + +export default useLockedStatus; diff --git a/src/modules/rewards/hooks/useRewardsAuth.tsx b/src/modules/rewards/hooks/useRewardsAuth.tsx index 78bdd60fc6..377847c9c1 100644 --- a/src/modules/rewards/hooks/useRewardsAuth.tsx +++ b/src/modules/rewards/hooks/useRewardsAuth.tsx @@ -124,8 +124,8 @@ const useRewardsAuth = () => { }, [status, isVerifyClicked, userPushSDKInstance]); useEffect(() => { - if (!isWalletConnected) hideAuthModal(); - }, [isWalletConnected]); + if (!isWalletConnected || activeTab == 'activity') hideAuthModal(); + }, [isWalletConnected, account]); return { status, diff --git a/src/modules/rewards/hooks/useStakeRewardsResetTime.tsx b/src/modules/rewards/hooks/useStakeRewardsResetTime.tsx new file mode 100644 index 0000000000..bef46eda6c --- /dev/null +++ b/src/modules/rewards/hooks/useStakeRewardsResetTime.tsx @@ -0,0 +1,166 @@ +import { useEffect, useMemo, useState } from 'react'; + +import { useAccount } from 'hooks'; +import { + useGetPushStakeEpoch, + useGetRewardActivityStatus, + useGetRewardsActivities, + useGetUniV2StakeEpoch, + useGetUserRewardsDetails, +} from 'queries'; +import { walletToCAIP10 } from 'helpers/w2w'; + +import { getActivityStatus } from '../utils/resolveRecentActivityStatus'; +import { useRewardsContext } from 'contexts/RewardsContext'; +import { filterAndSortActivities, filterAndSortAllActivities } from '../utils/stakeRewardUtilities'; +import { CommonLocalStorageKeys } from 'common'; + +export type StakeRewardsResetTime = { + multiplier?: boolean; +}; + +const useStakeRewardsResetTime = ({ multiplier }: StakeRewardsResetTime) => { + const [resetDate, setResetDate] = useState(null); // Local state for latest timestamp + const { account, isWalletConnected } = useAccount(); + const { setResetEpoch } = useRewardsContext(); + + const { data: rewardActivitiesResponse, isLoading: isLoadingActivities } = useGetRewardsActivities(); + const caip10WalletAddress = walletToCAIP10({ account }); + const { data: userDetails } = useGetUserRewardsDetails({ caip10WalletAddress }); + + // Queries for active push and UniV2 stake epoch data + const { data: pushStakeData, isLoading: isLoadingPushStakeData } = useGetPushStakeEpoch(); + const { data: uniV2StakeData, isLoading: isLoadingPushUniData } = useGetUniV2StakeEpoch(); + + // Mutation for sending recent activities + const { mutate: sendRecentActivities } = useGetRewardActivityStatus({ + userId: userDetails?.userId as string, + }); + + const isLoading = isLoadingActivities; + + // Memoized Push and UniV2 stake arrays to avoid unnecessary recomputation + const stakePushArray = useMemo(() => { + return filterAndSortActivities( + 'push', + rewardActivitiesResponse?.activities.flatMap((page) => page) || [], + multiplier + ); + }, [rewardActivitiesResponse, multiplier, isLoadingActivities]); + + const uniV2PushArray = useMemo(() => { + return filterAndSortActivities( + 'uni-v2', + rewardActivitiesResponse?.activities.flatMap((page) => page) || [], + multiplier + ); + }, [rewardActivitiesResponse, multiplier, isLoadingActivities]); + + // Combined array for both multiplier and point activities for push and uniV2 + const allPushArray = useMemo(() => { + return filterAndSortAllActivities( + 'multiplier-push', + 'point-push', + rewardActivitiesResponse?.activities.flatMap((page) => page) || [] + ); + }, [rewardActivitiesResponse]); + + // const allUniV2Array = useMemo(() => { + // return filterAndSortAllActivities( + // 'multiplier-uni', + // 'point-uni', + // rewardActivitiesResponse?.activities.flatMap((page) => page) || [] + // ); + // }, [rewardActivitiesResponse]); + + const daysToReset = useMemo(() => { + const currentTime = Date.now() / 1000; // Current time in seconds + const differenceInSeconds = (resetDate as number) - currentTime; + return Math.floor(differenceInSeconds / (60 * 60 * 24)); + }, [resetDate]); + + // Helper function to check if 7 days have passed since the stored epoch time (in seconds) + const hasSevenDaysPassed = (storedEpochTime: number) => { + const currentTime = Math.floor(Date.now() / 1000); // Current time in epoch seconds + const sevenDays = 7; // 7 days + const differenceInSeconds = Math.floor((currentTime - storedEpochTime) / (60 * 60 * 24)); + + return differenceInSeconds > sevenDays; // Return true if 7 days or more have passed since the stored epoch time + }; + + // Function to handle fetch and timestamp/epoch comparison + const fetchAndHandleData = () => { + if (!pushStakeData || !uniV2StakeData) { + console.error('Missing stake data'); + return; + } + + const latestPushTimestamp = pushStakeData?.toTimestamp; + // const latestUniV2Timestamp = uniV2StakeData.toTimestamp; + const resetStakeEndDate = localStorage.getItem(CommonLocalStorageKeys.resetStakeEndDate); + + // confirm: push timestamp matches yield farming + const laterTimestamp = latestPushTimestamp; + + if (!resetStakeEndDate || hasSevenDaysPassed(Number(laterTimestamp))) { + localStorage.setItem(CommonLocalStorageKeys.resetStakeEndDate, laterTimestamp.toString()); + } + setResetDate(laterTimestamp); + // Call the appropriate fetch function based on the later timestamp + handleFetchData(allPushArray, 'push'); + }; + + // Handle get latest data function for both push and uniV2 + const handleFetchData = (activities: any[], stakeType: 'push' | 'uniV2') => { + if (!userDetails?.userId || activities.length <= 0) return; + + const activityTitles = activities.map((activity) => activity.activityType); + sendRecentActivities( + { + userId: userDetails.userId as string, + activities: activityTitles, + }, + { + onSuccess: (data) => handleSuccess(data, stakeType), + onError: (err) => { + console.error('Error', err); + }, + } + ); + }; + + // Handle success response and reset epoch if criteria met + const handleSuccess = (data: any, stakeType: 'push' | 'uniV2') => { + const { activities: dataActivity } = data; + const { latestActivityKey } = getActivityStatus(dataActivity); + const mostRecentStakeActivity = dataActivity?.[latestActivityKey]; + const stakeData = stakeType === 'push' ? pushStakeData : uniV2StakeData; + const toTimestamp = stakeData?.toTimestamp as number; + + const isEpochActive = mostRecentStakeActivity?.data?.currentEpoch === stakeData?.currentEpoch; + const isPastSevenDays = hasSevenDaysPassed(Number(toTimestamp)); + + if (!isEpochActive && isPastSevenDays) { + setResetEpoch(true); + console.log(`${stakeType} epoch is reset`); + } else { + setResetEpoch(false); + console.log(`${stakeType} epoch is not reset`); + } + }; + + // Effect for handling fetch data for both arrays + useEffect(() => { + if (isWalletConnected && userDetails?.userId && !isLoadingPushStakeData && !isLoadingPushUniData) { + fetchAndHandleData(); + } + + if (!isWalletConnected) { + setResetEpoch(false); + } + }, [userDetails?.userId, isWalletConnected, isLoadingPushStakeData, isLoadingPushUniData]); + + return { stakePushArray, uniV2PushArray, isLoading, daysToReset }; +}; + +export { useStakeRewardsResetTime }; diff --git a/src/modules/rewards/hooks/useVerifyDiscord.tsx b/src/modules/rewards/hooks/useVerifyDiscord.tsx index 7f98cfe6f7..88515e9f5b 100644 --- a/src/modules/rewards/hooks/useVerifyDiscord.tsx +++ b/src/modules/rewards/hooks/useVerifyDiscord.tsx @@ -5,17 +5,21 @@ import { useEffect, useState } from 'react'; import { PushAPI } from '@pushprotocol/restapi'; import { useSelector } from 'react-redux'; +// hooks; import { appConfig } from 'config'; -import { useClaimRewardsActivity } from 'queries'; +import { useClaimRewardsActivity, useGetUserRewardsDetails } from 'queries'; // helpers import { generateVerificationProof } from '../utils/generateVerificationProof'; +import { walletToCAIP10 } from 'helpers/w2w'; +import { useAccount } from 'hooks/useAccount'; // Types import { UserStoreType } from 'types'; //Config import APP_PATHS from 'config/AppPaths'; +import { useCallback } from 'react'; type UseDiscordActivityVerificationProps = { activityTypeId: string; @@ -32,14 +36,22 @@ const useVerifyDiscord = ({ const { userPushSDKInstance } = useSelector((state: UserStoreType) => state.user); - const [discordActivityStatus, setDiscordActivityStatus] = useState(null); + const [discordActivityStatus, setDiscordActivityStatus] = useState<'Claimed' | null>(null); const [verifyingDiscord, setVerifyingDiscord] = useState(token ? true : false); const [updatedId, setUpdatedId] = useState(null); + const { account } = useAccount(); + const isActiveAccount = userPushSDKInstance?.account === account; + const caip10WalletAddress = walletToCAIP10({ account }); + useEffect(() => { setErrorMessage(''); }, [setErrorMessage]); + const { refetch: refetchUserDetails } = useGetUserRewardsDetails({ + caip10WalletAddress: caip10WalletAddress, + }); + const { mutate: claimRewardsActivity } = useClaimRewardsActivity({ userId: updatedId as string, activityTypeId, @@ -48,6 +60,8 @@ const useVerifyDiscord = ({ const handleDiscordVerification = (userId: string) => { setUpdatedId(userId); setErrorMessage(''); + setVerifyingDiscord(true); + handleConnect(userId); }; @@ -69,59 +83,62 @@ const useVerifyDiscord = ({ }, 1000); }; - const handleVerify = async (userPushSDKInstance: PushAPI, userId: string) => { - const token = localStorage.getItem('access_token'); - const username = localStorage.getItem('username'); + const handleVerify = useCallback( + async (userPushSDKInstance: PushAPI, userId: string) => { + const token = localStorage.getItem('access_token'); + const username = localStorage.getItem('username'); - if (username && token) { - setVerifyingDiscord(true); - const data = { - discord: username, - discord_token: token, - }; + if (username && token) { + const data = { + discord: username, + discord_token: token, + }; - const verificationProof = await generateVerificationProof(data, userPushSDKInstance); + const verificationProof = await generateVerificationProof(data, userPushSDKInstance); - if (verificationProof == null || verificationProof == undefined) { - if (userPushSDKInstance && userPushSDKInstance.readmode()) { - setVerifyingDiscord(false); - setErrorMessage('Please Enable Push profile'); + if (verificationProof == null || verificationProof == undefined) { + if (userPushSDKInstance && userPushSDKInstance.readmode()) { + setVerifyingDiscord(false); + setErrorMessage('Please Enable Push profile'); + } + return; } - return; - } - localStorage.removeItem('access_token'); - localStorage.removeItem('username'); - localStorage.removeItem('expires_in'); - - claimRewardsActivity( - { - userId: updatedId || (userId as string), - activityTypeId, - pgpPublicKey: userPushSDKInstance.pgpPublicKey as string, - data: data, - verificationProof: verificationProof as string, - }, - { - onSuccess: (response) => { - if (response.status === 'COMPLETED') { - setDiscordActivityStatus('Claimed'); - refetchActivity(); - setVerifyingDiscord(false); - setErrorMessage(''); - } + localStorage.removeItem('access_token'); + localStorage.removeItem('username'); + localStorage.removeItem('expires_in'); + + claimRewardsActivity( + { + userId: updatedId || (userId as string), + activityTypeId, + pgpPublicKey: userPushSDKInstance.pgpPublicKey as string, + data: data, + verificationProof: verificationProof as string, }, - onError: (error: any) => { - console.log('Error in creating activity', error); - setVerifyingDiscord(false); - if (error.name) { - setErrorMessage(error.response.data.error); - } - }, - } - ); - } - }; + { + onSuccess: (response) => { + if (response.status === 'COMPLETED') { + setDiscordActivityStatus('Claimed'); + refetchActivity(); + refetchUserDetails(); + setVerifyingDiscord(false); + setErrorMessage(''); + } + }, + onError: (error: any) => { + console.log('Error in creating activity', error); + setVerifyingDiscord(false); + if (error.name) { + setErrorMessage(error.response.data.error); + } + }, + } + ); + } + }, + [isActiveAccount, userPushSDKInstance] + ); return { verifyingDiscord, diff --git a/src/modules/rewards/hooks/useVerifyRewards.tsx b/src/modules/rewards/hooks/useVerifyRewards.tsx new file mode 100644 index 0000000000..62a7e2bbc3 --- /dev/null +++ b/src/modules/rewards/hooks/useVerifyRewards.tsx @@ -0,0 +1,121 @@ +// react and other libraries +import { useEffect, useState } from 'react'; + +// third party libraries +import { useSelector } from 'react-redux'; + +// helpers +import { generateVerificationProof } from '../utils/generateVerificationProof'; +import { + useClaimRewardsActivity, + useGetPushStakeEpoch, + useGetUniV2StakeEpoch, + useGetUserRewardsDetails, +} from 'queries'; +import { walletToCAIP10 } from 'helpers/w2w'; +import { useAccount } from 'hooks/useAccount'; + +// types +import { UserStoreType } from 'types'; +import { getActivityData } from '../utils/stakeRewardUtilities'; + +export type UseVerifyRewardsParams = { + activityTypeId: string; + setErrorMessage: (errorMessage: string) => void; + refetchActivity: () => void; + activityTypeIndex?: string; +}; + +const useVerifyRewards = ({ + activityTypeId, + setErrorMessage, + refetchActivity, + activityTypeIndex, +}: UseVerifyRewardsParams) => { + const [verifyingRewards, setVerifyingRewards] = useState(false); + const [rewardsActivityStatus, setRewardsActivityStatus] = useState<'Claimed' | 'Pending' | null>(null); + const { userPushSDKInstance } = useSelector((state: UserStoreType) => state.user); + const [updatedId, setUpdatedId] = useState(null); + + const { account } = useAccount(); + + const caip10WalletAddress = walletToCAIP10({ account }); + + useEffect(() => { + setErrorMessage(''); + }, [setErrorMessage]); + + const handleRewardsVerification = (userId: string) => { + setUpdatedId(userId); + setVerifyingRewards(true); + handleVerify(userId); + }; + + const { data: pushStakeData } = useGetPushStakeEpoch(); + const { data: uniV2StakeData } = useGetUniV2StakeEpoch(); + + const { refetch: refetchUserDetails } = useGetUserRewardsDetails({ + caip10WalletAddress: caip10WalletAddress, + }); + + const { mutate: claimRewardsActivity } = useClaimRewardsActivity({ + userId: updatedId as string, + activityTypeId, + }); + + const handleVerify = async (userId: string | null) => { + setErrorMessage(''); + + const data = getActivityData(activityTypeIndex, pushStakeData, uniV2StakeData); + + const verificationProof = await generateVerificationProof(data, userPushSDKInstance); + + if (verificationProof == null || verificationProof == undefined) { + if (userPushSDKInstance && userPushSDKInstance.readmode()) { + setVerifyingRewards(false); + setErrorMessage('Please Enable Push profile'); + } + return; + } + + claimRewardsActivity( + { + userId: updatedId || (userId as string), + activityTypeId, + pgpPublicKey: userPushSDKInstance.pgpPublicKey as string, + data: data, + verificationProof: verificationProof as string, + }, + { + onSuccess: (response) => { + if (response.status === 'COMPLETED') { + setRewardsActivityStatus('Claimed'); + refetchActivity(); + refetchUserDetails(); + setVerifyingRewards(false); + } + if (response.status === 'PENDING') { + setRewardsActivityStatus('Pending'); + refetchActivity(); + setVerifyingRewards(false); + } + }, + onError: (error: any) => { + console.log('Error in creating activity', error); + setVerifyingRewards(false); + if (error.name) { + setErrorMessage(error.response.data.error); + } + }, + } + ); + }; + + return { + verifyingRewards, + rewardsActivityStatus, + handleRewardsVerification, + }; +}; + +export { useVerifyRewards }; diff --git a/src/modules/rewards/hooks/useVerifyTwitter.tsx b/src/modules/rewards/hooks/useVerifyTwitter.tsx index cb9cde7f20..b8b39e447b 100644 --- a/src/modules/rewards/hooks/useVerifyTwitter.tsx +++ b/src/modules/rewards/hooks/useVerifyTwitter.tsx @@ -1,15 +1,19 @@ // react and other libraries -import { useEffect, useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; // third party libraries import { initializeApp } from 'firebase/app'; import { getAuth, signInWithPopup, TwitterAuthProvider, User } from 'firebase/auth'; import { useSelector } from 'react-redux'; +// hooks +import { useAccount } from 'hooks/useAccount'; +import { useClaimRewardsActivity, useGetUserRewardsDetails } from 'queries'; + // helpers import { appConfig } from 'config'; import { generateVerificationProof } from '../utils/generateVerificationProof'; -import { useClaimRewardsActivity } from 'queries'; +import { walletToCAIP10 } from 'helpers/w2w'; // types import { UserStoreType } from 'types'; @@ -22,13 +26,21 @@ export type UseTwitterVerifyParams = { const useVerifyTwitter = ({ activityTypeId, setErrorMessage, refetchActivity }: UseTwitterVerifyParams) => { const [verifyingTwitter, setVerifyingTwitter] = useState(false); - const [twitterActivityStatus, setTwitterActivityStatus] = useState(null); + const [twitterActivityStatus, setTwitterActivityStatus] = useState<'Claimed' | 'Pending' | null>(null); const { userPushSDKInstance } = useSelector((state: UserStoreType) => state.user); const [updatedId, setUpdatedId] = useState(null); + const { account } = useAccount(); + const caip10WalletAddress = walletToCAIP10({ account }); + const isActiveAccount = userPushSDKInstance?.account === account; + + const { refetch: refetchUserDetails } = useGetUserRewardsDetails({ + caip10WalletAddress: caip10WalletAddress, + }); + useEffect(() => { setErrorMessage(''); - }, [setErrorMessage]); + }, [setErrorMessage, account]); initializeApp(appConfig.firebaseConfig); @@ -37,6 +49,8 @@ const useVerifyTwitter = ({ activityTypeId, setErrorMessage, refetchActivity }: const handleTwitterVerification = (userId: string) => { setUpdatedId(userId); + setVerifyingTwitter(true); + handleVerify(userId); }; @@ -67,65 +81,72 @@ const useVerifyTwitter = ({ activityTypeId, setErrorMessage, refetchActivity }: activityTypeId, }); - const handleVerify = async (userId: string | null) => { - setErrorMessage(''); - setVerifyingTwitter(true); + const handleVerify = useCallback( + async (userId: string | null) => { + setErrorMessage(''); - const userTwitterDetails = await handleConnect(); + if (!isActiveAccount) return; - if (userTwitterDetails) { - // @ts-expect-error - const twitterHandle = userTwitterDetails.reloadUserInfo.screenName; + const userTwitterDetails = await handleConnect(); - const verificationProof = await generateVerificationProof( - { - twitter: twitterHandle, - }, - userPushSDKInstance - ); + if (userTwitterDetails) { + // @ts-expect-error + const twitterHandle = userTwitterDetails.reloadUserInfo.screenName; - if (verificationProof == null || verificationProof == undefined) { - if (userPushSDKInstance && userPushSDKInstance.readmode()) { - setVerifyingTwitter(false); - setErrorMessage('Please Enable Push profile'); - } - return; - } + console.log(userPushSDKInstance.pgpPublicKey?.slice(-40)); - claimRewardsActivity( - { - userId: updatedId || (userId as string), - activityTypeId, - pgpPublicKey: userPushSDKInstance.pgpPublicKey as string, - data: { + const verificationProof = await generateVerificationProof( + { twitter: twitterHandle, }, - verificationProof: verificationProof as string, - }, - { - onSuccess: (response) => { - if (response.status === 'COMPLETED') { - setTwitterActivityStatus('Claimed'); - refetchActivity(); - setVerifyingTwitter(false); - } - if (response.status === 'PENDING') { - setTwitterActivityStatus('Pending'); - refetchActivity(); - setVerifyingTwitter(false); - } - }, - onError: (error: any) => { - console.log('Error in creating activity', error); + userPushSDKInstance + ); + + if (verificationProof == null || verificationProof == undefined) { + if (userPushSDKInstance && userPushSDKInstance.readmode()) { setVerifyingTwitter(false); - if (error.name) { - setErrorMessage(error.response.data.error); - } - }, + setErrorMessage('Please Enable Push profile'); + } + return; } - ); - } - }; + + claimRewardsActivity( + { + userId: updatedId || (userId as string), + activityTypeId, + pgpPublicKey: userPushSDKInstance.pgpPublicKey as string, + data: { + twitter: twitterHandle, + }, + verificationProof: verificationProof as string, + }, + { + onSuccess: (response) => { + if (response.status === 'COMPLETED') { + setTwitterActivityStatus('Claimed'); + refetchActivity(); + refetchUserDetails(); + setVerifyingTwitter(false); + } + if (response.status === 'PENDING') { + setTwitterActivityStatus('Pending'); + refetchActivity(); + setVerifyingTwitter(false); + } + }, + onError: (error: any) => { + console.log('Error in creating activity', error); + setVerifyingTwitter(false); + if (error.name) { + setErrorMessage(error.response.data.error); + } + }, + } + ); + } + }, + [isActiveAccount, userPushSDKInstance, handleConnect] + ); return { verifyingTwitter, diff --git a/src/modules/rewards/hooks/useWithAuthButton.tsx b/src/modules/rewards/hooks/useWithAuthButton.tsx index c133b00cfd..60110da5dc 100644 --- a/src/modules/rewards/hooks/useWithAuthButton.tsx +++ b/src/modules/rewards/hooks/useWithAuthButton.tsx @@ -19,9 +19,11 @@ import { Button } from 'blocks'; export const useAuthWithButton = ({ onSuccess, isLoading, + label = 'verify', }: { onSuccess: (userDetails: UserRewardsDetailResponse) => void; isLoading: boolean; + label?: string; }) => { const [isWalletConnectedAndProfileUnlocked, setIsWalletConnectedAndProfileUnlocked] = useState(false); const [showAuth, setShowAuth] = useState(false); // Track button click @@ -30,7 +32,7 @@ export const useAuthWithButton = ({ const { userPushSDKInstance } = useSelector((state: UserStoreType) => state.user); const { isAuthModalVisible, connectWallet, handleVerify, userDetails, hideAuthModal } = useRewardsAuth(); - const { isSuccess, isUserProfileUnlocked } = useCreateRewardsUser(); + const { isSuccess, setIsSuccess, isUserProfileUnlocked } = useCreateRewardsUser(); const handleAuthModal = async () => { setShowAuth(true); @@ -39,23 +41,23 @@ export const useAuthWithButton = ({ const isAuthenticated = useMemo(() => { return ( - isSuccess || - (userDetails && isUserProfileUnlocked && handleVerify && userPushSDKInstance && !userPushSDKInstance.readmode()) + userDetails && isUserProfileUnlocked && handleVerify && userPushSDKInstance && !userPushSDKInstance.readmode() ); - }, [isSuccess, userDetails, isUserProfileUnlocked, handleVerify, userPushSDKInstance]); + }, [userDetails, isUserProfileUnlocked, handleVerify, userPushSDKInstance]); const handleSuccess = (userDetails: UserRewardsDetailResponse) => { setIsWalletConnectedAndProfileUnlocked(true); onSuccess(userDetails); + setIsSuccess(false); setShowAuth(false); }; useEffect(() => { - if (showAuth && isAuthenticated && userDetails) { + if ((showAuth && isAuthenticated && userDetails) || (isSuccess && userDetails)) { handleSuccess(userDetails); console.log('handle Success'); } - }, [isAuthenticated, userDetails]); + }, [isAuthenticated, userDetails, isSuccess]); const authButton = useMemo( () => ( @@ -66,11 +68,11 @@ export const useAuthWithButton = ({ onClick={handleAuthModal} disabled={isLoading} > - Verify + {label} ), - [isWalletConnected, isAuthModalVisible, isLoading] + [isWalletConnected, isLoading] ); return { diff --git a/src/modules/rewards/utils/activityTypeArray.ts b/src/modules/rewards/utils/activityTypeArray.ts new file mode 100644 index 0000000000..4457515aa6 --- /dev/null +++ b/src/modules/rewards/utils/activityTypeArray.ts @@ -0,0 +1,59 @@ +import { ActvityType } from 'queries'; + +export const otherRewardActivities: ActvityType[] = [ + 'create_gated_group_push_chat', + 'subscribe_5_channels_push', + 'subscribe_20_channels_push', + 'setup_push_user_profile', + 'active_push_chat_user', + 'hold_push_alpha_access_nft', + 'hold_push_rockstar_nft', +]; + +export const bonusRewardActivities: ActvityType[] = [ + 'create_channel_push', + 'reach_100_subscribers', + 'reach_500_subscribers', + 'reach_1000_subscribers', + 'reach_5000_subscribers', + 'reach_10000_subscribers', + 'reach_50000_subscribers', + 'reach_100000_subscribers', +]; + +export const dailyRewardActivities: ActvityType[] = [ + 'daily_check_in_7_days_day1', + 'daily_check_in_7_days_day2', + 'daily_check_in_7_days_day3', + 'daily_check_in_7_days_day4', + 'daily_check_in_7_days_day5', + 'daily_check_in_7_days_day6', + 'daily_check_in_7_days_day7', +]; + +export const stakeRewardActivities: ActvityType[] = [ + 'stake_1k_push_epoch', + 'stake_5k_push_epoch', + 'stake_10k_push_epoch', + 'stake_50k_push_epoch', + 'stake_100k_push_epoch', + 'stake_500k_push_epoch', + 'stake_1_uni_v2_lp_epoch', + 'stake_5_uni_v2_lp_epoch', + 'stake_10_uni_v2_lp_epoch', + 'stake_50_uni_v2_lp_epoch', + 'stake_100_uni_v2_lp_epoch', + 'stake_500_uni_v2_lp_epoch', + 'stake_1k_push_one_time', + 'stake_5k_push_one_time', + 'stake_10k_push_one_time', + 'stake_50k_push_one_time', + 'stake_100k_push_one_time', + 'stake_500k_push_one_time', + 'stake_1_uni_v2_lp_one_time', + 'stake_5_uni_v2_lp_one_time', + 'stake_10_uni_v2_lp_one_time', + 'stake_50_uni_v2_lp_one_time', + 'stake_100_uni_v2_lp_one_time', + 'stake_500_uni_v2_lp_one_time', +]; diff --git a/src/modules/rewards/utils/resolveRecentActivityStatus.ts b/src/modules/rewards/utils/resolveRecentActivityStatus.ts new file mode 100644 index 0000000000..011fb3ddab --- /dev/null +++ b/src/modules/rewards/utils/resolveRecentActivityStatus.ts @@ -0,0 +1,58 @@ +// process date +const processDateString = (dateString: string) => { + return new Date(dateString); +}; + +// Function to find the closest date to the target +const findClosest = (data: any[], accessor: (item: any) => Date, target = Date.now()) => { + return data.reduce((prev, curr) => { + const a = Math.abs(accessor(curr).getTime() - target); + const b = Math.abs(accessor(prev).getTime() - target); + return a - b < 0 ? curr : prev; + }); +}; + +// check time to current time +export const checkTimeToCurrent = (updatedAt: string | undefined) => { + if (!updatedAt) return true; + const lastActivityDate = new Date(updatedAt).getTime(); + const currentTime = Date.now(); + const timeDifference = currentTime - lastActivityDate; + const hoursDifference = timeDifference / (1000 * 60 * 60); + return hoursDifference < 24; +}; + +// Function to extract the day number from the activity title or type +export const getDayNumber = (activity: any) => { + const dayMatch = activity?.activityTitle.match(/Day (\d+)/) || activity?.activityType.match(/day(\d+)/); + return dayMatch ? parseInt(dayMatch[1], 10) : 0; +}; + +// Function to get the status of activities +export const getActivityStatus = (activities: Record>) => { + let firstEmptyActivity = null; + let latestActivityKey = null; + let isEmpty = true; + + const nonEmptyActivities: { key: string; updatedAt: Date }[] = []; + + for (const [key, value] of Object.entries(activities)) { + if (Object.keys(value).length === 0) { + if (!firstEmptyActivity) { + firstEmptyActivity = key; + } + } else { + isEmpty = false; + nonEmptyActivities.push({ key, updatedAt: processDateString(value?.updatedAt) }); + } + } + + const closestActivity = + nonEmptyActivities.length > 0 ? findClosest(nonEmptyActivities, (item) => item.updatedAt) : null; + + if (closestActivity) { + latestActivityKey = closestActivity.key; + } + + return { isEmpty, firstEmptyActivity, latestActivityKey }; +}; diff --git a/src/modules/rewards/utils/stakeRewardUtilities.ts b/src/modules/rewards/utils/stakeRewardUtilities.ts new file mode 100644 index 0000000000..ce73174242 --- /dev/null +++ b/src/modules/rewards/utils/stakeRewardUtilities.ts @@ -0,0 +1,66 @@ +import { RewardsStakeParams } from 'queries'; + +/** + * Compares two objects based on the numerical value of their `index` property. + * Assumes `index` is a string with a hyphen ('-') and takes the last segment as the number. + * Compares these numbers and returns the result to sort in numerical order. + * + * @param {{ index?: string }} a - First object to compare, optionally having an `index` property. + * @param {{ index?: string }} b - Second object to compare, optionally having an `index` property. + * @returns {number} - Negative if `a` < `b`, positive if `a` > `b`, or `0` if they are equal. + */ + +export const sortByIndexNumber = (a: { index?: string }, b: { index?: string }): number => { + const numA = parseInt(a.index?.split('-').pop() || '0', 10); + const numB = parseInt(b.index?.split('-').pop() || '0', 10); + return numA - numB; +}; + +/** + * Returns the appropriate staking data based on the activity type. + * + * - If `activityTypeIndex` starts with 'point-push' or 'multiplier-push', returns `pushStakeData`. + * - If `activityTypeIndex` starts with 'point-uni-v2' or 'multiplier-uni-v2', returns `uniV2StakeData`. + * - Returns an empty object if no match is found. + * + * @param {string | undefined} activityTypeIndex - The type of activity. + * @param {RewardsStakeParams} [pushStakeData] - Staking data for Push. + * @param {RewardsStakeParams} [uniV2StakeData] - Staking data for Uni V2. + * + * @returns {RewardsStakeParams | {}} - Corresponding stake data or an empty object. + */ +export const getActivityData = ( + activityTypeIndex: string | undefined, + pushStakeData?: RewardsStakeParams, + uniV2StakeData?: RewardsStakeParams +): RewardsStakeParams | {} => { + if (activityTypeIndex?.startsWith('point-push') || activityTypeIndex?.startsWith('multiplier-push')) { + return pushStakeData as RewardsStakeParams; + } + + if (activityTypeIndex?.startsWith('point-uni-v2') || activityTypeIndex?.startsWith('multiplier-uni-v2')) { + return uniV2StakeData as RewardsStakeParams; + } + + return {}; // Default if no match +}; + +// Consolidated function for filtering and sorting activities in stake points and multipliers, we are +// sorting by the indexes to get multiplier points, mulitplier unis, push points and uni points. +// and also, doing a filter and sort of all the unis, and all push to get the latest activities in the useStakeRewardsResetTime hook +export const filterAndSortActivities = (prefix: string, activities: any[], multiplier?: boolean) => { + return activities + .filter( + (activity) => + activity.index.startsWith(multiplier ? `multiplier-${prefix}` : `point-${prefix}`) && + activity?.status === 'ENABLED' + ) + .sort(sortByIndexNumber); +}; + +export const filterAndSortAllActivities = (prefix: string, secondprefix: string, activities: any[]) => { + return activities.filter( + (activity) => + activity.index.startsWith(prefix) || (activity.index.startsWith(secondprefix) && activity?.status === 'ENABLED') + ); +}; diff --git a/src/modules/sendNotification/SendNotification.tsx b/src/modules/sendNotification/SendNotification.tsx index cc8f27c099..a57cad574b 100644 --- a/src/modules/sendNotification/SendNotification.tsx +++ b/src/modules/sendNotification/SendNotification.tsx @@ -48,14 +48,14 @@ const SendNotification: FC = () => { Send Notification Send Notification diff --git a/src/queries/hooks/rewards/index.ts b/src/queries/hooks/rewards/index.ts index 85bd786ba1..ee6ba806a3 100644 --- a/src/queries/hooks/rewards/index.ts +++ b/src/queries/hooks/rewards/index.ts @@ -5,3 +5,6 @@ export * from './claimRewardsActivity'; export * from './useGetUserRewardsDetails'; export * from './useCreateRewardsUser'; export * from './useGetRewardsLedearboard'; +export * from './useGetRewardActivityStatus'; +export * from './useGetPushStakeEpoch'; +export * from './useGetUniV2StakeEpoch'; diff --git a/src/queries/hooks/rewards/useGetPushStakeEpoch.ts b/src/queries/hooks/rewards/useGetPushStakeEpoch.ts new file mode 100644 index 0000000000..0d4d95dcc4 --- /dev/null +++ b/src/queries/hooks/rewards/useGetPushStakeEpoch.ts @@ -0,0 +1,9 @@ +import { useQuery } from '@tanstack/react-query'; +import { pushStakeEpoch } from 'queries/queryKeys'; +import { getPushStakeEpoch } from 'queries/services'; + +export const useGetPushStakeEpoch = () => + useQuery({ + queryKey: [pushStakeEpoch], + queryFn: getPushStakeEpoch, + }); diff --git a/src/queries/hooks/rewards/useGetRewardActivityStatus.ts b/src/queries/hooks/rewards/useGetRewardActivityStatus.ts new file mode 100644 index 0000000000..5713bcafdd --- /dev/null +++ b/src/queries/hooks/rewards/useGetRewardActivityStatus.ts @@ -0,0 +1,9 @@ +import { useMutation } from '@tanstack/react-query'; +import { rewardActivityStatus } from 'queries'; +import { getRewardActivityStatus } from 'queries/services'; + +export const useGetRewardActivityStatus = (payload: { userId: string }) => + useMutation({ + mutationKey: [rewardActivityStatus, payload?.userId], + mutationFn: getRewardActivityStatus, + }); diff --git a/src/queries/hooks/rewards/useGetRewardsActivities.ts b/src/queries/hooks/rewards/useGetRewardsActivities.ts index 8186e383b3..4ceae97402 100644 --- a/src/queries/hooks/rewards/useGetRewardsActivities.ts +++ b/src/queries/hooks/rewards/useGetRewardsActivities.ts @@ -1,21 +1,9 @@ -import { useInfiniteQuery } from '@tanstack/react-query'; +import { useQuery } from '@tanstack/react-query'; import { allActivities } from 'queries/queryKeys'; import { getRewardsActivities } from 'queries/services/rewards'; -import { ActivitiesParams } from 'queries/types'; -export const useGetRewardsActivities = ({ pageSize }: ActivitiesParams) => - useInfiniteQuery({ +export const useGetRewardsActivities = () => + useQuery({ queryKey: [allActivities], - initialPageParam: 1, - queryFn: ({ pageParam }) => - getRewardsActivities({ - pageSize, - pageNumber: pageParam as number - }), - getNextPageParam: ({ page, total, size }) => { - if (size * page >= total) { - return null; - } - return page + 1; - } + queryFn: getRewardsActivities, }); diff --git a/src/queries/hooks/rewards/useGetUniV2StakeEpoch.ts b/src/queries/hooks/rewards/useGetUniV2StakeEpoch.ts new file mode 100644 index 0000000000..2850de6932 --- /dev/null +++ b/src/queries/hooks/rewards/useGetUniV2StakeEpoch.ts @@ -0,0 +1,9 @@ +import { useQuery } from '@tanstack/react-query'; +import { uniV2StakeEpoch } from 'queries/queryKeys'; +import { getUniV2StakeEpoch } from 'queries/services'; + +export const useGetUniV2StakeEpoch = () => + useQuery({ + queryKey: [uniV2StakeEpoch], + queryFn: getUniV2StakeEpoch, + }); diff --git a/src/queries/models/rewards/createUserRewardsDetailsModel.ts b/src/queries/models/rewards/createUserRewardsDetailsModel.ts index ce12240975..643b58182f 100644 --- a/src/queries/models/rewards/createUserRewardsDetailsModel.ts +++ b/src/queries/models/rewards/createUserRewardsDetailsModel.ts @@ -1,4 +1,4 @@ -import { createUserRewardsDetailsResponse } from '../../types/rewards'; +import { UserRewardsDetailResponse } from '../../types/rewards'; export const createUserRewardsDetailModel = (response: UserRewardsDetailResponse): UserRewardsDetailResponse => response; diff --git a/src/queries/models/rewards/getPushStakeEpochModel.ts b/src/queries/models/rewards/getPushStakeEpochModel.ts new file mode 100644 index 0000000000..b610134e39 --- /dev/null +++ b/src/queries/models/rewards/getPushStakeEpochModel.ts @@ -0,0 +1,3 @@ +import { RewardsStakeParams } from 'queries/types'; + +export const getPushStakeEpochModel = (response: RewardsStakeParams): RewardsStakeParams => response; diff --git a/src/queries/models/rewards/getRewardActivityStatusModel.ts b/src/queries/models/rewards/getRewardActivityStatusModel.ts new file mode 100644 index 0000000000..0ae7c4444f --- /dev/null +++ b/src/queries/models/rewards/getRewardActivityStatusModel.ts @@ -0,0 +1,4 @@ +import { RewardActivityStatusResponse } from 'queries/types'; + +export const getRewardActivityStatusModel = (response: RewardActivityStatusResponse): RewardActivityStatusResponse => + response; diff --git a/src/queries/models/rewards/getUniV2StakeEpochModel.ts b/src/queries/models/rewards/getUniV2StakeEpochModel.ts new file mode 100644 index 0000000000..4a8f0d2bde --- /dev/null +++ b/src/queries/models/rewards/getUniV2StakeEpochModel.ts @@ -0,0 +1,3 @@ +import { RewardsStakeParams } from 'queries/types'; + +export const getUniV2StakeEpochModel = (response: RewardsStakeParams): RewardsStakeParams => response; diff --git a/src/queries/models/rewards/index.ts b/src/queries/models/rewards/index.ts index c7e2db9da7..cb8c48e292 100644 --- a/src/queries/models/rewards/index.ts +++ b/src/queries/models/rewards/index.ts @@ -5,3 +5,6 @@ export * from './claimRewardsActivityModelCreator'; export * from './getUserRewardDetailsModel'; export * from './createUserRewardsDetailsModel'; export * from './getRewardsLeaderboardModalCreator'; +export * from './getRewardActivityStatusModel'; +export * from './getPushStakeEpochModel'; +export * from './getUniV2StakeEpochModel'; diff --git a/src/queries/queryKeys.ts b/src/queries/queryKeys.ts index 9af59f513d..2e286d41b6 100644 --- a/src/queries/queryKeys.ts +++ b/src/queries/queryKeys.ts @@ -1,42 +1,45 @@ -export const UserRewardsDetails = 'userRewardsDetails'; export const addDelegate = 'addDelegate'; export const createNotificationSettings = 'createNotificationSettings'; export const addNewSubgraph = 'addNewSubgraph'; export const aliasInfo = 'aliasInfo'; export const allActivities = 'allActivities'; export const allUserSubscriptions = 'allUserSubscriptions'; +export const approvingPUSHToken = 'approvingPUSHToken'; export const approveVaultUser = 'approveVaultUser'; export const channelDelegates = 'channelDelegates'; export const channelDetails = 'channelDetails'; export const channelNotifications = 'channelNotifications'; export const claimRewards = 'claimRewards'; export const createUserRewardsDetails = 'createUserRewardsDetails'; +export const creatingNewChannel = 'creatingNewChannel'; export const deactivatingChannel = 'deactivatingChannel'; export const discordDetails = 'discordDetails'; export const generateUserIdByWallet = 'generateUserIdByWallet'; -export const creatingNewChannel = 'creatingNewChannel'; -export const approvingPUSHToken = 'approvingPUSHToken'; export const initiateNewChain = 'initiateNewChain'; export const pointsVaultApprovedUsers = 'pointsVaultApprovedUsers'; export const pointsVaultPendingUsers = 'pointsVaultPendingUsers'; export const pointsVaultRejectedUsers = 'pointsVaultRejectedUsers'; export const pointsVaultSearch = 'pointsVaultSearch'; export const pointsVaultUserLoginKey = 'pointsVaultUserLogin'; +export const pushStakeEpoch = 'pushStakeEpoch'; export const reactivatingChannel = 'reactivatingChannel'; export const rejectVaultUser = 'rejectVaultUser'; export const removeDelegate = 'removeDelegate'; +export const rewardActivityStatus = 'rewardActivityStatus'; export const rewardsActivity = 'rewardsActivity'; export const rewardsLeaderboard = 'rewardsLeaderboard'; export const sendNotification = 'sendNotification'; +export const sentMessageCount = 'sentMessageCount'; +export const sentNotificationCount = 'sentNotificationCount'; +export const subscribe = 'subscribe'; +export const subscriberCount = 'subscriberCount'; export const trendingChannels = 'trendingChannels'; +export const uniV2StakeEpoch = 'uniV2StakeEpoch'; +export const unsubscribe = 'unsubscribe'; export const updateChannelDetails = 'updateChannelDetails'; +export const updatingNotificationSetting = 'updatingNotificationSetting'; export const userRewardsDetails = 'userRewardsDetails'; +export const UserRewardsDetails = 'userRewardsDetails'; export const userSubscription = 'userSubscription'; export const userTwitterDetails = 'userTwitterDetails'; export const verifyAliasChain = 'verifyAliasChain'; -export const sentMessageCount = 'sentMessageCount'; -export const sentNotificationCount = 'sentNotificationCount'; -export const subscriberCount = 'subscriberCount'; -export const subscribe = 'subscribe'; -export const unsubscribe = 'unsubscribe'; -export const updatingNotificationSetting = 'updatingNotificationSetting'; diff --git a/src/queries/services/rewards/getPushStakeEpoch.ts b/src/queries/services/rewards/getPushStakeEpoch.ts new file mode 100644 index 0000000000..e9f430ff71 --- /dev/null +++ b/src/queries/services/rewards/getPushStakeEpoch.ts @@ -0,0 +1,10 @@ +import axios from 'axios'; + +import { getRewardsBaseURL } from '../../baseURL'; +import { getPushStakeEpochModel } from 'queries/models'; + +export const getPushStakeEpoch = () => + axios({ + method: 'GET', + url: `${getRewardsBaseURL()}/staking/push/current-epoch-blocks`, + }).then((response) => getPushStakeEpochModel(response.data)); diff --git a/src/queries/services/rewards/getRewardActivityStatus.ts b/src/queries/services/rewards/getRewardActivityStatus.ts new file mode 100644 index 0000000000..2551984f7e --- /dev/null +++ b/src/queries/services/rewards/getRewardActivityStatus.ts @@ -0,0 +1,14 @@ +import axios from 'axios'; +import { getRewardsBaseURL } from 'queries/baseURL'; +import { getRewardActivityStatusModel } from 'queries/models'; +import { RewardActivityStatusProps } from 'queries/types'; + +export const getRewardActivityStatus = (payload: RewardActivityStatusProps) => + axios({ + method: 'POST', + url: `${getRewardsBaseURL()}/users/${payload.userId}/recent-activities`, + data: payload.activities, + headers: { + 'Content-Type': 'application/json', + }, + }).then((response) => getRewardActivityStatusModel(response.data)); diff --git a/src/queries/services/rewards/getRewardsActivities.ts b/src/queries/services/rewards/getRewardsActivities.ts index 56be7b4a88..36067bbb7f 100644 --- a/src/queries/services/rewards/getRewardsActivities.ts +++ b/src/queries/services/rewards/getRewardsActivities.ts @@ -1,14 +1,14 @@ import axios from 'axios'; import { getRewardsActivitiesModelCreator } from '../../models/rewards'; import { getRewardsBaseURL } from '../../baseURL'; -import { ActivitiesParams } from 'queries/types'; -export const getRewardsActivities = ({ pageSize, pageNumber }: ActivitiesParams) => +const pageSize = 50; + +export const getRewardsActivities = () => axios({ method: 'GET', url: `${`${getRewardsBaseURL()}`}/activities/all`, params: { - pageSize: pageSize || 1, - pageNumber: pageNumber || 1 - } + pageSize: pageSize, + }, }).then((response) => getRewardsActivitiesModelCreator(response.data)); diff --git a/src/queries/services/rewards/getUniV2StakeEpoch.ts b/src/queries/services/rewards/getUniV2StakeEpoch.ts new file mode 100644 index 0000000000..6598ac5bb1 --- /dev/null +++ b/src/queries/services/rewards/getUniV2StakeEpoch.ts @@ -0,0 +1,10 @@ +import axios from 'axios'; + +import { getRewardsBaseURL } from '../../baseURL'; +import { getUniV2StakeEpochModel } from 'queries/models'; + +export const getUniV2StakeEpoch = () => + axios({ + method: 'GET', + url: `${getRewardsBaseURL()}/staking/univ2/current-epoch-blocks`, + }).then((response) => getUniV2StakeEpochModel(response.data)); diff --git a/src/queries/services/rewards/index.ts b/src/queries/services/rewards/index.ts index 4c24a2a16d..85434d4bd6 100644 --- a/src/queries/services/rewards/index.ts +++ b/src/queries/services/rewards/index.ts @@ -5,3 +5,6 @@ export * from './claimRewardsActivity.ts'; export * from './getUserRewardsDetail.ts'; export * from './createUserRewardsDetail.ts'; export * from './getRewardsLeaderboard'; +export * from './getRewardActivityStatus.ts'; +export * from './getPushStakeEpoch.ts'; +export * from './getUniV2StakeEpoch.ts'; diff --git a/src/queries/types/rewards.ts b/src/queries/types/rewards.ts index 8808009279..109af1499d 100644 --- a/src/queries/types/rewards.ts +++ b/src/queries/types/rewards.ts @@ -6,7 +6,55 @@ export type RewardsAcitivitesResponse = { }; //TODO: Remove the test expiry type -export type ActvityType = 'follow_push_on_discord' | 'follow_push_on_twitter' | 'test_expiry_type'; +export type ActvityType = + | 'follow_push_on_discord' + | 'follow_push_on_twitter' + | 'create_gated_group_push_chat' + | 'subscribe_5_channels_push' + | 'subscribe_20_channels_push' + | 'setup_push_user_profile' + | 'active_push_chat_user' + | 'hold_push_alpha_access_nft' + | 'hold_push_rockstar_nft' + | 'create_channel_push' + | 'reach_100_subscribers' + | 'reach_500_subscribers' + | 'reach_1000_subscribers' + | 'reach_5000_subscribers' + | 'reach_10000_subscribers' + | 'reach_50000_subscribers' + | 'reach_100000_subscribers' + | 'daily_check_in_7_days_day1' + | 'daily_check_in_7_days_day2' + | 'daily_check_in_7_days_day3' + | 'daily_check_in_7_days_day4' + | 'daily_check_in_7_days_day5' + | 'daily_check_in_7_days_day6' + | 'daily_check_in_7_days_day7' + | 'stake_1k_push_epoch' + | 'stake_5k_push_epoch' + | 'stake_10k_push_epoch' + | 'stake_50k_push_epoch' + | 'stake_100k_push_epoch' + | 'stake_500k_push_epoch' + | 'stake_1_uni_v2_lp_epoch' + | 'stake_5_uni_v2_lp_epoch' + | 'stake_10_uni_v2_lp_epoch' + | 'stake_50_uni_v2_lp_epoch' + | 'stake_100_uni_v2_lp_epoch' + | 'stake_500_uni_v2_lp_epoch' + | 'stake_1k_push_one_time' + | 'stake_5k_push_one_time' + | 'stake_10k_push_one_time' + | 'stake_50k_push_one_time' + | 'stake_100k_push_one_time' + | 'stake_500k_push_one_time' + | 'stake_1_uni_v2_lp_one_time' + | 'stake_5_uni_v2_lp_one_time' + | 'stake_10_uni_v2_lp_one_time' + | 'stake_50_uni_v2_lp_one_time' + | 'stake_100_uni_v2_lp_one_time' + | 'stake_500_uni_v2_lp_one_time'; export type Activity = { id: string; @@ -18,6 +66,10 @@ export type Activity = { expiryType: number; name?: string; JoinURL: string; + index: string; + status: 'ENABLED' | 'DISABLED'; + tags?: []; + isExpired?: boolean; }; export type UsersAllActivitiesResponse = { @@ -47,11 +99,16 @@ type Prop = { export type ClaimRewardsActivityProps = { userId: string; activityTypeId: string; - data: Prop; + data: Prop | {}; verificationProof: string; pgpPublicKey: string; }; +export type RewardActivityStatusProps = { + userId: string; + activities: any; +}; + export type PointsVaultUserLoginProps = { username: string; password: string; @@ -153,7 +210,33 @@ export type LeaderboardParams = { pageNumber?: number; }; -export type ActivitiesParams = { - pageSize?: number; - pageNumber?: number; +export type RewardsStakeParams = { + currentEpoch: number; + fromBlock: number; + toBlock: number; + fromTimestamp: number; + toTimestamp: number; +}; + +export type ActivityData = { + discord?: string; + discord_token?: string; + twitter?: string; +}; + +export type RewardActivityStatus = { + activityId: string; + activityTypeId: string; + createdAt: string; + data: ActivityData | {}; + multiplier: number; + points: number; + status: string; + updatedAt: string; + userId: string; + verificationProof: string; +}; + +export type RewardActivityStatusResponse = { + [key: string]: RewardActivityStatus | {}; }; diff --git a/src/structure/Header.tsx b/src/structure/Header.tsx index 165f141068..f20cab0d7e 100644 --- a/src/structure/Header.tsx +++ b/src/structure/Header.tsx @@ -111,14 +111,14 @@ const RewardsHeaderLink = ({ caip10WalletAddress }: { caip10WalletAddress: strin /> {userDetails && userDetails?.totalPoints > 0 ? userDetails?.totalPoints?.toLocaleString() : ''} {userDetails && userDetails?.totalPoints > 0 ? userDetails?.totalPoints?.toLocaleString() : ''} @@ -224,9 +224,6 @@ function Header({ isDarkMode, darkModeToggle }) { tabletAlign="flex-start" > - {/* - - */} =7.17.0, @babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.10.4, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.23.9, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.4.4, @babel/runtime@npm:^7.5.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.8.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.25.0 - resolution: "@babel/runtime@npm:7.25.0" + version: 7.25.6 + resolution: "@babel/runtime@npm:7.25.6" dependencies: regenerator-runtime: "npm:^0.14.0" - checksum: 10/6870e9e0e9125075b3aeba49a266f442b10820bfc693019eb6c1785c5a0edbe927e98b8238662cdcdba17842107c040386c3b69f39a0a3b217f9d00ffe685b27 + checksum: 10/0c4134734deb20e1005ffb9165bf342e1074576621b246d8e5e41cc7cb315a885b7d98950fbf5c63619a2990a56ae82f444d35fe8c4691a0b70c2fe5673667dc languageName: node linkType: hard @@ -340,28 +340,28 @@ __metadata: linkType: hard "@babel/traverse@npm:^7.24.5, @babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.25.2, @babel/traverse@npm:^7.4.5": - version: 7.25.3 - resolution: "@babel/traverse@npm:7.25.3" + version: 7.25.6 + resolution: "@babel/traverse@npm:7.25.6" dependencies: "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.25.0" - "@babel/parser": "npm:^7.25.3" + "@babel/generator": "npm:^7.25.6" + "@babel/parser": "npm:^7.25.6" "@babel/template": "npm:^7.25.0" - "@babel/types": "npm:^7.25.2" + "@babel/types": "npm:^7.25.6" debug: "npm:^4.3.1" globals: "npm:^11.1.0" - checksum: 10/fba34f323e17fa83372fc290bc12413a50e2f780a86c7d8b1875c594b6be2857867804de5d52ab10a78a9cae29e1b09ea15d85ad63671ce97d79c40650282bb9 + checksum: 10/de75a918299bc27a44ec973e3f2fa8c7902bbd67bd5d39a0be656f3c1127f33ebc79c12696fbc8170a0b0e1072a966d4a2126578d7ea2e241b0aeb5d16edc738 languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.24.5, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/types@npm:7.25.2" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.24.5, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.6": + version: 7.25.6 + resolution: "@babel/types@npm:7.25.6" dependencies: "@babel/helper-string-parser": "npm:^7.24.8" "@babel/helper-validator-identifier": "npm:^7.24.7" to-fast-properties: "npm:^2.0.0" - checksum: 10/ccf5399db1dcd6dd87b84a6f7bc8dd241e04a326f4f038c973c26ccb69cd360c8f2276603f584c58fd94da95229313060b27baceb0d9b18a435742d3f616afd1 + checksum: 10/7b54665e1b51f525fe0f451efdd9fe7a4a6dfba3fd4956c3530bc77336b66ffe3d78c093796ed044119b5d213176af7cf326f317a2057c538d575c6cefcb3562 languageName: node linkType: hard @@ -763,11 +763,11 @@ __metadata: linkType: hard "@emotion/is-prop-valid@npm:^1.1.0, @emotion/is-prop-valid@npm:^1.3.0": - version: 1.3.0 - resolution: "@emotion/is-prop-valid@npm:1.3.0" + version: 1.3.1 + resolution: "@emotion/is-prop-valid@npm:1.3.1" dependencies: "@emotion/memoize": "npm:^0.9.0" - checksum: 10/9b395dd9734fa88e24aa5adeef90ba86564d29c85d07a18cd39fbd06fbe597a5008a335a6147088de9f0533dbb3691786c8e10e6eaab5c7d960634833a054005 + checksum: 10/abbc5c7bf4017415da5b06067fc0b4771d1f22cf94ec37fd54c07b3bd1bcffbda2405ca686e7ee64a9cfc51461262b712f724850e838775347a949f72949ad03 languageName: node linkType: hard @@ -800,13 +800,13 @@ __metadata: linkType: hard "@emotion/react@npm:^11.13.0": - version: 11.13.0 - resolution: "@emotion/react@npm:11.13.0" + version: 11.13.3 + resolution: "@emotion/react@npm:11.13.3" dependencies: "@babel/runtime": "npm:^7.18.3" "@emotion/babel-plugin": "npm:^11.12.0" "@emotion/cache": "npm:^11.13.0" - "@emotion/serialize": "npm:^1.3.0" + "@emotion/serialize": "npm:^1.3.1" "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.1.0" "@emotion/utils": "npm:^1.4.0" "@emotion/weak-memoize": "npm:^0.4.0" @@ -816,7 +816,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10/3dd2b3ffac51f0fa67ef3cb85d4064fd7ddc1212b587e3b328a1eade47024690175518d63c4cbabf28afa07e29187136b26d646e395158f6574fa6321a0b68f9 + checksum: 10/ee70d3afc2e8dd771e6fe176d27dd87a5e21a54e54d871438fd1caa5aa2312d848c6866292fdc65a6ea1c945147c8422bda2d22ed739178af9902dc86d6b298a languageName: node linkType: hard @@ -833,16 +833,16 @@ __metadata: languageName: node linkType: hard -"@emotion/serialize@npm:^1.2.0, @emotion/serialize@npm:^1.3.0": - version: 1.3.0 - resolution: "@emotion/serialize@npm:1.3.0" +"@emotion/serialize@npm:^1.2.0, @emotion/serialize@npm:^1.3.0, @emotion/serialize@npm:^1.3.1": + version: 1.3.2 + resolution: "@emotion/serialize@npm:1.3.2" dependencies: "@emotion/hash": "npm:^0.9.2" "@emotion/memoize": "npm:^0.9.0" - "@emotion/unitless": "npm:^0.9.0" - "@emotion/utils": "npm:^1.4.0" + "@emotion/unitless": "npm:^0.10.0" + "@emotion/utils": "npm:^1.4.1" csstype: "npm:^3.0.2" - checksum: 10/3ab17aa0dabdc77d5d573ef07df63e91e778c0637f4b7f690fde46ab0007496c8dfbf32d2836d3b22ac2ba2d8c58570da51092ba7ff068d4d790147de2352465 + checksum: 10/ead557c1ff19d917ef8169c02738ef36f0851fbfdf0bf69a543045bddea3b7281dc8252ee466cc5fb44ed27d1e61280ff943bb60a2c04158751fb07b3457cc93 languageName: node linkType: hard @@ -929,10 +929,10 @@ __metadata: languageName: node linkType: hard -"@emotion/unitless@npm:^0.9.0": - version: 0.9.0 - resolution: "@emotion/unitless@npm:0.9.0" - checksum: 10/242754aa2f7368b5c2a5dbe61bf0a2bb0bfb4de091fe2388282f8c014c0796d0ca166b1639cf4f5f0e57e59258b622e7946a2e976ed5a56e06a5a306ca25adca +"@emotion/unitless@npm:^0.10.0": + version: 0.10.0 + resolution: "@emotion/unitless@npm:0.10.0" + checksum: 10/6851c16edce01c494305f43b2cad7a26b939a821131b7c354e49b8e3b012c8810024755b0f4a03ef51117750309e55339825a97bd10411fb3687e68904769106 languageName: node linkType: hard @@ -952,10 +952,10 @@ __metadata: languageName: node linkType: hard -"@emotion/utils@npm:^1.4.0": - version: 1.4.0 - resolution: "@emotion/utils@npm:1.4.0" - checksum: 10/e4cdb51819db01fec21c3e35a1391900c9e7f3ac1e7ecb419c8e408464830cd7ef6e1a116381cbfe3fb1039406fb7ed35f16a1575d502c92bc9f81bc13a3ee5a +"@emotion/utils@npm:^1.4.0, @emotion/utils@npm:^1.4.1": + version: 1.4.1 + resolution: "@emotion/utils@npm:1.4.1" + checksum: 10/95e56fc0c9e05cf01a96268f0486ce813f1109a8653d2f575c67df9e8765d9c1b2daf09ad1ada67d933efbb08ca7990228e14b210c713daf90156b4869abe6a7 languageName: node linkType: hard @@ -1314,9 +1314,9 @@ __metadata: linkType: hard "@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.6.1": - version: 4.11.0 - resolution: "@eslint-community/regexpp@npm:4.11.0" - checksum: 10/f053f371c281ba173fe6ee16dbc4fe544c84870d58035ccca08dba7f6ce1830d895ce3237a0db89ba37616524775dca82f1c502066b58e2d5712d7f87f5ba17c + version: 4.11.1 + resolution: "@eslint-community/regexpp@npm:4.11.1" + checksum: 10/934b6d3588c7f16b18d41efec4fdb89616c440b7e3256b8cb92cfd31ae12908600f2b986d6c1e61a84cbc10256b1dd3448cd1eec79904bd67ac365d0f1aba2e2 languageName: node linkType: hard @@ -1337,10 +1337,10 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:8.57.0": - version: 8.57.0 - resolution: "@eslint/js@npm:8.57.0" - checksum: 10/3c501ce8a997cf6cbbaf4ed358af5492875e3550c19b9621413b82caa9ae5382c584b0efa79835639e6e0ddaa568caf3499318e5bdab68643ef4199dce5eb0a0 +"@eslint/js@npm:8.57.1": + version: 8.57.1 + resolution: "@eslint/js@npm:8.57.1" + checksum: 10/7562b21be10c2adbfa4aa5bb2eccec2cb9ac649a3569560742202c8d1cb6c931ce634937a2f0f551e078403a1c1285d6c2c0aa345dafc986149665cd69fe8b59 languageName: node linkType: hard @@ -1868,18 +1868,18 @@ __metadata: languageName: node linkType: hard -"@firebase/analytics-compat@npm:0.2.13": - version: 0.2.13 - resolution: "@firebase/analytics-compat@npm:0.2.13" +"@firebase/analytics-compat@npm:0.2.14": + version: 0.2.14 + resolution: "@firebase/analytics-compat@npm:0.2.14" dependencies: - "@firebase/analytics": "npm:0.10.7" + "@firebase/analytics": "npm:0.10.8" "@firebase/analytics-types": "npm:0.8.2" - "@firebase/component": "npm:0.6.8" - "@firebase/util": "npm:1.9.7" + "@firebase/component": "npm:0.6.9" + "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 10/37af40ac540c68593a118e75c0fc2031459633b46d3fd32f97290fd8c3865fe425cc85feac2243c461924da698e27f4a5c174898e847027b5afd347274080c9c + checksum: 10/0e368159d24223076b488b27308c11e5ef50456aff49fc58e1f66616228021c61e60c3299f63ce52ddc2f7099d803e9048bc28cd952cf5c302917002c03c85ee languageName: node linkType: hard @@ -1890,34 +1890,34 @@ __metadata: languageName: node linkType: hard -"@firebase/analytics@npm:0.10.7": - version: 0.10.7 - resolution: "@firebase/analytics@npm:0.10.7" +"@firebase/analytics@npm:0.10.8": + version: 0.10.8 + resolution: "@firebase/analytics@npm:0.10.8" dependencies: - "@firebase/component": "npm:0.6.8" - "@firebase/installations": "npm:0.6.8" + "@firebase/component": "npm:0.6.9" + "@firebase/installations": "npm:0.6.9" "@firebase/logger": "npm:0.4.2" - "@firebase/util": "npm:1.9.7" + "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app": 0.x - checksum: 10/610c67d4ebbd671ace4d0baf2fa7733e1fa97a2f900cb6337b054528a7c98110d861030b2f3c95553ed81253a9cd152edf2b9dc9388a8bec679050bf46674cfe + checksum: 10/152ddaf68146f02baa7060d34426c25ec13890a53942ffa2db09faa148bef35f59ee9810e6fb8f561fb3d115b71d1fb9fb111d2a0f0199aa510220782557c765 languageName: node linkType: hard -"@firebase/app-check-compat@npm:0.3.14": - version: 0.3.14 - resolution: "@firebase/app-check-compat@npm:0.3.14" +"@firebase/app-check-compat@npm:0.3.15": + version: 0.3.15 + resolution: "@firebase/app-check-compat@npm:0.3.15" dependencies: - "@firebase/app-check": "npm:0.8.7" + "@firebase/app-check": "npm:0.8.8" "@firebase/app-check-types": "npm:0.5.2" - "@firebase/component": "npm:0.6.8" + "@firebase/component": "npm:0.6.9" "@firebase/logger": "npm:0.4.2" - "@firebase/util": "npm:1.9.7" + "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 10/8d4c835fa95474d556b36ec73f571f3e967cbe590cc76f9964eb9d50905becadf195c5e3cd628fc278efb162529a86a0b5433b72d5d232249168865ab8564392 + checksum: 10/ae541d324d5f91dbb7b479855d3380c4fe73e365013b80973a54620405093e6fd2f8e418549155b3a527530472a19b6edf6df1481a708f823eba42e376105b28 languageName: node linkType: hard @@ -1935,30 +1935,30 @@ __metadata: languageName: node linkType: hard -"@firebase/app-check@npm:0.8.7": - version: 0.8.7 - resolution: "@firebase/app-check@npm:0.8.7" +"@firebase/app-check@npm:0.8.8": + version: 0.8.8 + resolution: "@firebase/app-check@npm:0.8.8" dependencies: - "@firebase/component": "npm:0.6.8" + "@firebase/component": "npm:0.6.9" "@firebase/logger": "npm:0.4.2" - "@firebase/util": "npm:1.9.7" + "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app": 0.x - checksum: 10/3f09160bccd99006e33d7bc342dc6c242094be7ffccc6ff0259207006f93f645badb5c1c1743c8a1540d0dab6536a5019eff0ba231b37488ead1209b853287ac + checksum: 10/a3676f2143c8e438d7e8ac11bb163af30880f6ce6acc5cc54cfcc214b8efd5dabce14c040626f8a64a3967db144b99834f1108c2076a0eae8a6baf864b5a3d77 languageName: node linkType: hard -"@firebase/app-compat@npm:0.2.39": - version: 0.2.39 - resolution: "@firebase/app-compat@npm:0.2.39" +"@firebase/app-compat@npm:0.2.41": + version: 0.2.41 + resolution: "@firebase/app-compat@npm:0.2.41" dependencies: - "@firebase/app": "npm:0.10.9" - "@firebase/component": "npm:0.6.8" + "@firebase/app": "npm:0.10.11" + "@firebase/component": "npm:0.6.9" "@firebase/logger": "npm:0.4.2" - "@firebase/util": "npm:1.9.7" + "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" - checksum: 10/266a35f349417d8f5ecc69b4d877b0a41e4ef78ddd927fa8f90eb15ea3d709bed7d504b6be49407e2a1e14ad392933be6aff5eb67c2127ab68a00ddb7c26f806 + checksum: 10/67e4b0572a3c24c4acc13e2c3b55a4fc778d286bae10f1df684a142c9790b4f131519fe84087341884bd67b04b822c3f7092b9748dfa3b52086b6f82ca8a1001 languageName: node linkType: hard @@ -1969,32 +1969,32 @@ __metadata: languageName: node linkType: hard -"@firebase/app@npm:0.10.9": - version: 0.10.9 - resolution: "@firebase/app@npm:0.10.9" +"@firebase/app@npm:0.10.11": + version: 0.10.11 + resolution: "@firebase/app@npm:0.10.11" dependencies: - "@firebase/component": "npm:0.6.8" + "@firebase/component": "npm:0.6.9" "@firebase/logger": "npm:0.4.2" - "@firebase/util": "npm:1.9.7" + "@firebase/util": "npm:1.10.0" idb: "npm:7.1.1" tslib: "npm:^2.1.0" - checksum: 10/faf344390ce2a857171ca347ca6b81b867b6d4acd87232698c4a93678100c82308796cf906cecad287dadcc83b0a645a22678292b3fb3a97c94cc3ee44c88609 + checksum: 10/529d9e59b39e96cd97a8402e1cee508dbbb962aa1805345dc902ecbfe61709bb46ab3b821cd3b50b3d2e3e9f898515eb91cded030492e376550a97518cbcdb70 languageName: node linkType: hard -"@firebase/auth-compat@npm:0.5.12": - version: 0.5.12 - resolution: "@firebase/auth-compat@npm:0.5.12" +"@firebase/auth-compat@npm:0.5.14": + version: 0.5.14 + resolution: "@firebase/auth-compat@npm:0.5.14" dependencies: - "@firebase/auth": "npm:1.7.7" + "@firebase/auth": "npm:1.7.9" "@firebase/auth-types": "npm:0.12.2" - "@firebase/component": "npm:0.6.8" - "@firebase/util": "npm:1.9.7" + "@firebase/component": "npm:0.6.9" + "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" - undici: "npm:5.28.4" + undici: "npm:6.19.7" peerDependencies: "@firebase/app-compat": 0.x - checksum: 10/1eeeec3ce7983dbadd1e95cf75e7665486d68eb60b0bc56642412120bdb05d2a389294343532b3cff2114ab8b782c00620ddecf5c194944bfcaead016075a568 + checksum: 10/85d5259e7b04b14b5d02dc1fb19b015d742c594c14138f33f13146ed9f6caa7ed9d19d65bb99aaca57e70ffd2a491e520d8638eadefbd00f839d37ef972cbbda languageName: node linkType: hard @@ -2015,86 +2015,86 @@ __metadata: languageName: node linkType: hard -"@firebase/auth@npm:1.7.7": - version: 1.7.7 - resolution: "@firebase/auth@npm:1.7.7" +"@firebase/auth@npm:1.7.9": + version: 1.7.9 + resolution: "@firebase/auth@npm:1.7.9" dependencies: - "@firebase/component": "npm:0.6.8" + "@firebase/component": "npm:0.6.9" "@firebase/logger": "npm:0.4.2" - "@firebase/util": "npm:1.9.7" + "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" - undici: "npm:5.28.4" + undici: "npm:6.19.7" peerDependencies: "@firebase/app": 0.x "@react-native-async-storage/async-storage": ^1.18.1 peerDependenciesMeta: "@react-native-async-storage/async-storage": optional: true - checksum: 10/fe329cdb9cd827cf0c3dd6cba6090496b79bcc09b0e53e685026dc9a1c723310387d4e3655d300ed4789608c7d0fcacbb666c19c4c2be7f416dcc47fb91df0cd + checksum: 10/010013ec339c9ef7b4d9278c6cacfd8e2eb3282f27a3e4e89c42a5968955976a26277421f34fda3e9400409a22a61f632bcc03e713b3f39d71e4777bc003165d languageName: node linkType: hard -"@firebase/component@npm:0.6.8": - version: 0.6.8 - resolution: "@firebase/component@npm:0.6.8" +"@firebase/component@npm:0.6.9": + version: 0.6.9 + resolution: "@firebase/component@npm:0.6.9" dependencies: - "@firebase/util": "npm:1.9.7" + "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" - checksum: 10/0df2a61a9d3a32981a82889b4f23923c9adc468e89cadec5984b52d2422bb2b184c1219ed78dc7ec0b7f973ac0b7c2e8f486dee4a32a6741c0627648960e4314 + checksum: 10/76c865d640e4b24a0e50876ecdc0e1199df38af562131a937b5a4bac924d61b6933339afb7906881dca509f38f3b0c511cd6b5008e061424c61b20876de9531e languageName: node linkType: hard -"@firebase/database-compat@npm:1.0.7": - version: 1.0.7 - resolution: "@firebase/database-compat@npm:1.0.7" +"@firebase/database-compat@npm:1.0.8": + version: 1.0.8 + resolution: "@firebase/database-compat@npm:1.0.8" dependencies: - "@firebase/component": "npm:0.6.8" - "@firebase/database": "npm:1.0.7" - "@firebase/database-types": "npm:1.0.4" + "@firebase/component": "npm:0.6.9" + "@firebase/database": "npm:1.0.8" + "@firebase/database-types": "npm:1.0.5" "@firebase/logger": "npm:0.4.2" - "@firebase/util": "npm:1.9.7" + "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" - checksum: 10/87d6185b65d58784e0c645a8be232f034d7e3bdfbe030b7d88b5597f7d18dc9329a6c6b0eab84f887ab87ef34caf171afc5b97bbd917fa8682015286cb9fcad4 + checksum: 10/28389efcc87da77b822cb27c31707824fe98e7b0a3bf9cbf2b0c0fccd9edd72e2681a9467b76b120281464dbfc814852ebca63d99a385a9cb68fb55c7b334105 languageName: node linkType: hard -"@firebase/database-types@npm:1.0.4": - version: 1.0.4 - resolution: "@firebase/database-types@npm:1.0.4" +"@firebase/database-types@npm:1.0.5": + version: 1.0.5 + resolution: "@firebase/database-types@npm:1.0.5" dependencies: "@firebase/app-types": "npm:0.9.2" - "@firebase/util": "npm:1.9.7" - checksum: 10/d76125998d322d1fa31a6bf028e21ba03eafb26d7ae3b408ea8f84f52caf1dea716a236a21c64deb857c5eb091ea53cf148b9a2b99f4e97efc5b7c8cabae9acd + "@firebase/util": "npm:1.10.0" + checksum: 10/bdf667da0369dce8623987fc01cad8db09cfe1895130f69ab581d34a0ee043ca6113c32457629147ae1441a934d985ede9d7cbe104ac346de6d0c21629903a8b languageName: node linkType: hard -"@firebase/database@npm:1.0.7": - version: 1.0.7 - resolution: "@firebase/database@npm:1.0.7" +"@firebase/database@npm:1.0.8": + version: 1.0.8 + resolution: "@firebase/database@npm:1.0.8" dependencies: "@firebase/app-check-interop-types": "npm:0.3.2" "@firebase/auth-interop-types": "npm:0.2.3" - "@firebase/component": "npm:0.6.8" + "@firebase/component": "npm:0.6.9" "@firebase/logger": "npm:0.4.2" - "@firebase/util": "npm:1.9.7" + "@firebase/util": "npm:1.10.0" faye-websocket: "npm:0.11.4" tslib: "npm:^2.1.0" - checksum: 10/d299c07ac647efb09b644ff91c2aa1d49622c16adc40f75506563aeb8de73f79b17949a13db8089337497e570cebf0df69e8404e934d44a49bb703d05375c245 + checksum: 10/adb199a6ad7866b418e8b319cc505e108bfc8200b5406f21857706df0849d4e5982a1b0e44e07001821edebef73c4dfffc7f96fb77a2cff10bb9ac26f17d40c3 languageName: node linkType: hard -"@firebase/firestore-compat@npm:0.3.35": - version: 0.3.35 - resolution: "@firebase/firestore-compat@npm:0.3.35" +"@firebase/firestore-compat@npm:0.3.37": + version: 0.3.37 + resolution: "@firebase/firestore-compat@npm:0.3.37" dependencies: - "@firebase/component": "npm:0.6.8" - "@firebase/firestore": "npm:4.7.0" + "@firebase/component": "npm:0.6.9" + "@firebase/firestore": "npm:4.7.2" "@firebase/firestore-types": "npm:3.0.2" - "@firebase/util": "npm:1.9.7" + "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 10/e3d4cb5cbf555e840eef862cace318d5dc829546c2c7e29d8cabd5ff5d0eb7c756405c4985490c0e1cd524b3dd1ed4e19d4d4a06230e5b6126adac0571010d99 + checksum: 10/c152ba401f0d786699b25e1101d77351b7a6503f1a1f774efa7fecacc66aec58aca58a7b54e3f8587fcb45ffa3772d5e123ae79ddd90d0a87f2042ac34880d8a languageName: node linkType: hard @@ -2108,36 +2108,36 @@ __metadata: languageName: node linkType: hard -"@firebase/firestore@npm:4.7.0": - version: 4.7.0 - resolution: "@firebase/firestore@npm:4.7.0" +"@firebase/firestore@npm:4.7.2": + version: 4.7.2 + resolution: "@firebase/firestore@npm:4.7.2" dependencies: - "@firebase/component": "npm:0.6.8" + "@firebase/component": "npm:0.6.9" "@firebase/logger": "npm:0.4.2" - "@firebase/util": "npm:1.9.7" + "@firebase/util": "npm:1.10.0" "@firebase/webchannel-wrapper": "npm:1.0.1" "@grpc/grpc-js": "npm:~1.9.0" "@grpc/proto-loader": "npm:^0.7.8" tslib: "npm:^2.1.0" - undici: "npm:5.28.4" + undici: "npm:6.19.7" peerDependencies: "@firebase/app": 0.x - checksum: 10/b3cb3a62bd3cc5b7ade8689d396d0b0a49821d8709caf787078bbc9306e5d4ddbcb20afbda5138b09934e5fc30ce3561e53419776e7ca454a5025fd195343b12 + checksum: 10/066a125760bc2163bbc9c6fcde8b3f67da97791f8ce6f5ffa8ff3c40567aff97b2fe02020c3403857f104f051e4d6452aee60fe75ed5e408e467c611c397b4bb languageName: node linkType: hard -"@firebase/functions-compat@npm:0.3.12": - version: 0.3.12 - resolution: "@firebase/functions-compat@npm:0.3.12" +"@firebase/functions-compat@npm:0.3.14": + version: 0.3.14 + resolution: "@firebase/functions-compat@npm:0.3.14" dependencies: - "@firebase/component": "npm:0.6.8" - "@firebase/functions": "npm:0.11.6" + "@firebase/component": "npm:0.6.9" + "@firebase/functions": "npm:0.11.8" "@firebase/functions-types": "npm:0.6.2" - "@firebase/util": "npm:1.9.7" + "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 10/d9803c909e848dc381c892d36885a9519b5b025a46afb2c096bf099e840c5c0afc2290b5660a9d763cf6a8bf0ad6f303f85d3011abfc02d75348452bfe3200c8 + checksum: 10/a8d6cbcdc646d78adecfcdc1f8fa14a5d9af2394dd69cac00c6826106b923e01d246c67fb7e09025ca7cfb876f8d5df97240cc056c64ccee8899ca5f17178a6c languageName: node linkType: hard @@ -2148,35 +2148,35 @@ __metadata: languageName: node linkType: hard -"@firebase/functions@npm:0.11.6": - version: 0.11.6 - resolution: "@firebase/functions@npm:0.11.6" +"@firebase/functions@npm:0.11.8": + version: 0.11.8 + resolution: "@firebase/functions@npm:0.11.8" dependencies: "@firebase/app-check-interop-types": "npm:0.3.2" "@firebase/auth-interop-types": "npm:0.2.3" - "@firebase/component": "npm:0.6.8" + "@firebase/component": "npm:0.6.9" "@firebase/messaging-interop-types": "npm:0.2.2" - "@firebase/util": "npm:1.9.7" + "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" - undici: "npm:5.28.4" + undici: "npm:6.19.7" peerDependencies: "@firebase/app": 0.x - checksum: 10/c1ac2887dd986c8abc408db1da26531f5f9d252f2cd4ee36352239ed0a0fc11902dd1f85db9ec21818028fd737c5a09461c01c0701c85f9ea96b9dc8dfc69f03 + checksum: 10/44f3e42df189f3f3cb3c366b38e93a0ffdfaa1a7b3f6dba624bcd9a7cda3d3271df66f2769b7cbe7e1e5ff01bf6ab3bef6c1e1e15c6646e34514d1e2ebb60555 languageName: node linkType: hard -"@firebase/installations-compat@npm:0.2.8": - version: 0.2.8 - resolution: "@firebase/installations-compat@npm:0.2.8" +"@firebase/installations-compat@npm:0.2.9": + version: 0.2.9 + resolution: "@firebase/installations-compat@npm:0.2.9" dependencies: - "@firebase/component": "npm:0.6.8" - "@firebase/installations": "npm:0.6.8" + "@firebase/component": "npm:0.6.9" + "@firebase/installations": "npm:0.6.9" "@firebase/installations-types": "npm:0.5.2" - "@firebase/util": "npm:1.9.7" + "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 10/b0eece054763ac6d229b2fca7ead9cbdd10e6c8429be9f03d95e8ed4a488fcf1cbc3a136f49800b07f2b82fb0f5ff1fecb41bee923aa045314ed854bada256d8 + checksum: 10/919e1a4f4b63f5fe757a3c9cefb4a36cbab92deb4a6e15f249c94d6e80d1c6d37e5e384a460af8c17fc88e3091594bf43d036c88b704516c279b5ab8401977e1 languageName: node linkType: hard @@ -2189,17 +2189,17 @@ __metadata: languageName: node linkType: hard -"@firebase/installations@npm:0.6.8": - version: 0.6.8 - resolution: "@firebase/installations@npm:0.6.8" +"@firebase/installations@npm:0.6.9": + version: 0.6.9 + resolution: "@firebase/installations@npm:0.6.9" dependencies: - "@firebase/component": "npm:0.6.8" - "@firebase/util": "npm:1.9.7" + "@firebase/component": "npm:0.6.9" + "@firebase/util": "npm:1.10.0" idb: "npm:7.1.1" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app": 0.x - checksum: 10/84cdf30d393fad859f035b276c0ef372cd94907fe042498cdd7c24a719d786866a2f976834b90a49c543e37ae317edd669676830ba7cd83f3a3d34b6f2c0f1ee + checksum: 10/349c8b7e877b002fb29f274f4d239fbca4c2c266ccb66ecfb5f1762f973a7fe1be99cc3346184d1230e6e35feb2b6f9e8b7169479fa0018b53e4a83837848619 languageName: node linkType: hard @@ -2212,17 +2212,17 @@ __metadata: languageName: node linkType: hard -"@firebase/messaging-compat@npm:0.2.10": - version: 0.2.10 - resolution: "@firebase/messaging-compat@npm:0.2.10" +"@firebase/messaging-compat@npm:0.2.11": + version: 0.2.11 + resolution: "@firebase/messaging-compat@npm:0.2.11" dependencies: - "@firebase/component": "npm:0.6.8" - "@firebase/messaging": "npm:0.12.10" - "@firebase/util": "npm:1.9.7" + "@firebase/component": "npm:0.6.9" + "@firebase/messaging": "npm:0.12.11" + "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 10/3565546cc935f553c0331dc86e593cd39e09c198c549e801dfb9d4ee53152fcc3bab277355bf1a82a063506b8462038dbd3d2122178b9c1edd39c08a0503244d + checksum: 10/8ace6d65adcf891b272875b7b3f43978a15644b23f7ee796346f02eb50007c20c99719f4991772911005697613bf122167ca150d8245d0fccb2b959472b4a625 languageName: node linkType: hard @@ -2233,35 +2233,35 @@ __metadata: languageName: node linkType: hard -"@firebase/messaging@npm:0.12.10": - version: 0.12.10 - resolution: "@firebase/messaging@npm:0.12.10" +"@firebase/messaging@npm:0.12.11": + version: 0.12.11 + resolution: "@firebase/messaging@npm:0.12.11" dependencies: - "@firebase/component": "npm:0.6.8" - "@firebase/installations": "npm:0.6.8" + "@firebase/component": "npm:0.6.9" + "@firebase/installations": "npm:0.6.9" "@firebase/messaging-interop-types": "npm:0.2.2" - "@firebase/util": "npm:1.9.7" + "@firebase/util": "npm:1.10.0" idb: "npm:7.1.1" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app": 0.x - checksum: 10/c883b465da2cdee0e08f37119bcb4eb1152bec482fe87136f4dbc6fc9ffbbba1f7c25fff70948844633949ab77bc38d81afd31e7227bf398863cccb878be3095 + checksum: 10/1de21d56c74996e99151a902e0f1ff0825d47ebff044104483a838ff5cb4883433b2f541616b033255e4fd2780b29f71982d8832edf4987c101df97ed508828a languageName: node linkType: hard -"@firebase/performance-compat@npm:0.2.8": - version: 0.2.8 - resolution: "@firebase/performance-compat@npm:0.2.8" +"@firebase/performance-compat@npm:0.2.9": + version: 0.2.9 + resolution: "@firebase/performance-compat@npm:0.2.9" dependencies: - "@firebase/component": "npm:0.6.8" + "@firebase/component": "npm:0.6.9" "@firebase/logger": "npm:0.4.2" - "@firebase/performance": "npm:0.6.8" + "@firebase/performance": "npm:0.6.9" "@firebase/performance-types": "npm:0.2.2" - "@firebase/util": "npm:1.9.7" + "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 10/354a31f31c0d07df10a2b33f4ef2b34ba931cb51738c533c5af9e85c1645d9421f2262ec72eb54a3821f1df52644254f92b866d836c528d6a8ff91b399a2aad4 + checksum: 10/bc4e8b0208c9bc603518e1388713ec80658ee109c6af80d429479447ccb85e8e831269383233c379ed66bf37469d13f5c234074d0c0c9e7e69e909be5fdeca4f languageName: node linkType: hard @@ -2272,34 +2272,34 @@ __metadata: languageName: node linkType: hard -"@firebase/performance@npm:0.6.8": - version: 0.6.8 - resolution: "@firebase/performance@npm:0.6.8" +"@firebase/performance@npm:0.6.9": + version: 0.6.9 + resolution: "@firebase/performance@npm:0.6.9" dependencies: - "@firebase/component": "npm:0.6.8" - "@firebase/installations": "npm:0.6.8" + "@firebase/component": "npm:0.6.9" + "@firebase/installations": "npm:0.6.9" "@firebase/logger": "npm:0.4.2" - "@firebase/util": "npm:1.9.7" + "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app": 0.x - checksum: 10/5c989d154daea84f009f221245231bf5050cf0d96688bf1b20add98429088c815cc6e76e91180394c9d7fe5759094bbe4261c13604ff349c67e3d7113959b146 + checksum: 10/d682d0b1e342ed3eda1a5ddab39c8ddac33afc9edb2c7335a2f9a28eb8c268b975bbf450a3bad5443138edebaf2aa731dca0b774bcf3211a6dc215b35d86d849 languageName: node linkType: hard -"@firebase/remote-config-compat@npm:0.2.8": - version: 0.2.8 - resolution: "@firebase/remote-config-compat@npm:0.2.8" +"@firebase/remote-config-compat@npm:0.2.9": + version: 0.2.9 + resolution: "@firebase/remote-config-compat@npm:0.2.9" dependencies: - "@firebase/component": "npm:0.6.8" + "@firebase/component": "npm:0.6.9" "@firebase/logger": "npm:0.4.2" - "@firebase/remote-config": "npm:0.4.8" + "@firebase/remote-config": "npm:0.4.9" "@firebase/remote-config-types": "npm:0.3.2" - "@firebase/util": "npm:1.9.7" + "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 10/342b27720635c7f68ce8953cd22a5badfc628c3fb9414b32d40a2eaacb2feb2068079eac15c3c811f4327a06d01aa71631a6f2cfe8b80460f1910cfd37126342 + checksum: 10/a6db7509512d8d22b7ddf1127c741715e379e04e5b3246372bb0302d7c84afb421a94550adebecddcce5def115d61729a9580940dce6e65f8d77f9af30f69fe1 languageName: node linkType: hard @@ -2310,33 +2310,33 @@ __metadata: languageName: node linkType: hard -"@firebase/remote-config@npm:0.4.8": - version: 0.4.8 - resolution: "@firebase/remote-config@npm:0.4.8" +"@firebase/remote-config@npm:0.4.9": + version: 0.4.9 + resolution: "@firebase/remote-config@npm:0.4.9" dependencies: - "@firebase/component": "npm:0.6.8" - "@firebase/installations": "npm:0.6.8" + "@firebase/component": "npm:0.6.9" + "@firebase/installations": "npm:0.6.9" "@firebase/logger": "npm:0.4.2" - "@firebase/util": "npm:1.9.7" + "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app": 0.x - checksum: 10/58f934b8cdc8582f260a8caf5b903d484d74aecba420221bf57e5df28f8ba7d3f9ca1ab58946c90ab2c29659bbfdad679fc59247468068063a5329d92cd27613 + checksum: 10/f14189f38c8cf75db16bf8b85dd004486b1dd8242f62d697c716fa85cd32928aed549ccea8c632a528870a424fc7f04f1132a14b3b099276cd7696c78e644b28 languageName: node linkType: hard -"@firebase/storage-compat@npm:0.3.10": - version: 0.3.10 - resolution: "@firebase/storage-compat@npm:0.3.10" +"@firebase/storage-compat@npm:0.3.12": + version: 0.3.12 + resolution: "@firebase/storage-compat@npm:0.3.12" dependencies: - "@firebase/component": "npm:0.6.8" - "@firebase/storage": "npm:0.13.0" + "@firebase/component": "npm:0.6.9" + "@firebase/storage": "npm:0.13.2" "@firebase/storage-types": "npm:0.8.2" - "@firebase/util": "npm:1.9.7" + "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 10/63486c25c9b241ad5a55d9ab0a448ee9fc6a53b39733709ea56bce26e32cbdd1e8d4a22601a233ee18734ba1111a7ee52ca0196c281d0f4a88061a555306efb1 + checksum: 10/4eea49a57f1d7537da697e5ff8b4e035ff1af69e416e7eab14485753c39c25eaa5a71bd2bafba0985ac6a7ce803f98f2f2f83c613c78c8f74bce286e3259b8ec languageName: node linkType: hard @@ -2350,42 +2350,42 @@ __metadata: languageName: node linkType: hard -"@firebase/storage@npm:0.13.0": - version: 0.13.0 - resolution: "@firebase/storage@npm:0.13.0" +"@firebase/storage@npm:0.13.2": + version: 0.13.2 + resolution: "@firebase/storage@npm:0.13.2" dependencies: - "@firebase/component": "npm:0.6.8" - "@firebase/util": "npm:1.9.7" + "@firebase/component": "npm:0.6.9" + "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" - undici: "npm:5.28.4" + undici: "npm:6.19.7" peerDependencies: "@firebase/app": 0.x - checksum: 10/b33708f14ccb4aa7755a1e4dea3ce483aec0bd077bb9db8df4238f4c96f80e39ef687940ece39c3fa7dcceb0f6e5f3a22874f19dc8d05246226d4c1637508158 + checksum: 10/d887f80cf95ef5daa80ffb2e6d564d25abb8a3e84099bee9730c95082597a12028bbf73bfe66fca2df3cdf04eaadea8e9d74ec0a826f946bc8f002293a9983ea languageName: node linkType: hard -"@firebase/util@npm:1.9.7": - version: 1.9.7 - resolution: "@firebase/util@npm:1.9.7" +"@firebase/util@npm:1.10.0": + version: 1.10.0 + resolution: "@firebase/util@npm:1.10.0" dependencies: tslib: "npm:^2.1.0" - checksum: 10/c31290f45794af68a3ab571db1c0e3cb4d15443adfdc50107b835274b4ad525f839ee79a0da2898dd8b31e64ff811c126d338b0bab117be59c0a065ce984a89a + checksum: 10/eb161f1c6294ff097f3c40236820e9e6e29cd6582e5e1254148157143272493580535ee2cb9e7c6055d3909b3ef39d8b64086895b071c665827acb66742b63eb languageName: node linkType: hard -"@firebase/vertexai-preview@npm:0.0.3": - version: 0.0.3 - resolution: "@firebase/vertexai-preview@npm:0.0.3" +"@firebase/vertexai-preview@npm:0.0.4": + version: 0.0.4 + resolution: "@firebase/vertexai-preview@npm:0.0.4" dependencies: "@firebase/app-check-interop-types": "npm:0.3.2" - "@firebase/component": "npm:0.6.8" + "@firebase/component": "npm:0.6.9" "@firebase/logger": "npm:0.4.2" - "@firebase/util": "npm:1.9.7" + "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app": 0.x "@firebase/app-types": 0.x - checksum: 10/490ea78f153b764e117989cb0ee9abeb0f456c6daefc58aa949147b1404a2d90d49c84a04556f8d84a729692ca99ed670b9dd9b37169b93ac01dc8d9242dac13 + checksum: 10/8ec48d81f48aebdcc63b65d802c67bf36880f256e5c2f5f3b152dc91c8c0e924053fba2fac5218716612f8ee720b25d0822337a214f16f5b7e51ce0247dfc4e5 languageName: node linkType: hard @@ -2397,11 +2397,11 @@ __metadata: linkType: hard "@floating-ui/core@npm:^1.5.3, @floating-ui/core@npm:^1.6.0": - version: 1.6.7 - resolution: "@floating-ui/core@npm:1.6.7" + version: 1.6.8 + resolution: "@floating-ui/core@npm:1.6.8" dependencies: - "@floating-ui/utils": "npm:^0.2.7" - checksum: 10/e15fbb49830bef39c4ce2b2d00febc0140939c1f86f0441e38e43cbe83456fd05be674812bf747bce425318d8730e3c51c291104115f8637ce7bce2f00446743 + "@floating-ui/utils": "npm:^0.2.8" + checksum: 10/87d52989c3d2cc80373bc153b7a40814db3206ce7d0b2a2bdfb63e2ff39ffb8b999b1b0ccf28e548000ebf863bf16e2bed45eab4c4d287a5dbe974ef22368d82 languageName: node linkType: hard @@ -2416,31 +2416,31 @@ __metadata: linkType: hard "@floating-ui/dom@npm:^1.0.0": - version: 1.6.10 - resolution: "@floating-ui/dom@npm:1.6.10" + version: 1.6.11 + resolution: "@floating-ui/dom@npm:1.6.11" dependencies: "@floating-ui/core": "npm:^1.6.0" - "@floating-ui/utils": "npm:^0.2.7" - checksum: 10/c100f5ecb37fc1bea4e551977eae3992f8eba351e6b7f2642e2f84a4abd269406d5a46a14505bc583caf25ddee900a667829244c4eecf1cf60f08c1dabdf3ee9 + "@floating-ui/utils": "npm:^0.2.8" + checksum: 10/8579392ad10151474869e7640af169b0d7fc2df48d4da27b6dcb1a57202329147ed986b2972787d4b8cd550c87897271b2d9c4633c2ec7d0b3ad37ce1da636f1 languageName: node linkType: hard "@floating-ui/react-dom@npm:^2.0.0": - version: 2.1.1 - resolution: "@floating-ui/react-dom@npm:2.1.1" + version: 2.1.2 + resolution: "@floating-ui/react-dom@npm:2.1.2" dependencies: "@floating-ui/dom": "npm:^1.0.0" peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: 10/cafabfb5dd0b25547863520b3bcf6faee7f087d0c3187a8779910a6838d496bf494f237bf1fe883bbfae1a7fcc399611ae52377b696065d8118bd7c1b9c0d253 + checksum: 10/2a67dc8499674e42ff32c7246bded185bb0fdd492150067caf9568569557ac4756a67787421d8604b0f241e5337de10762aee270d9aeef106d078a0ff13596c4 languageName: node linkType: hard -"@floating-ui/utils@npm:^0.2.0, @floating-ui/utils@npm:^0.2.7": - version: 0.2.7 - resolution: "@floating-ui/utils@npm:0.2.7" - checksum: 10/56b1bb3f73f6ec9aabf9b1fd3dc584e0f2384d319c1a6119050eab102ae6ca8b9b0eed711c2f235ffe035188cbe9727bf36e8dcb54c8bd32176737e4be47efa8 +"@floating-ui/utils@npm:^0.2.0, @floating-ui/utils@npm:^0.2.8": + version: 0.2.8 + resolution: "@floating-ui/utils@npm:0.2.8" + checksum: 10/3e3ea3b2de06badc4baebdf358b3dbd77ccd9474a257a6ef237277895943db2acbae756477ec64de65a2a1436d94aea3107129a1feeef6370675bf2b161c1abc languageName: node linkType: hard @@ -2452,9 +2452,9 @@ __metadata: linkType: hard "@fontsource/ibm-plex-mono@npm:^5.0.12": - version: 5.0.14 - resolution: "@fontsource/ibm-plex-mono@npm:5.0.14" - checksum: 10/2a61af493995f50456ffe2a7da000ddce0b601d84001319d257ec6c8f0c815eebce236a5021a0e41c04657f0247e5de7afc4c925610644c439c1c66b4d80e209 + version: 5.1.0 + resolution: "@fontsource/ibm-plex-mono@npm:5.1.0" + checksum: 10/19ba57fa760546f3d4d2523176fdc8e0ed23de028ec2e159e5b7c744db777ffd0759bd2b423749466363d844e24655438d079f62d11b96052d45d027c32402ab languageName: node linkType: hard @@ -2568,14 +2568,14 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.11.14": - version: 0.11.14 - resolution: "@humanwhocodes/config-array@npm:0.11.14" +"@humanwhocodes/config-array@npm:^0.13.0": + version: 0.13.0 + resolution: "@humanwhocodes/config-array@npm:0.13.0" dependencies: - "@humanwhocodes/object-schema": "npm:^2.0.2" + "@humanwhocodes/object-schema": "npm:^2.0.3" debug: "npm:^4.3.1" minimatch: "npm:^3.0.5" - checksum: 10/3ffb24ecdfab64014a230e127118d50a1a04d11080cbb748bc21629393d100850496456bbcb4e8c438957fe0934430d731042f1264d6a167b62d32fc2863580a + checksum: 10/524df31e61a85392a2433bf5d03164e03da26c03d009f27852e7dcfdafbc4a23f17f021dacf88e0a7a9fe04ca032017945d19b57a16e2676d9114c22a53a9d11 languageName: node linkType: hard @@ -2586,7 +2586,7 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^2.0.2": +"@humanwhocodes/object-schema@npm:^2.0.3": version: 2.0.3 resolution: "@humanwhocodes/object-schema@npm:2.0.3" checksum: 10/05bb99ed06c16408a45a833f03a732f59bf6184795d4efadd33238ff8699190a8c871ad1121241bb6501589a9598dc83bf25b99dcbcf41e155cdf36e35e937a3 @@ -2900,20 +2900,6 @@ __metadata: languageName: node linkType: hard -"@libp2p/interface@npm:^1.0.0": - version: 1.7.0 - resolution: "@libp2p/interface@npm:1.7.0" - dependencies: - "@multiformats/multiaddr": "npm:^12.2.3" - it-pushable: "npm:^3.2.3" - it-stream-types: "npm:^2.0.1" - multiformats: "npm:^13.1.0" - progress-events: "npm:^1.0.0" - uint8arraylist: "npm:^2.4.8" - checksum: 10/b0a57dde2f7517775f9cc5f8936873125ca56ae3ad55083a6abfd6c55ed6257bbc5c55595bfb3ec458d1e2a3dd7ac14edc1144089d3256916dc312607d938a02 - languageName: node - linkType: hard - "@libp2p/interfaces@npm:^2.0.0": version: 2.0.4 resolution: "@libp2p/interfaces@npm:2.0.4" @@ -3001,9 +2987,9 @@ __metadata: linkType: hard "@livekit/components-styles@npm:^1.0.6": - version: 1.0.12 - resolution: "@livekit/components-styles@npm:1.0.12" - checksum: 10/19772ef5867b4d31d0ae109617577160642f02e266345a8296fe9b29826880fc5518eb421da3279e2352759a3cc95bb9edf31784d2a7666af64bd6d5f5ed86d9 + version: 1.1.3 + resolution: "@livekit/components-styles@npm:1.1.3" + checksum: 10/dd1abddc470c26e41d13a49e0ca0a6c7557d622697a7d7954aea716c251209a5d0620d959eb93776ff41c1bc43b9afe4e473fc59179e42224a24129fdddbd548 languageName: node linkType: hard @@ -3445,14 +3431,14 @@ __metadata: linkType: hard "@mui/types@npm:^7.2.15": - version: 7.2.15 - resolution: "@mui/types@npm:7.2.15" + version: 7.2.17 + resolution: "@mui/types@npm:7.2.17" peerDependencies: - "@types/react": ^17.0.0 || ^18.0.0 + "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: "@types/react": optional: true - checksum: 10/235b4af48a76cbe121e4cf7c4c71c7f9e4eaa458eaff5df2ac8a8f2d4ae93eafa929aba7848a2dfbb3c97dd8d50f4e13828dc17ec136b777bcfdd7d654263996 + checksum: 10/de21ecd69e4fe22738f1437d7084747c07a1e88f6fbdea5a2927594c587aaf8cac7bd67118b8749a8c7a6f45875b937d4a20b43f531773cdfd870445a4237893 languageName: node linkType: hard @@ -3521,18 +3507,17 @@ __metadata: languageName: node linkType: hard -"@multiformats/multiaddr@npm:^12.0.0, @multiformats/multiaddr@npm:^12.2.3": - version: 12.3.0 - resolution: "@multiformats/multiaddr@npm:12.3.0" +"@multiformats/multiaddr@npm:^12.0.0": + version: 12.3.1 + resolution: "@multiformats/multiaddr@npm:12.3.1" dependencies: "@chainsafe/is-ip": "npm:^2.0.1" "@chainsafe/netmask": "npm:^2.0.0" - "@libp2p/interface": "npm:^1.0.0" "@multiformats/dns": "npm:^1.0.3" multiformats: "npm:^13.0.0" uint8-varint: "npm:^2.0.1" uint8arrays: "npm:^5.0.0" - checksum: 10/f2deaa762e93b3fa200c825447448b2e249af4d2bf3067e7c7377fa0e4cd9d75cf6d67fbe69cfa044d8a4a3999449bab27adbbbc9721cea96332f53a82549dec + checksum: 10/59d5a6f7857d4f85a466d2ecfddfdfa00a526abd59bbf393bc05ae9cf4105d4a65ffe985aa9df88ac2377abe080c2296cf8a5c2eb2465dff942381a49434996c languageName: node linkType: hard @@ -3561,13 +3546,20 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:1.4.0, @noble/hashes@npm:^1.4.0, @noble/hashes@npm:~1.4.0": +"@noble/hashes@npm:1.4.0, @noble/hashes@npm:~1.4.0": version: 1.4.0 resolution: "@noble/hashes@npm:1.4.0" checksum: 10/e156e65794c473794c52fa9d06baf1eb20903d0d96719530f523cc4450f6c721a957c544796e6efd0197b2296e7cd70efeb312f861465e17940a3e3c7e0febc6 languageName: node linkType: hard +"@noble/hashes@npm:^1.4.0": + version: 1.5.0 + resolution: "@noble/hashes@npm:1.5.0" + checksum: 10/da7fc7af52af7afcf59810a7eea6155075464ff462ffda2572dc6d57d53e2669b1ea2ec774e814f6273f1697e567f28d36823776c9bf7068cba2a2855140f26e + languageName: node + linkType: hard + "@noble/hashes@npm:~1.3.0, @noble/hashes@npm:~1.3.2": version: 1.3.3 resolution: "@noble/hashes@npm:1.3.3" @@ -3645,6 +3637,13 @@ __metadata: languageName: node linkType: hard +"@openzeppelin/contracts@npm:5.0.2": + version: 5.0.2 + resolution: "@openzeppelin/contracts@npm:5.0.2" + checksum: 10/938ebffbdade7dc59ea3df5b562c0e457bbefde9d82be8fa2acfd11da887df11653ac07922f41746b80cdbc106430e1e6978ce244fe99b00a7d9dc1418fc7670 + languageName: node + linkType: hard + "@parcel/watcher-android-arm64@npm:2.4.1": version: 2.4.1 resolution: "@parcel/watcher-android-arm64@npm:2.4.1" @@ -5361,10 +5360,10 @@ __metadata: languageName: node linkType: hard -"@remix-run/router@npm:1.19.1": - version: 1.19.1 - resolution: "@remix-run/router@npm:1.19.1" - checksum: 10/2800c2f6567a982fe942aacc4cb5b170e7cc89bd455960e3bea2424161ff7dac32d01886322d88dd19b88d1bea711f39566d17f02b73eeb74999affb471f8f52 +"@remix-run/router@npm:1.19.2": + version: 1.19.2 + resolution: "@remix-run/router@npm:1.19.2" + checksum: 10/31b62b66ea68bd62018189047de7b262700113438f62407df019f81a9856a08a705b2b77454be9293518e2f5f3bbf3f8b858ac19f48cb7d89f8ab56b7b630c19 languageName: node linkType: hard @@ -5397,8 +5396,8 @@ __metadata: linkType: hard "@rollup/pluginutils@npm:^5.0.1, @rollup/pluginutils@npm:^5.0.5": - version: 5.1.0 - resolution: "@rollup/pluginutils@npm:5.1.0" + version: 5.1.2 + resolution: "@rollup/pluginutils@npm:5.1.2" dependencies: "@types/estree": "npm:^1.0.0" estree-walker: "npm:^2.0.2" @@ -5408,126 +5407,126 @@ __metadata: peerDependenciesMeta: rollup: optional: true - checksum: 10/abb15eaec5b36f159ec351b48578401bedcefdfa371d24a914cfdbb1e27d0ebfbf895299ec18ccc343d247e71f2502cba21202bc1362d7ef27d5ded699e5c2b2 + checksum: 10/cc1fe3285ab48915a6535ab2f0c90dc511bd3e63143f8e9994bb036c6c5071fd14d641cff6c89a7fde6a4faa85227d4e2cf46ee36b7d962099e0b9e4c9b8a4b0 languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.21.0" +"@rollup/rollup-android-arm-eabi@npm:4.22.5": + version: 4.22.5 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.22.5" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-android-arm64@npm:4.21.0" +"@rollup/rollup-android-arm64@npm:4.22.5": + version: 4.22.5 + resolution: "@rollup/rollup-android-arm64@npm:4.22.5" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-darwin-arm64@npm:4.21.0" +"@rollup/rollup-darwin-arm64@npm:4.22.5": + version: 4.22.5 + resolution: "@rollup/rollup-darwin-arm64@npm:4.22.5" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-darwin-x64@npm:4.21.0" +"@rollup/rollup-darwin-x64@npm:4.22.5": + version: 4.22.5 + resolution: "@rollup/rollup-darwin-x64@npm:4.22.5" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.21.0" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.22.5": + version: 4.22.5 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.22.5" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.21.0" +"@rollup/rollup-linux-arm-musleabihf@npm:4.22.5": + version: 4.22.5 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.22.5" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.21.0" +"@rollup/rollup-linux-arm64-gnu@npm:4.22.5": + version: 4.22.5 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.22.5" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.21.0" +"@rollup/rollup-linux-arm64-musl@npm:4.22.5": + version: 4.22.5 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.22.5" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.21.0" +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.22.5": + version: 4.22.5 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.22.5" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.21.0" +"@rollup/rollup-linux-riscv64-gnu@npm:4.22.5": + version: 4.22.5 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.22.5" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.21.0" +"@rollup/rollup-linux-s390x-gnu@npm:4.22.5": + version: 4.22.5 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.22.5" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.21.0" +"@rollup/rollup-linux-x64-gnu@npm:4.22.5": + version: 4.22.5 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.22.5" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.21.0" +"@rollup/rollup-linux-x64-musl@npm:4.22.5": + version: 4.22.5 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.22.5" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.21.0" +"@rollup/rollup-win32-arm64-msvc@npm:4.22.5": + version: 4.22.5 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.22.5" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.21.0" +"@rollup/rollup-win32-ia32-msvc@npm:4.22.5": + version: 4.22.5 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.22.5" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.21.0" +"@rollup/rollup-win32-x64-msvc@npm:4.22.5": + version: 4.22.5 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.22.5" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@scure/base@npm:~1.1.0, @scure/base@npm:~1.1.2, @scure/base@npm:~1.1.6": - version: 1.1.7 - resolution: "@scure/base@npm:1.1.7" - checksum: 10/fc50ffaab36cb46ff9fa4dc5052a06089ab6a6707f63d596bb34aaaec76173c9a564ac312a0b981b5e7a5349d60097b8878673c75d6cbfc4da7012b63a82099b + version: 1.1.9 + resolution: "@scure/base@npm:1.1.9" + checksum: 10/f0ab7f687bbcdee2a01377fe3cd808bf63977999672751295b6a92625d5322f4754a96d40f6bd579bc367aad48ecf8a4e6d0390e70296e6ded1076f52adb16bb languageName: node linkType: hard @@ -6091,90 +6090,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.7.14": - version: 1.7.14 - resolution: "@swc/core-darwin-arm64@npm:1.7.14" +"@swc/core-darwin-arm64@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-darwin-arm64@npm:1.7.28" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.7.14": - version: 1.7.14 - resolution: "@swc/core-darwin-x64@npm:1.7.14" +"@swc/core-darwin-x64@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-darwin-x64@npm:1.7.28" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.7.14": - version: 1.7.14 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.7.14" +"@swc/core-linux-arm-gnueabihf@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.7.28" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.7.14": - version: 1.7.14 - resolution: "@swc/core-linux-arm64-gnu@npm:1.7.14" +"@swc/core-linux-arm64-gnu@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-linux-arm64-gnu@npm:1.7.28" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.7.14": - version: 1.7.14 - resolution: "@swc/core-linux-arm64-musl@npm:1.7.14" +"@swc/core-linux-arm64-musl@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-linux-arm64-musl@npm:1.7.28" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.7.14": - version: 1.7.14 - resolution: "@swc/core-linux-x64-gnu@npm:1.7.14" +"@swc/core-linux-x64-gnu@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-linux-x64-gnu@npm:1.7.28" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.7.14": - version: 1.7.14 - resolution: "@swc/core-linux-x64-musl@npm:1.7.14" +"@swc/core-linux-x64-musl@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-linux-x64-musl@npm:1.7.28" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.7.14": - version: 1.7.14 - resolution: "@swc/core-win32-arm64-msvc@npm:1.7.14" +"@swc/core-win32-arm64-msvc@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-win32-arm64-msvc@npm:1.7.28" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.7.14": - version: 1.7.14 - resolution: "@swc/core-win32-ia32-msvc@npm:1.7.14" +"@swc/core-win32-ia32-msvc@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-win32-ia32-msvc@npm:1.7.28" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.7.14": - version: 1.7.14 - resolution: "@swc/core-win32-x64-msvc@npm:1.7.14" +"@swc/core-win32-x64-msvc@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-win32-x64-msvc@npm:1.7.28" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.7.0": - version: 1.7.14 - resolution: "@swc/core@npm:1.7.14" - dependencies: - "@swc/core-darwin-arm64": "npm:1.7.14" - "@swc/core-darwin-x64": "npm:1.7.14" - "@swc/core-linux-arm-gnueabihf": "npm:1.7.14" - "@swc/core-linux-arm64-gnu": "npm:1.7.14" - "@swc/core-linux-arm64-musl": "npm:1.7.14" - "@swc/core-linux-x64-gnu": "npm:1.7.14" - "@swc/core-linux-x64-musl": "npm:1.7.14" - "@swc/core-win32-arm64-msvc": "npm:1.7.14" - "@swc/core-win32-ia32-msvc": "npm:1.7.14" - "@swc/core-win32-x64-msvc": "npm:1.7.14" + version: 1.7.28 + resolution: "@swc/core@npm:1.7.28" + dependencies: + "@swc/core-darwin-arm64": "npm:1.7.28" + "@swc/core-darwin-x64": "npm:1.7.28" + "@swc/core-linux-arm-gnueabihf": "npm:1.7.28" + "@swc/core-linux-arm64-gnu": "npm:1.7.28" + "@swc/core-linux-arm64-musl": "npm:1.7.28" + "@swc/core-linux-x64-gnu": "npm:1.7.28" + "@swc/core-linux-x64-musl": "npm:1.7.28" + "@swc/core-win32-arm64-msvc": "npm:1.7.28" + "@swc/core-win32-ia32-msvc": "npm:1.7.28" + "@swc/core-win32-x64-msvc": "npm:1.7.28" "@swc/counter": "npm:^0.1.3" "@swc/types": "npm:^0.1.12" peerDependencies: @@ -6203,7 +6202,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 10/75cc386a7538da58fd2c8e141503b6efc9d1fddda4fa87c0e54e32422b5e5276eac259fc6a6a83d5f6758480f739d178a5c36d1209127c0459ca006f7075b0a6 + checksum: 10/a477e79387ecc8b68c2bdbbdc88cc61f27a02c5d00f0d77134f9e2de166786a4ee9f7388d6ffd44fc01bfef5311a15cc3132052bab72fb43246dc42705fedb60 languageName: node linkType: hard @@ -6272,17 +6271,17 @@ __metadata: languageName: node linkType: hard -"@tanstack/query-core@npm:5.51.24": - version: 5.51.24 - resolution: "@tanstack/query-core@npm:5.51.24" - checksum: 10/ba9fda2e63d21bb7746ee1eb5384d3beae021e813b1b468b7e7de44b2c447d1a9716b913181cf764ff3d136dca3c3cc92e93a9b9564510f0b5f10f215e453207 +"@tanstack/query-core@npm:5.56.2": + version: 5.56.2 + resolution: "@tanstack/query-core@npm:5.56.2" + checksum: 10/b7600ee71c46c756edbfb0b7733c3df10c16d57b639bf6bd43b81cbdfd7678e01b425b02bd7a08764a2610af10a27f48a4380e3504a29356781bed1d50a38341 languageName: node linkType: hard -"@tanstack/query-devtools@npm:5.51.16": - version: 5.51.16 - resolution: "@tanstack/query-devtools@npm:5.51.16" - checksum: 10/b0e8c1f86890a515d4ddbab4743387aecd882271f7be2cbc36f69d05ba42b803ae2e9bbfd53a03450ca4827c94f6b5d7d6fa5e013bfabe6ee0aa9a7b34a223d3 +"@tanstack/query-devtools@npm:5.58.0": + version: 5.58.0 + resolution: "@tanstack/query-devtools@npm:5.58.0" + checksum: 10/ca16c47c943ea392dfddc301f7e09ecdb0c8b905fb684b8f26b908a244e2e897679efb0ead5fa8e728711017341fdd91d8c51ebb19f746819e26ade5549f539e languageName: node linkType: hard @@ -6296,14 +6295,14 @@ __metadata: linkType: hard "@tanstack/react-query-devtools@npm:^5.44.0": - version: 5.51.24 - resolution: "@tanstack/react-query-devtools@npm:5.51.24" + version: 5.58.0 + resolution: "@tanstack/react-query-devtools@npm:5.58.0" dependencies: - "@tanstack/query-devtools": "npm:5.51.16" + "@tanstack/query-devtools": "npm:5.58.0" peerDependencies: - "@tanstack/react-query": ^5.51.24 + "@tanstack/react-query": ^5.56.2 react: ^18 || ^19 - checksum: 10/d2f15de22c1a922df339cb1dd57fe10227e14d1325d8c31c75a8942029db2bcc5dee1180f2d168ddb77e1a2ae6740a4eec1f8dd18c3edae32d29c4e2de3f0498 + checksum: 10/8337ee516c7ec1c9ef4f25fad98e2a689074ad1151988e8ffa0daff543ecc032577707168624b16a6fe8af4f3bde187c154783b7a3dbb3c8bc4764523a5aa1af languageName: node linkType: hard @@ -6338,13 +6337,13 @@ __metadata: linkType: hard "@tanstack/react-query@npm:^5.44.0": - version: 5.51.24 - resolution: "@tanstack/react-query@npm:5.51.24" + version: 5.56.2 + resolution: "@tanstack/react-query@npm:5.56.2" dependencies: - "@tanstack/query-core": "npm:5.51.24" + "@tanstack/query-core": "npm:5.56.2" peerDependencies: - react: ^18.0.0 - checksum: 10/79333dfaa13a4e2b8811138b638bf1e41d4716ba94724c608d99847e6563dcb0f8503af96d7c444ec1e94dcd6d4634b72aebb13bc6312cb53739ead4be5337ed + react: ^18 || ^19 + checksum: 10/fddf62e987b4f11a31fa136c5ddc203fdec642e7c35c94e5bd1132eb94c51e7d0d8eeb26f2fec9aa330929e596a4b1e340f539be26435b8858868d12d6b1578a languageName: node linkType: hard @@ -6496,11 +6495,11 @@ __metadata: linkType: hard "@types/bn.js@npm:*, @types/bn.js@npm:^5.1.0, @types/bn.js@npm:^5.1.1": - version: 5.1.5 - resolution: "@types/bn.js@npm:5.1.5" + version: 5.1.6 + resolution: "@types/bn.js@npm:5.1.6" dependencies: "@types/node": "npm:*" - checksum: 10/9719330c86aeae0a6a447c974cf0f853ba3660ede20de61f435b03d699e30e6d8b35bf71a8dc9fdc8317784438e83177644ba068ed653d0ae0106e1ecbfe289e + checksum: 10/db565b5a2af59b09459d74441153bf23a0e80f1fb2d070330786054e7ce1a7285dc40afcd8f289426c61a83166bdd70814f70e2d439744686aac5d3ea75daf13 languageName: node linkType: hard @@ -6550,30 +6549,10 @@ __metadata: languageName: node linkType: hard -"@types/eslint-scope@npm:^3.7.3": - version: 3.7.7 - resolution: "@types/eslint-scope@npm:3.7.7" - dependencies: - "@types/eslint": "npm:*" - "@types/estree": "npm:*" - checksum: 10/e2889a124aaab0b89af1bab5959847c5bec09809209255de0e63b9f54c629a94781daa04adb66bffcdd742f5e25a17614fb933965093c0eea64aacda4309380e - languageName: node - linkType: hard - -"@types/eslint@npm:*": - version: 9.6.0 - resolution: "@types/eslint@npm:9.6.0" - dependencies: - "@types/estree": "npm:*" - "@types/json-schema": "npm:*" - checksum: 10/39fc797c671ec9c9184802b4974748cf45ee1b11d7aaaaede44426abcafd07ec7c18eb090e8f5b3387b51637ce3fdf54499472d8dd58a928f0d005cbacb573b4 - languageName: node - linkType: hard - -"@types/estree@npm:*, @types/estree@npm:1.0.5, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5": - version: 1.0.5 - resolution: "@types/estree@npm:1.0.5" - checksum: 10/7de6d928dd4010b0e20c6919e1a6c27b61f8d4567befa89252055fad503d587ecb9a1e3eab1b1901f923964d7019796db810b7fd6430acb26c32866d126fd408 +"@types/estree@npm:1.0.6, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 10/9d35d475095199c23e05b431bcdd1f6fec7380612aed068b14b2a08aa70494de8a9026765a5a91b1073f636fb0368f6d8973f518a31391d519e20c59388ed88d languageName: node linkType: hard @@ -6643,7 +6622,7 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.8": +"@types/json-schema@npm:^7.0.8": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 10/1a3c3e06236e4c4aab89499c428d585527ce50c24fe8259e8b3926d3df4cfbbbcf306cfc73ddfb66cbafc973116efd15967020b0f738f63e09e64c7d260519e7 @@ -6669,9 +6648,9 @@ __metadata: linkType: hard "@types/lodash@npm:*, @types/lodash@npm:^4.14.182": - version: 4.17.7 - resolution: "@types/lodash@npm:4.17.7" - checksum: 10/b8177f19cf962414a66989837481b13f546afc2e98e8d465bec59e6ac03a59c584eb7053ce511cde3a09c5f3096d22a5ae22cfb56b23f3b0da75b0743b6b1a44 + version: 4.17.9 + resolution: "@types/lodash@npm:4.17.9" + checksum: 10/49e35caaf668686be0bad9e9bef88456903a21999d3fd8bf91c302e0d5328398fb59fee793d0afbaf6edeca1b46c3e8109899d85ff3a433075178f1ab693e597 languageName: node linkType: hard @@ -6690,11 +6669,11 @@ __metadata: linkType: hard "@types/node@npm:*, @types/node@npm:>=12.12.47, @types/node@npm:>=13.7.0": - version: 22.4.1 - resolution: "@types/node@npm:22.4.1" + version: 22.7.4 + resolution: "@types/node@npm:22.7.4" dependencies: undici-types: "npm:~6.19.2" - checksum: 10/cce9221aea24688bccc3d7c25afd26d95c1bdab73a32ee5c43bb456e070116abf6ba537a9ff19c728bc06fe054e69a2c7ec8e5d818e34a3bf9567eae2cb20059 + checksum: 10/19ddab80c4eba2253c855ed67c9bbc47417183049d01e59010a738bd80d47338bab79fd1f44ae51516bd63a1db4bf21ddb38b16bf6401a2e93252068ec52e88b languageName: node linkType: hard @@ -6745,9 +6724,9 @@ __metadata: linkType: hard "@types/prop-types@npm:*, @types/prop-types@npm:^15.7.12": - version: 15.7.12 - resolution: "@types/prop-types@npm:15.7.12" - checksum: 10/ac16cc3d0a84431ffa5cfdf89579ad1e2269549f32ce0c769321fdd078f84db4fbe1b461ed5a1a496caf09e637c0e367d600c541435716a55b1d9713f5035dfe + version: 15.7.13 + resolution: "@types/prop-types@npm:15.7.13" + checksum: 10/8935cad87c683c665d09a055919d617fe951cb3b2d5c00544e3a913f861a2bd8d2145b51c9aa6d2457d19f3107ab40784c40205e757232f6a80cc8b1c815513c languageName: node linkType: hard @@ -6779,14 +6758,14 @@ __metadata: linkType: hard "@types/react-redux@npm:^7.1.20": - version: 7.1.33 - resolution: "@types/react-redux@npm:7.1.33" + version: 7.1.34 + resolution: "@types/react-redux@npm:7.1.34" dependencies: "@types/hoist-non-react-statics": "npm:^3.3.0" "@types/react": "npm:*" hoist-non-react-statics: "npm:^3.3.0" redux: "npm:^4.0.0" - checksum: 10/65f4e0a3f0e532bbbe44ae6522d1fce91bfcb3bacc90904c35d3f819e77932cc489b6945988acb4a2320f6e78c57dd1c149556aa241a68efc51de15a2cd73fc0 + checksum: 10/febcd1db0c83c5002c6bee0fdda9e70da0653454ffbb72d6c37cbf2f5c005e06fb5271cff344d7164c385c944526565282de9a95ff379e040476b71d27fc2512 languageName: node linkType: hard @@ -6809,12 +6788,12 @@ __metadata: linkType: hard "@types/react@npm:*, @types/react@npm:^18.2.66": - version: 18.3.3 - resolution: "@types/react@npm:18.3.3" + version: 18.3.10 + resolution: "@types/react@npm:18.3.10" dependencies: "@types/prop-types": "npm:*" csstype: "npm:^3.0.2" - checksum: 10/68e203b7f1f91d6cf21f33fc7af9d6d228035a26c83f514981e54aa3da695d0ec6af10c277c6336de1dd76c4adbe9563f3a21f80c4462000f41e5f370b46e96c + checksum: 10/cdc946f15fcad62387e6485a2bbef3e45609708fd81e3ce30b03580077bb8a8a1bd0d19858d8602b33c3921bbb8907ddbc9411fd25294a2c2e944907dad8dd67 languageName: node linkType: hard @@ -7102,17 +7081,17 @@ __metadata: languageName: node linkType: hard -"@uniswap/router-sdk@npm:^1.10.0, @uniswap/router-sdk@npm:^1.6.0, @uniswap/router-sdk@npm:^1.9.0": - version: 1.10.0 - resolution: "@uniswap/router-sdk@npm:1.10.0" +"@uniswap/router-sdk@npm:^1.11.0, @uniswap/router-sdk@npm:^1.12.0, @uniswap/router-sdk@npm:^1.6.0, @uniswap/router-sdk@npm:^1.9.0": + version: 1.12.1 + resolution: "@uniswap/router-sdk@npm:1.12.1" dependencies: "@ethersproject/abi": "npm:^5.5.0" "@uniswap/sdk-core": "npm:^5.3.1" "@uniswap/swap-router-contracts": "npm:^1.3.0" "@uniswap/v2-sdk": "npm:^4.3.2" "@uniswap/v3-sdk": "npm:^3.11.2" - "@uniswap/v4-sdk": "npm:^1.0.0" - checksum: 10/46e7087ec6a733752f6d5ca8e870131b77c2db4bce5fbeb8e7412c79930e2e71d875978f2e51f0a1b9e2f790a37944ff3f11c0408dbe14b8a33f911a93d705bc + "@uniswap/v4-sdk": "npm:^1.6.0" + checksum: 10/d407d462a10de5f4ded6d57856e3e11c5c7a84cb1318f20b746f7347602f2fd71ecfbbf02b95c400c7599d987c4a361071e5266fc23f9f5078883621d2cdedcf languageName: node linkType: hard @@ -7130,9 +7109,9 @@ __metadata: languageName: node linkType: hard -"@uniswap/sdk-core@npm:^5.0.0, @uniswap/sdk-core@npm:^5.3.0, @uniswap/sdk-core@npm:^5.3.1": - version: 5.3.1 - resolution: "@uniswap/sdk-core@npm:5.3.1" +"@uniswap/sdk-core@npm:^5.0.0, @uniswap/sdk-core@npm:^5.3.1, @uniswap/sdk-core@npm:^5.4.0": + version: 5.4.0 + resolution: "@uniswap/sdk-core@npm:5.4.0" dependencies: "@ethersproject/address": "npm:^5.0.2" "@ethersproject/bytes": "npm:^5.7.0" @@ -7143,27 +7122,27 @@ __metadata: jsbi: "npm:^3.1.4" tiny-invariant: "npm:^1.1.0" toformat: "npm:^2.0.0" - checksum: 10/8da4c387d3d0507998b9d1f3ebbf61fbe2e033c1d83ed934af119e9274d8739d34e441495eb0f9314ce39e793238f1378cfb284fd2e619dd36951f0de7f50d6c + checksum: 10/01c29952755c2fe168bc62a9975efd27cfe70514c9394e9b4b361e515e9eb413806cfa0d8793f43837abf83239d4e4aee992ab3c1af6810bbd118dff5ebca7b3 languageName: node linkType: hard "@uniswap/smart-order-router@npm:^3.16.25": - version: 3.40.0 - resolution: "@uniswap/smart-order-router@npm:3.40.0" + version: 3.59.0 + resolution: "@uniswap/smart-order-router@npm:3.59.0" dependencies: "@eth-optimism/sdk": "npm:^3.2.2" "@types/brotli": "npm:^1.3.4" "@uniswap/default-token-list": "npm:^11.13.0" "@uniswap/permit2-sdk": "npm:^1.3.0" - "@uniswap/router-sdk": "npm:^1.10.0" - "@uniswap/sdk-core": "npm:^5.3.0" + "@uniswap/router-sdk": "npm:^1.12.0" + "@uniswap/sdk-core": "npm:^5.4.0" "@uniswap/swap-router-contracts": "npm:^1.3.1" "@uniswap/token-lists": "npm:^1.0.0-beta.31" "@uniswap/universal-router": "npm:^1.6.0" - "@uniswap/universal-router-sdk": "npm:^2.2.4" + "@uniswap/universal-router-sdk": "npm:^3.0.2" "@uniswap/v2-sdk": "npm:^4.3.2" "@uniswap/v3-sdk": "npm:^3.13.0" - "@uniswap/v4-sdk": "npm:^1.0.0" + "@uniswap/v4-sdk": "npm:^1.2.0" async-retry: "npm:^1.3.1" await-timeout: "npm:^1.1.1" axios: "npm:^0.21.1" @@ -7179,7 +7158,7 @@ __metadata: stats-lite: "npm:^2.2.0" peerDependencies: jsbi: ^3.2.0 - checksum: 10/917e9079813df65d30a2cfeb07133c2b2e334eaaecdd724eb9c6c3b837779c3ac0e5fd146fab69f90d4641a8590c0661996b3a5d5a92c2c7bf82984e10efe626 + checksum: 10/b04356c9caacd5cdb0603516b31be9c7e7c4bacc927d6c92c85a04cba4309d57562b92b9903ad9f690b1a9a588d99a1bdb016159b1423d633c5ce8d984c8d5c2 languageName: node linkType: hard @@ -7220,20 +7199,23 @@ __metadata: languageName: node linkType: hard -"@uniswap/universal-router-sdk@npm:^2.2.4": - version: 2.2.4 - resolution: "@uniswap/universal-router-sdk@npm:2.2.4" +"@uniswap/universal-router-sdk@npm:^3.0.2": + version: 3.1.0 + resolution: "@uniswap/universal-router-sdk@npm:3.1.0" dependencies: + "@openzeppelin/contracts": "npm:4.7.0" "@uniswap/permit2-sdk": "npm:^1.3.0" - "@uniswap/router-sdk": "npm:^1.10.0" + "@uniswap/router-sdk": "npm:^1.11.0" "@uniswap/sdk-core": "npm:^5.3.1" - "@uniswap/universal-router": "npm:1.6.0" + "@uniswap/universal-router": "npm:2.0.0-beta.1" + "@uniswap/v2-core": "npm:^1.0.1" "@uniswap/v2-sdk": "npm:^4.4.1" + "@uniswap/v3-core": "npm:1.0.0" "@uniswap/v3-sdk": "npm:^3.13.1" "@uniswap/v4-sdk": "npm:^1.0.0" bignumber.js: "npm:^9.0.2" ethers: "npm:^5.7.0" - checksum: 10/6ac6290da3d355b7a4b7498bfedf9cde027f11878edc8f17de788fe8d5968df161279573f20e0dc39d610da7e22a039a164faef2aa08ace683e558bd9b1072b5 + checksum: 10/2e379c44e125de67f9fbb957ae03f3a5b01bf45527a42f6262a994fa1a3f9d666be3e37d1ef4943475b7a1256f2a5c6febebc3471ef1bb5425d01023e25c71a3 languageName: node linkType: hard @@ -7248,6 +7230,17 @@ __metadata: languageName: node linkType: hard +"@uniswap/universal-router@npm:2.0.0-beta.1": + version: 2.0.0-beta.1 + resolution: "@uniswap/universal-router@npm:2.0.0-beta.1" + dependencies: + "@openzeppelin/contracts": "npm:5.0.2" + "@uniswap/v2-core": "npm:1.0.1" + "@uniswap/v3-core": "npm:1.0.0" + checksum: 10/06b0ce97e85de7e818ccc5c9854994b290acd72f77022a227b4ec7f4e25a765481cc8c75e66e89b1d56daa5eda66a4bf986ce9ed601c0d91601ffab331455e1b + languageName: node + linkType: hard + "@uniswap/v2-core@npm:1.0.1, @uniswap/v2-core@npm:^1.0.1": version: 1.0.1 resolution: "@uniswap/v2-core@npm:1.0.1" @@ -7325,8 +7318,8 @@ __metadata: linkType: hard "@uniswap/v3-sdk@npm:^3.10.0, @uniswap/v3-sdk@npm:^3.11.0, @uniswap/v3-sdk@npm:^3.11.2, @uniswap/v3-sdk@npm:^3.13.0, @uniswap/v3-sdk@npm:^3.13.1": - version: 3.13.1 - resolution: "@uniswap/v3-sdk@npm:3.13.1" + version: 3.14.0 + resolution: "@uniswap/v3-sdk@npm:3.14.0" dependencies: "@ethersproject/abi": "npm:^5.5.0" "@ethersproject/solidity": "npm:^5.0.9" @@ -7336,7 +7329,7 @@ __metadata: "@uniswap/v3-staker": "npm:1.0.0" tiny-invariant: "npm:^1.1.0" tiny-warning: "npm:^1.0.3" - checksum: 10/08ccfe3b88a5dc9683d2dee010048d54a510f70a1749d1d595599a5f63ed02a80c790df56ae630f3c1ea99334e0ce6dd5c72f8339ce14042169c5f11651ec5d0 + checksum: 10/d642cf4a27097ce7f90a85a32c7aee09d943a027c844b35910077659b3ef2f3dc7213350b77c606c8b1be69e85c40d0329f04533b564c7dc02381c3850ff1a9a languageName: node linkType: hard @@ -7351,16 +7344,16 @@ __metadata: languageName: node linkType: hard -"@uniswap/v4-sdk@npm:^1.0.0": - version: 1.0.0 - resolution: "@uniswap/v4-sdk@npm:1.0.0" +"@uniswap/v4-sdk@npm:^1.0.0, @uniswap/v4-sdk@npm:^1.2.0, @uniswap/v4-sdk@npm:^1.6.0": + version: 1.6.3 + resolution: "@uniswap/v4-sdk@npm:1.6.3" dependencies: "@ethersproject/solidity": "npm:^5.0.9" "@uniswap/sdk-core": "npm:^5.3.1" "@uniswap/v3-sdk": "npm:3.12.0" tiny-invariant: "npm:^1.1.0" tiny-warning: "npm:^1.0.3" - checksum: 10/93044e2f838657515959dad1a7546b8b27de285941ba8b9697b28a0bc767a0a047b01d6e7bf95c0dba871e5a44c6750932600698ed6fd7f65dd396c8d1d0570a + checksum: 10/fcba4fb677e91e387542db15fc067dbdf6c9cd847cacd3a72e4a0456378b93d820d51a937ed7c69edd7e0cc793420e85044bdb2be2623d162d1ee04cc347382b languageName: node linkType: hard @@ -7567,80 +7560,80 @@ __metadata: linkType: hard "@vitejs/plugin-react@npm:^4.2.1": - version: 4.3.1 - resolution: "@vitejs/plugin-react@npm:4.3.1" + version: 4.3.2 + resolution: "@vitejs/plugin-react@npm:4.3.2" dependencies: - "@babel/core": "npm:^7.24.5" - "@babel/plugin-transform-react-jsx-self": "npm:^7.24.5" - "@babel/plugin-transform-react-jsx-source": "npm:^7.24.1" + "@babel/core": "npm:^7.25.2" + "@babel/plugin-transform-react-jsx-self": "npm:^7.24.7" + "@babel/plugin-transform-react-jsx-source": "npm:^7.24.7" "@types/babel__core": "npm:^7.20.5" react-refresh: "npm:^0.14.2" peerDependencies: vite: ^4.2.0 || ^5.0.0 - checksum: 10/a9d1eb30c968bf719a3277067211493746579aee14a7af8c0edb2cde38e8e5bbd461e62a41c3590e2c6eb04a047114eb3e97dcd591967625fbbc7aead8dfaf90 + checksum: 10/9ff278942d76e21f4680f0f9e4d8d3bfe12fe19701e0f07014dfbff83d772f10237114581a3ec2637c32856d0a99400a14e6cd80969f99b88b1a64227c531ddb languageName: node linkType: hard -"@vue/compiler-core@npm:3.4.38": - version: 3.4.38 - resolution: "@vue/compiler-core@npm:3.4.38" +"@vue/compiler-core@npm:3.5.10": + version: 3.5.10 + resolution: "@vue/compiler-core@npm:3.5.10" dependencies: - "@babel/parser": "npm:^7.24.7" - "@vue/shared": "npm:3.4.38" + "@babel/parser": "npm:^7.25.3" + "@vue/shared": "npm:3.5.10" entities: "npm:^4.5.0" estree-walker: "npm:^2.0.2" source-map-js: "npm:^1.2.0" - checksum: 10/16449e9083c290e6c13e1cc0cb0a0a457817a52533d10902388c872fb1337ba0fa29fb7b8394df5a10f5ed3bad264d6c386f9eaf47c07982a543f277dbee9b8a + checksum: 10/3207883dd018305d3a014c80e17057d1223ae5093c77300b9ad703f8282abf863a2264d8b366cb9fc64a9319e213bf59d8d3419d80f07e2d70a424c0ad1e386b languageName: node linkType: hard -"@vue/compiler-dom@npm:3.4.38": - version: 3.4.38 - resolution: "@vue/compiler-dom@npm:3.4.38" +"@vue/compiler-dom@npm:3.5.10": + version: 3.5.10 + resolution: "@vue/compiler-dom@npm:3.5.10" dependencies: - "@vue/compiler-core": "npm:3.4.38" - "@vue/shared": "npm:3.4.38" - checksum: 10/4012fab212dc0628ef72f5ae13aa2dd551efb8be7f2aa8abe2a1db15058ddda29912a1e3aa1fc6712e2d8efe84724f16a907ad2cda987631bfc79330afc8d451 + "@vue/compiler-core": "npm:3.5.10" + "@vue/shared": "npm:3.5.10" + checksum: 10/36f0eb99428bff3d42b490015d9172db0f3ed03f5ad9e6e8fb76b9b7fdb1306bf25002959442c8771a77755ead8aeabc7c6fd8918eb7d34e2c8cf125bd50bcad languageName: node linkType: hard "@vue/compiler-sfc@npm:^3.4.27": - version: 3.4.38 - resolution: "@vue/compiler-sfc@npm:3.4.38" - dependencies: - "@babel/parser": "npm:^7.24.7" - "@vue/compiler-core": "npm:3.4.38" - "@vue/compiler-dom": "npm:3.4.38" - "@vue/compiler-ssr": "npm:3.4.38" - "@vue/shared": "npm:3.4.38" + version: 3.5.10 + resolution: "@vue/compiler-sfc@npm:3.5.10" + dependencies: + "@babel/parser": "npm:^7.25.3" + "@vue/compiler-core": "npm:3.5.10" + "@vue/compiler-dom": "npm:3.5.10" + "@vue/compiler-ssr": "npm:3.5.10" + "@vue/shared": "npm:3.5.10" estree-walker: "npm:^2.0.2" - magic-string: "npm:^0.30.10" - postcss: "npm:^8.4.40" + magic-string: "npm:^0.30.11" + postcss: "npm:^8.4.47" source-map-js: "npm:^1.2.0" - checksum: 10/3eec1ddc03e06a162087dbbff9679f941ff34c43e553006aa2717c6a396445f488b62b89afa9cf65688468a05d8517bf1ee64936ad78d7ba6647a850a089e0e0 + checksum: 10/0047f519a6035c5263f82ab51dfc37e80ba869e1d8a05c15c4aa799b86a44ac8967084f39e2654d0afaa435e9f51625fcd76ff3c93e3352d73128f4603855d0d languageName: node linkType: hard -"@vue/compiler-ssr@npm:3.4.38": - version: 3.4.38 - resolution: "@vue/compiler-ssr@npm:3.4.38" +"@vue/compiler-ssr@npm:3.5.10": + version: 3.5.10 + resolution: "@vue/compiler-ssr@npm:3.5.10" dependencies: - "@vue/compiler-dom": "npm:3.4.38" - "@vue/shared": "npm:3.4.38" - checksum: 10/3ee052c8f10bf18db5d6788df21105698c139fac1de6c82532878cca86be4d052510a216184b3ea73331d84befcefd3f9ada11470c862f03696fed96ce1005cb + "@vue/compiler-dom": "npm:3.5.10" + "@vue/shared": "npm:3.5.10" + checksum: 10/6c274c6b88151519565827132a80266f1d8aa8d88f901ed465d8034fe8d3bdcdf772036cc45afbe53ca58acd3fc6bcfdc31b9b36453bb2934eff43e631e71d5b languageName: node linkType: hard -"@vue/shared@npm:3.4.38": - version: 3.4.38 - resolution: "@vue/shared@npm:3.4.38" - checksum: 10/46bfc1f3932fd154ff84dcd267cae4db730c98db433c848d40c9c0dc23dcabdb5efe96a3a378c9ed3b7e8281ca17e2753f0ce98ae43b54b315550dfaccb56868 +"@vue/shared@npm:3.5.10": + version: 3.5.10 + resolution: "@vue/shared@npm:3.5.10" + checksum: 10/1f8534a58ed5320c7c5a137ed18fcb21addd3ef1cb155f926d9c815ef90198d9492d3f2aa3ffd3e1d6d7bbfdebde9a9aa5a847a3ff98b442d15eb194afb46ec8 languageName: node linkType: hard -"@walletconnect/core@npm:2.15.0": - version: 2.15.0 - resolution: "@walletconnect/core@npm:2.15.0" +"@walletconnect/core@npm:2.16.2": + version: 2.16.2 + resolution: "@walletconnect/core@npm:2.16.2" dependencies: "@walletconnect/heartbeat": "npm:1.2.2" "@walletconnect/jsonrpc-provider": "npm:1.0.14" @@ -7653,12 +7646,12 @@ __metadata: "@walletconnect/relay-auth": "npm:1.0.4" "@walletconnect/safe-json": "npm:1.0.2" "@walletconnect/time": "npm:1.0.2" - "@walletconnect/types": "npm:2.15.0" - "@walletconnect/utils": "npm:2.15.0" + "@walletconnect/types": "npm:2.16.2" + "@walletconnect/utils": "npm:2.16.2" events: "npm:3.3.0" lodash.isequal: "npm:4.5.0" uint8arrays: "npm:3.1.0" - checksum: 10/f9a1ab9e8ecfe1dd35fad2dee03dbaee4a3f237a52b16a2e6820cb2ff964415eab708839567d27d061481223b7be82210216164698317c360d6e2399b4cbf2bb + checksum: 10/b867127db13594276fcf107c09b94407858fcf7214771c7682ebf1f552b386d1a116332084ce06579466a5db3a19c2750882eb44606743c54ed902ef27c849a1 languageName: node linkType: hard @@ -7672,20 +7665,20 @@ __metadata: linkType: hard "@walletconnect/ethereum-provider@npm:^2.10.1, @walletconnect/ethereum-provider@npm:^2.13.0": - version: 2.15.0 - resolution: "@walletconnect/ethereum-provider@npm:2.15.0" + version: 2.16.2 + resolution: "@walletconnect/ethereum-provider@npm:2.16.2" dependencies: "@walletconnect/jsonrpc-http-connection": "npm:1.0.8" "@walletconnect/jsonrpc-provider": "npm:1.0.14" "@walletconnect/jsonrpc-types": "npm:1.0.4" "@walletconnect/jsonrpc-utils": "npm:1.0.8" "@walletconnect/modal": "npm:2.6.2" - "@walletconnect/sign-client": "npm:2.15.0" - "@walletconnect/types": "npm:2.15.0" - "@walletconnect/universal-provider": "npm:2.15.0" - "@walletconnect/utils": "npm:2.15.0" + "@walletconnect/sign-client": "npm:2.16.2" + "@walletconnect/types": "npm:2.16.2" + "@walletconnect/universal-provider": "npm:2.16.2" + "@walletconnect/utils": "npm:2.16.2" events: "npm:3.3.0" - checksum: 10/57367cfefcbf8c0c49fad6ef7fb64bbea369feab14c33e01e64ca82da4e316707619f6a05e881979897375050406ba3c8405c293ff6734850f2cd44eeca8a373 + checksum: 10/b438d11e32d12f58afa6d782defc22f59ef07ecc3eef1d2bf24a500e4e2348168a1cc4185e3fcb4db90fa87c97d5722aca6c49aed5391ba66dc57f317fef8c6a languageName: node linkType: hard @@ -7855,20 +7848,20 @@ __metadata: languageName: node linkType: hard -"@walletconnect/sign-client@npm:2.15.0": - version: 2.15.0 - resolution: "@walletconnect/sign-client@npm:2.15.0" +"@walletconnect/sign-client@npm:2.16.2": + version: 2.16.2 + resolution: "@walletconnect/sign-client@npm:2.16.2" dependencies: - "@walletconnect/core": "npm:2.15.0" + "@walletconnect/core": "npm:2.16.2" "@walletconnect/events": "npm:1.0.1" "@walletconnect/heartbeat": "npm:1.2.2" "@walletconnect/jsonrpc-utils": "npm:1.0.8" "@walletconnect/logger": "npm:2.1.2" "@walletconnect/time": "npm:1.0.2" - "@walletconnect/types": "npm:2.15.0" - "@walletconnect/utils": "npm:2.15.0" + "@walletconnect/types": "npm:2.16.2" + "@walletconnect/utils": "npm:2.16.2" events: "npm:3.3.0" - checksum: 10/9715c4ad2288dfa15a901255836681fdb100ba22c32cdeb74bf5c478cbec2fbb896575a710f183397b9e392cbf9b815f08b7b504447648453cef62cd1ca9640a + checksum: 10/4b07c859c2d66b53bcef825b5d9374471e711b1f057c523c546d093ee66112e2884ad26dda3c3e2696b1f5abb05a88bab8bf767030e6122e5d2cb460e51a4e7a languageName: node linkType: hard @@ -7881,9 +7874,9 @@ __metadata: languageName: node linkType: hard -"@walletconnect/types@npm:2.15.0": - version: 2.15.0 - resolution: "@walletconnect/types@npm:2.15.0" +"@walletconnect/types@npm:2.16.2": + version: 2.16.2 + resolution: "@walletconnect/types@npm:2.16.2" dependencies: "@walletconnect/events": "npm:1.0.1" "@walletconnect/heartbeat": "npm:1.2.2" @@ -7891,30 +7884,30 @@ __metadata: "@walletconnect/keyvaluestorage": "npm:1.1.1" "@walletconnect/logger": "npm:2.1.2" events: "npm:3.3.0" - checksum: 10/176b1acd0b7d49296d9cf8e7c6b1af1ca79d7c504c51f5bea3751a959442f3b84fd4568fe7c535d0b8753bb4bfe2f64bf044c07183c33c21cf76d4fe29196ad1 + checksum: 10/bad714e4681aee92d9aeb112dc1e3df6336a17bb082d67e573c84c935dcee8976c3276d7b38f63d688281fe6d5ab6239528025749324cf9c36bd6e0d6d810a11 languageName: node linkType: hard -"@walletconnect/universal-provider@npm:2.15.0": - version: 2.15.0 - resolution: "@walletconnect/universal-provider@npm:2.15.0" +"@walletconnect/universal-provider@npm:2.16.2": + version: 2.16.2 + resolution: "@walletconnect/universal-provider@npm:2.16.2" dependencies: "@walletconnect/jsonrpc-http-connection": "npm:1.0.8" "@walletconnect/jsonrpc-provider": "npm:1.0.14" "@walletconnect/jsonrpc-types": "npm:1.0.4" "@walletconnect/jsonrpc-utils": "npm:1.0.8" "@walletconnect/logger": "npm:2.1.2" - "@walletconnect/sign-client": "npm:2.15.0" - "@walletconnect/types": "npm:2.15.0" - "@walletconnect/utils": "npm:2.15.0" + "@walletconnect/sign-client": "npm:2.16.2" + "@walletconnect/types": "npm:2.16.2" + "@walletconnect/utils": "npm:2.16.2" events: "npm:3.3.0" - checksum: 10/971e35011cbd2e327dbc0aa51413ba1e7b241547078b9294ef2dbdb614ee5b0e88b33f53f27a6af1b0f9be0cc60f9c9515f4fca55aabbf78086b409dbd756329 + checksum: 10/729af58013c0831d998fd72a64e89512d6311c1bcb6d5167fd5b21ea08a89a078e2c7f5592e1ff346b4ab1245a4a8a5354507b54b625210fc4795f34f1f8e0d3 languageName: node linkType: hard -"@walletconnect/utils@npm:2.15.0": - version: 2.15.0 - resolution: "@walletconnect/utils@npm:2.15.0" +"@walletconnect/utils@npm:2.16.2": + version: 2.16.2 + resolution: "@walletconnect/utils@npm:2.16.2" dependencies: "@stablelib/chacha20poly1305": "npm:1.0.1" "@stablelib/hkdf": "npm:1.0.1" @@ -7922,16 +7915,17 @@ __metadata: "@stablelib/sha256": "npm:1.0.1" "@stablelib/x25519": "npm:1.0.3" "@walletconnect/relay-api": "npm:1.0.11" + "@walletconnect/relay-auth": "npm:1.0.4" "@walletconnect/safe-json": "npm:1.0.2" "@walletconnect/time": "npm:1.0.2" - "@walletconnect/types": "npm:2.15.0" + "@walletconnect/types": "npm:2.16.2" "@walletconnect/window-getters": "npm:1.0.1" "@walletconnect/window-metadata": "npm:1.0.1" detect-browser: "npm:5.3.0" elliptic: "npm:^6.5.7" query-string: "npm:7.1.3" uint8arrays: "npm:3.1.0" - checksum: 10/9424946325b52d80c83378470825e09991737c25a09f7b445a4e73ca7d1b713bcfa260e2a73c95ae1731f4c2c1efc3c81ba23d42480d347b714dd07d74ce756c + checksum: 10/21bbfcdb170a661399f6a63be9338bf31492d6f2e62a58589930ad6aca639b7ea691c73ec89e97d8cb95555eaf13b0a4f5746bd20549560244d4348d34f552f1 languageName: node linkType: hard @@ -8008,7 +8002,7 @@ __metadata: languageName: node linkType: hard -"@web3-onboard/core@npm:2.22.2, @web3-onboard/core@npm:^2.21.1": +"@web3-onboard/core@npm:2.22.2": version: 2.22.2 resolution: "@web3-onboard/core@npm:2.22.2" dependencies: @@ -8028,6 +8022,26 @@ __metadata: languageName: node linkType: hard +"@web3-onboard/core@npm:2.22.3, @web3-onboard/core@npm:^2.21.1": + version: 2.22.3 + resolution: "@web3-onboard/core@npm:2.22.3" + dependencies: + "@web3-onboard/common": "npm:^2.4.1" + bnc-sdk: "npm:^4.6.7" + bowser: "npm:^2.11.0" + eventemitter3: "npm:^4.0.7" + joi: "npm:17.9.1" + lodash.merge: "npm:^4.6.2" + lodash.partition: "npm:^4.6.0" + nanoid: "npm:^4.0.0" + rxjs: "npm:^7.5.5" + svelte: "npm:^3.49.0" + svelte-i18n: "npm:^3.3.13" + viem: "npm:2.12.0" + checksum: 10/2525bb3b1cf4d893f45fb4f0becd5a889a59b1ba13f02b9f567d988eac57bae28ffd8a37e153bf87595ee15dee316d78938a9e008c241cc82a2b7b215760914c + languageName: node + linkType: hard + "@web3-onboard/injected-wallets@npm:2.11.2, @web3-onboard/injected-wallets@npm:^2.10.5": version: 2.11.2 resolution: "@web3-onboard/injected-wallets@npm:2.11.2" @@ -8040,15 +8054,15 @@ __metadata: linkType: hard "@web3-onboard/react@npm:^2.8.9, @web3-onboard/react@npm:^2.9.2": - version: 2.9.2 - resolution: "@web3-onboard/react@npm:2.9.2" + version: 2.9.3 + resolution: "@web3-onboard/react@npm:2.9.3" dependencies: "@web3-onboard/common": "npm:^2.4.1" - "@web3-onboard/core": "npm:2.22.2" + "@web3-onboard/core": "npm:2.22.3" use-sync-external-store: "npm:1.0.0" peerDependencies: react: ">=16.8" - checksum: 10/c6a23a76cf914902592ea1e4ddf0647b72f45c79d72b663c0aa275407cfadb9ecce0d6bbba4e43150839791a9c70fd50013dfa2596fcea5f6d58f44baa60dccf + checksum: 10/cd59788e532d7e1085ff0bc24a4bc592a90ef050126d784faf4065cc2ceaf21fd4399030ae22f3f047277bc11506e573a31ce385fd68876873e576e9edee7b19 languageName: node linkType: hard @@ -8625,9 +8639,9 @@ __metadata: linkType: hard "ansi-regex@npm:^6.0.1": - version: 6.0.1 - resolution: "ansi-regex@npm:6.0.1" - checksum: 10/1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169 + version: 6.1.0 + resolution: "ansi-regex@npm:6.1.0" + checksum: 10/495834a53b0856c02acd40446f7130cb0f8284f4a39afdab20d5dc42b2e198b1196119fe887beed8f9055c4ff2055e3b2f6d4641d0be018cdfb64fedf6fc1aac languageName: node linkType: hard @@ -8904,9 +8918,9 @@ __metadata: linkType: hard "aws4@npm:^1.8.0": - version: 1.13.1 - resolution: "aws4@npm:1.13.1" - checksum: 10/67a501fa36d2d082970b6708663696b406c693042fcf7a177850c92557780674a86fc538a3162db122cc656ae85e8fb895c1d42b399bae53488e6a13839fb65a + version: 1.13.2 + resolution: "aws4@npm:1.13.2" + checksum: 10/290b9f84facbad013747725bfd8b4c42d0b3b04b5620d8418f0219832ef95a7dc597a4af7b1589ae7fce18bacde96f40911c3cda36199dd04d9f8e01f72fa50a languageName: node linkType: hard @@ -9206,7 +9220,7 @@ __metadata: languageName: node linkType: hard -"bn.js@npm:^5.0.0, bn.js@npm:^5.1.2, bn.js@npm:^5.1.3, bn.js@npm:^5.2.0, bn.js@npm:^5.2.1": +"bn.js@npm:^5.1.2, bn.js@npm:^5.1.3, bn.js@npm:^5.2.0, bn.js@npm:^5.2.1": version: 5.2.1 resolution: "bn.js@npm:5.2.1" checksum: 10/7a7e8764d7a6e9708b8b9841b2b3d6019cc154d2fc23716d0efecfe1e16921b7533c6f7361fb05471eab47986c4aa310c270f88e3507172104632ac8df2cfd84 @@ -9225,9 +9239,9 @@ __metadata: languageName: node linkType: hard -"body-parser@npm:1.20.2, body-parser@npm:^1.16.0": - version: 1.20.2 - resolution: "body-parser@npm:1.20.2" +"body-parser@npm:1.20.3, body-parser@npm:^1.16.0": + version: 1.20.3 + resolution: "body-parser@npm:1.20.3" dependencies: bytes: "npm:3.1.2" content-type: "npm:~1.0.5" @@ -9237,11 +9251,11 @@ __metadata: http-errors: "npm:2.0.0" iconv-lite: "npm:0.4.24" on-finished: "npm:2.4.1" - qs: "npm:6.11.0" + qs: "npm:6.13.0" raw-body: "npm:2.5.2" type-is: "npm:~1.6.18" unpipe: "npm:1.0.0" - checksum: 10/3cf171b82190cf91495c262b073e425fc0d9e25cc2bf4540d43f7e7bbca27d6a9eae65ca367b6ef3993eea261159d9d2ab37ce444e8979323952e12eb3df319a + checksum: 10/8723e3d7a672eb50854327453bed85ac48d045f4958e81e7d470c56bf111f835b97e5b73ae9f6393d0011cc9e252771f46fd281bbabc57d33d3986edf1e6aeca languageName: node linkType: hard @@ -9396,12 +9410,13 @@ __metadata: linkType: hard "browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.1.0": - version: 4.1.0 - resolution: "browserify-rsa@npm:4.1.0" + version: 4.1.1 + resolution: "browserify-rsa@npm:4.1.1" dependencies: - bn.js: "npm:^5.0.0" - randombytes: "npm:^2.0.1" - checksum: 10/155f0c135873efc85620571a33d884aa8810e40176125ad424ec9d85016ff105a07f6231650914a760cca66f29af0494087947b7be34880dd4599a0cd3c38e54 + bn.js: "npm:^5.2.1" + randombytes: "npm:^2.1.0" + safe-buffer: "npm:^5.2.1" + checksum: 10/62ae0da60e49e8d5dd3b0922119b6edee94ebfa3a184211c804024b3a75f9dab31a1d124cc0545ed050e273f0325c2fd7aba6a51e44ba6f726fceae3210ddade languageName: node linkType: hard @@ -9447,16 +9462,16 @@ __metadata: linkType: hard "browserslist@npm:^4.21.10, browserslist@npm:^4.23.1": - version: 4.23.3 - resolution: "browserslist@npm:4.23.3" + version: 4.24.0 + resolution: "browserslist@npm:4.24.0" dependencies: - caniuse-lite: "npm:^1.0.30001646" - electron-to-chromium: "npm:^1.5.4" + caniuse-lite: "npm:^1.0.30001663" + electron-to-chromium: "npm:^1.5.28" node-releases: "npm:^2.0.18" update-browserslist-db: "npm:^1.1.0" bin: browserslist: cli.js - checksum: 10/e266d18c6c6c5becf9a1a7aa264477677b9796387972e8fce34854bb33dc1666194dc28389780e5dc6566e68a95e87ece2ce222e1c4ca93c2b75b61dfebd5f1c + checksum: 10/26c1b8ba257a0b51b102080ba9d42945af2abaa8c4cf6da21cd47b3f123fc1e81640203b293214356c2c17d9d265bb3a5ed428b6d302f383576dd6ce8fd5036c languageName: node linkType: hard @@ -9723,10 +9738,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001154, caniuse-lite@npm:^1.0.30001646": - version: 1.0.30001651 - resolution: "caniuse-lite@npm:1.0.30001651" - checksum: 10/fe4857b2a91a9cb77993eec9622de68bea0df17c31cb9584ca5c562f64bb3b8fda316d898aa3b1ee3ee9f7d80f6bf13c42acb09d9a56a1a6c64afaf7381472fa +"caniuse-lite@npm:^1.0.30001154, caniuse-lite@npm:^1.0.30001663": + version: 1.0.30001664 + resolution: "caniuse-lite@npm:1.0.30001664" + checksum: 10/ff237f6bbb59564d2a7219fe9a799a59692403115500f7548a77f1f6b82e33fd136375003f80c8df88a64048f699f9f917292ca4cac0dd8a789d2d35fba6269b languageName: node linkType: hard @@ -9761,11 +9776,11 @@ __metadata: linkType: hard "cborg@npm:^4.0.0": - version: 4.2.3 - resolution: "cborg@npm:4.2.3" + version: 4.2.4 + resolution: "cborg@npm:4.2.4" bin: cborg: lib/bin.js - checksum: 10/4ee9ee953329c5688e8f72333e05a2329548cfd2d8e684d7c7546e334d8edf5ca3267da6b8a70d420f4d8d8da5327b02293a19170299521cd7d3c7caf41efaed + checksum: 10/b85fa8538f5c0575c511776555a58ba60ea10a56cdf19bd15d66d71e02215901f74536834eef28353f0a6dbbd13ac7335019b15041272a5288f4105b10a736ff languageName: node linkType: hard @@ -10066,9 +10081,9 @@ __metadata: linkType: hard "codeco@npm:^1.1.0": - version: 1.4.1 - resolution: "codeco@npm:1.4.1" - checksum: 10/591b885cd93b37a5200870c275946ad162cda043c97cb609c5ad94997c7ae1007db00c2fe952e6dc7ddb2580b4250e8c9243d6eb2262cd65e2f6c7bfee9b1436 + version: 1.4.3 + resolution: "codeco@npm:1.4.3" + checksum: 10/29c4301184f05eb47d35b209d3e9f422692296886dd6872fb3851001955a88153d1de05b0b1f22c0d20c5f0c43a9c91cf8d953aeb5892bd3a4427c414fbde594 languageName: node linkType: hard @@ -10463,7 +10478,7 @@ __metadata: languageName: node linkType: hard -"crossws@npm:^0.2.0, crossws@npm:^0.2.4": +"crossws@npm:^0.2.4": version: 0.2.4 resolution: "crossws@npm:0.2.4" peerDependencies: @@ -10698,14 +10713,14 @@ __metadata: linkType: hard "debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:~4.3.1, debug@npm:~4.3.2": - version: 4.3.6 - resolution: "debug@npm:4.3.6" + version: 4.3.7 + resolution: "debug@npm:4.3.7" dependencies: - ms: "npm:2.1.2" + ms: "npm:^2.1.3" peerDependenciesMeta: supports-color: optional: true - checksum: 10/d3adb9af7d57a9e809a68f404490cf776122acca16e6359a2702c0f462e510e91f9765c07f707b8ab0d91e03bad57328f3256f5082631cefb5393d0394d50fb7 + checksum: 10/71168908b9a78227ab29d5d25fe03c5867750e31ce24bf2c44a86efc5af041758bb56569b0a3d48a9b5344c00a24a777e6f4100ed6dfd9534a42c1dde285125a languageName: node linkType: hard @@ -11179,9 +11194,9 @@ __metadata: linkType: hard "dompurify@npm:^3.0.2": - version: 3.1.6 - resolution: "dompurify@npm:3.1.6" - checksum: 10/036844bc9b717b172ba27f5863b56f950289a05d8eebfb702d6953bbf80bd021e480ce4217bd084567186f2d0ada13358ce5556963492cfe402d774e8667f120 + version: 3.1.7 + resolution: "dompurify@npm:3.1.7" + checksum: 10/dc637a064306f83cf911caa267ffe1f973552047602020e3b6723c90f67962813edf8a65a0b62e8c9bc13fcd173a2691212a3719bc116226967f46bcd6181277 languageName: node linkType: hard @@ -11329,10 +11344,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.3.585, electron-to-chromium@npm:^1.5.4": - version: 1.5.12 - resolution: "electron-to-chromium@npm:1.5.12" - checksum: 10/6e5ec71e211de06f15147f42eaf8e71bc4dd73da29ce6611046a57614b7d220ffd8671b4fb424161f278498bb47880fccf7648ccbfb8b019e34d38db43520cea +"electron-to-chromium@npm:^1.3.585, electron-to-chromium@npm:^1.5.28": + version: 1.5.29 + resolution: "electron-to-chromium@npm:1.5.29" + checksum: 10/a87354db605ffdb89618c328ecc492846f8685f5ba040b9c8b511ef7a1a8e0c8999eb1ce2ea7bac30624637200f31dd1da5dc0cb3b2841ea828790f894a9ec37 languageName: node linkType: hard @@ -11404,30 +11419,30 @@ __metadata: linkType: hard "embla-carousel-react@npm:^8.1.6": - version: 8.2.0 - resolution: "embla-carousel-react@npm:8.2.0" + version: 8.3.0 + resolution: "embla-carousel-react@npm:8.3.0" dependencies: - embla-carousel: "npm:8.2.0" - embla-carousel-reactive-utils: "npm:8.2.0" + embla-carousel: "npm:8.3.0" + embla-carousel-reactive-utils: "npm:8.3.0" peerDependencies: react: ^16.8.0 || ^17.0.1 || ^18.0.0 - checksum: 10/388a11e2ee7a7a09ac3a4001d3dd9d2c77b15bf9028e9fc90b89e96bfc08fb7a4a3df54e7ddf3a1f8e3d844a2d095e49fd73eb89c38bc90c7e0b10671e3582e2 + checksum: 10/48b71504208741d051f09d26ec7925c4470c0c7b9dce1275079d1ab1a32f7892456b953df2836f1be7555061aaac595509d78ab12c0e1370dd7f77df682639f6 languageName: node linkType: hard -"embla-carousel-reactive-utils@npm:8.2.0": - version: 8.2.0 - resolution: "embla-carousel-reactive-utils@npm:8.2.0" +"embla-carousel-reactive-utils@npm:8.3.0": + version: 8.3.0 + resolution: "embla-carousel-reactive-utils@npm:8.3.0" peerDependencies: - embla-carousel: 8.2.0 - checksum: 10/34a189543e476582dd5af1cf3d3bdd8bfea3faf47a90f04a642c4d65eefd699377cf65380619b7b98365a02a0eba5e75a2b716ef09c6fea8a703521a8ca47eab + embla-carousel: 8.3.0 + checksum: 10/8d1db9a65455dbbee4de7e163c470b2a7552dee13153e95c8754d37389e29dbd03b9a7b11018c84ed59b4db616846cf39de8ea828f50945ab9ea1e99fe9e7289 languageName: node linkType: hard -"embla-carousel@npm:8.2.0": - version: 8.2.0 - resolution: "embla-carousel@npm:8.2.0" - checksum: 10/18cd9d06573c27f14523ec0d33cbbcc091492aff42f69b3f53265c5ff3d2fd3da89ad7ea9ae54d398d440723f6c764d0d5936c35a1975f2410143ca6f55064ce +"embla-carousel@npm:8.3.0": + version: 8.3.0 + resolution: "embla-carousel@npm:8.3.0" + checksum: 10/939db8fbe604f1d46a1c3150bf8be7f5a566924e426a02762c0c97dcf474973fdb128a113d96a57e953753657fb69298f31247e7dfbc4d820fbb691c54502249 languageName: node linkType: hard @@ -11443,13 +11458,13 @@ __metadata: linkType: hard "emoji-picker-react@npm:^4.4.9": - version: 4.11.1 - resolution: "emoji-picker-react@npm:4.11.1" + version: 4.12.0 + resolution: "emoji-picker-react@npm:4.12.0" dependencies: flairup: "npm:1.0.0" peerDependencies: react: ">=16" - checksum: 10/86a9b8d157ceba2151c9fd2702fc0800883a56125b341a137af6ce32b68f17d3e16864bd1d12e9b27153ef5ff67b468759fd99b87796e94958f9a22630503bd9 + checksum: 10/618ca31591be1ff9e9113dbe9ba604ac9fc1d1647bf50dc7024e9bf672fdf2523ae4cacf10a628195ae4f37674f518e2ccdbe56e1a485f9d8419c5085a715fd9 languageName: node linkType: hard @@ -11481,6 +11496,13 @@ __metadata: languageName: node linkType: hard +"encodeurl@npm:~2.0.0": + version: 2.0.0 + resolution: "encodeurl@npm:2.0.0" + checksum: 10/abf5cd51b78082cf8af7be6785813c33b6df2068ce5191a40ca8b1afe6a86f9230af9a9ce694a5ce4665955e5c1120871826df9c128a642e09c58d592e2807fe + languageName: node + linkType: hard + "encoding-down@npm:^6.3.0": version: 6.3.0 resolution: "encoding-down@npm:6.3.0" @@ -11511,16 +11533,16 @@ __metadata: languageName: node linkType: hard -"engine.io-client@npm:~6.5.2": - version: 6.5.4 - resolution: "engine.io-client@npm:6.5.4" +"engine.io-client@npm:~6.6.1": + version: 6.6.1 + resolution: "engine.io-client@npm:6.6.1" dependencies: "@socket.io/component-emitter": "npm:~3.1.0" debug: "npm:~4.3.1" engine.io-parser: "npm:~5.2.1" ws: "npm:~8.17.1" - xmlhttprequest-ssl: "npm:~2.0.0" - checksum: 10/a91b97cd80e6b048e24887ccac53b143d08ea91c76335870a4aee1427394ba01a7e78ed8d64e518a42fdb297b331ffa80e50fdd26dbc5a08364ea715bf367c59 + xmlhttprequest-ssl: "npm:~2.1.1" + checksum: 10/9346c3ee60ebb7a58966e927e479b8b3c5d6bc82788ad5efc38b976c4a3b2b27420d08cb29b84de8213004d49bdeed47ecd473b427498e54301a8853cd85e0c9 languageName: node linkType: hard @@ -11531,7 +11553,7 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.17.0": +"enhanced-resolve@npm:^5.17.1": version: 5.17.1 resolution: "enhanced-resolve@npm:5.17.1" dependencies: @@ -11915,10 +11937,10 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.1.1, escalade@npm:^3.1.2": - version: 3.1.2 - resolution: "escalade@npm:3.1.2" - checksum: 10/a1e07fea2f15663c30e40b9193d658397846ffe28ce0a3e4da0d8e485fedfeca228ab846aee101a05015829adf39f9934ff45b2a3fca47bed37a29646bd05cd3 +"escalade@npm:^3.1.1, escalade@npm:^3.2.0": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 10/9d7169e3965b2f9ae46971afa392f6e5a25545ea30f2e2dd99c9b0a95a3f52b5653681a84f5b2911a413ddad2d7a93d3514165072f349b5ffc59c75a899970d6 languageName: node linkType: hard @@ -11953,11 +11975,11 @@ __metadata: linkType: hard "eslint-plugin-react-refresh@npm:^0.4.6": - version: 0.4.9 - resolution: "eslint-plugin-react-refresh@npm:0.4.9" + version: 0.4.12 + resolution: "eslint-plugin-react-refresh@npm:0.4.12" peerDependencies: eslint: ">=7" - checksum: 10/4a8fad22270ff2bba86bc34973228334194739b3b64dab0a13e35f1a55f8e0a66ab8861520c86f3acc3ecb3701c5bb68eca9f1f8f8a6144c17ef511ab07e02bc + checksum: 10/448d0a387ca4d7913534ac7bee3e7b8708236a6cef4cccf9a50e739d6d3c8d236cdbd7e360ea643c7767092a93acf30a8e5fac91f05b175c45d20ce138947bcc languageName: node linkType: hard @@ -11989,14 +12011,14 @@ __metadata: linkType: hard "eslint@npm:^8.57.0": - version: 8.57.0 - resolution: "eslint@npm:8.57.0" + version: 8.57.1 + resolution: "eslint@npm:8.57.1" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" "@eslint-community/regexpp": "npm:^4.6.1" "@eslint/eslintrc": "npm:^2.1.4" - "@eslint/js": "npm:8.57.0" - "@humanwhocodes/config-array": "npm:^0.11.14" + "@eslint/js": "npm:8.57.1" + "@humanwhocodes/config-array": "npm:^0.13.0" "@humanwhocodes/module-importer": "npm:^1.0.1" "@nodelib/fs.walk": "npm:^1.2.8" "@ungap/structured-clone": "npm:^1.2.0" @@ -12032,7 +12054,7 @@ __metadata: text-table: "npm:^0.2.0" bin: eslint: bin/eslint.js - checksum: 10/00496e218b23747a7a9817bf58b522276d0dc1f2e546dceb4eea49f9871574088f72f1f069a6b560ef537efa3a75261b8ef70e51ef19033da1cc4c86a755ef15 + checksum: 10/5504fa24879afdd9f9929b2fbfc2ee9b9441a3d464efd9790fbda5f05738858530182029f13323add68d19fec749d3ab4a70320ded091ca4432b1e9cc4ed104c languageName: node linkType: hard @@ -12474,41 +12496,41 @@ __metadata: linkType: hard "express@npm:^4.14.0": - version: 4.19.2 - resolution: "express@npm:4.19.2" + version: 4.21.0 + resolution: "express@npm:4.21.0" dependencies: accepts: "npm:~1.3.8" array-flatten: "npm:1.1.1" - body-parser: "npm:1.20.2" + body-parser: "npm:1.20.3" content-disposition: "npm:0.5.4" content-type: "npm:~1.0.4" cookie: "npm:0.6.0" cookie-signature: "npm:1.0.6" debug: "npm:2.6.9" depd: "npm:2.0.0" - encodeurl: "npm:~1.0.2" + encodeurl: "npm:~2.0.0" escape-html: "npm:~1.0.3" etag: "npm:~1.8.1" - finalhandler: "npm:1.2.0" + finalhandler: "npm:1.3.1" fresh: "npm:0.5.2" http-errors: "npm:2.0.0" - merge-descriptors: "npm:1.0.1" + merge-descriptors: "npm:1.0.3" methods: "npm:~1.1.2" on-finished: "npm:2.4.1" parseurl: "npm:~1.3.3" - path-to-regexp: "npm:0.1.7" + path-to-regexp: "npm:0.1.10" proxy-addr: "npm:~2.0.7" - qs: "npm:6.11.0" + qs: "npm:6.13.0" range-parser: "npm:~1.2.1" safe-buffer: "npm:5.2.1" - send: "npm:0.18.0" - serve-static: "npm:1.15.0" + send: "npm:0.19.0" + serve-static: "npm:1.16.2" setprototypeof: "npm:1.2.0" statuses: "npm:2.0.1" type-is: "npm:~1.6.18" utils-merge: "npm:1.0.1" vary: "npm:~1.1.2" - checksum: 10/3fcd792536f802c059789ef48db3851b87e78fba103423e524144d79af37da7952a2b8d4e1a007f423329c7377d686d9476ac42e7d9ea413b80345d495e30a3a + checksum: 10/3b1ee5bc5b1bd996f688702519cebc9b63a24e506965f6e1773268238cfa2c24ffdb38cc3fcb4fde66f77de1c0bebd9ee058dad06bb9c6f084b525f3c09164d3 languageName: node linkType: hard @@ -12621,9 +12643,9 @@ __metadata: linkType: hard "fast-uri@npm:^3.0.1": - version: 3.0.1 - resolution: "fast-uri@npm:3.0.1" - checksum: 10/e8ee4712270de0d29eb0fbf41ffad0ac80952e8797be760e8bb62c4707f08f50a86fe2d7829681ca133c07d6eb4b4a75389a5fc36674c5b254a3ac0891a68fc7 + version: 3.0.2 + resolution: "fast-uri@npm:3.0.2" + checksum: 10/99224f0198e24a4072b9a8a25fc5fa553aa0153e00d29d41272096a6d97be417c9faa5978682868cbba46b09066dc9348563c7244057f3818067e7737db153b2 languageName: node linkType: hard @@ -12733,18 +12755,18 @@ __metadata: languageName: node linkType: hard -"finalhandler@npm:1.2.0": - version: 1.2.0 - resolution: "finalhandler@npm:1.2.0" +"finalhandler@npm:1.3.1": + version: 1.3.1 + resolution: "finalhandler@npm:1.3.1" dependencies: debug: "npm:2.6.9" - encodeurl: "npm:~1.0.2" + encodeurl: "npm:~2.0.0" escape-html: "npm:~1.0.3" on-finished: "npm:2.4.1" parseurl: "npm:~1.3.3" statuses: "npm:2.0.1" unpipe: "npm:~1.0.0" - checksum: 10/635718cb203c6d18e6b48dfbb6c54ccb08ea470e4f474ddcef38c47edcf3227feec316f886dd701235997d8af35240cae49856721ce18f539ad038665ebbf163 + checksum: 10/4babe72969b7373b5842bc9f75c3a641a4d0f8eb53af6b89fa714d4460ce03fb92b28de751d12ba415e96e7e02870c436d67412120555e2b382640535697305b languageName: node linkType: hard @@ -12776,37 +12798,37 @@ __metadata: linkType: hard "firebase@npm:^10.12.2": - version: 10.13.0 - resolution: "firebase@npm:10.13.0" - dependencies: - "@firebase/analytics": "npm:0.10.7" - "@firebase/analytics-compat": "npm:0.2.13" - "@firebase/app": "npm:0.10.9" - "@firebase/app-check": "npm:0.8.7" - "@firebase/app-check-compat": "npm:0.3.14" - "@firebase/app-compat": "npm:0.2.39" + version: 10.13.2 + resolution: "firebase@npm:10.13.2" + dependencies: + "@firebase/analytics": "npm:0.10.8" + "@firebase/analytics-compat": "npm:0.2.14" + "@firebase/app": "npm:0.10.11" + "@firebase/app-check": "npm:0.8.8" + "@firebase/app-check-compat": "npm:0.3.15" + "@firebase/app-compat": "npm:0.2.41" "@firebase/app-types": "npm:0.9.2" - "@firebase/auth": "npm:1.7.7" - "@firebase/auth-compat": "npm:0.5.12" - "@firebase/database": "npm:1.0.7" - "@firebase/database-compat": "npm:1.0.7" - "@firebase/firestore": "npm:4.7.0" - "@firebase/firestore-compat": "npm:0.3.35" - "@firebase/functions": "npm:0.11.6" - "@firebase/functions-compat": "npm:0.3.12" - "@firebase/installations": "npm:0.6.8" - "@firebase/installations-compat": "npm:0.2.8" - "@firebase/messaging": "npm:0.12.10" - "@firebase/messaging-compat": "npm:0.2.10" - "@firebase/performance": "npm:0.6.8" - "@firebase/performance-compat": "npm:0.2.8" - "@firebase/remote-config": "npm:0.4.8" - "@firebase/remote-config-compat": "npm:0.2.8" - "@firebase/storage": "npm:0.13.0" - "@firebase/storage-compat": "npm:0.3.10" - "@firebase/util": "npm:1.9.7" - "@firebase/vertexai-preview": "npm:0.0.3" - checksum: 10/dd4d62acb3146cb96f88a98eead8a5a02ef42dc5f5a918bbf496f2f894a048ff9aef64b79f2dc8909995b7d3ad2d4d36d6a72add7c8ef3ee46cb811641fc572a + "@firebase/auth": "npm:1.7.9" + "@firebase/auth-compat": "npm:0.5.14" + "@firebase/database": "npm:1.0.8" + "@firebase/database-compat": "npm:1.0.8" + "@firebase/firestore": "npm:4.7.2" + "@firebase/firestore-compat": "npm:0.3.37" + "@firebase/functions": "npm:0.11.8" + "@firebase/functions-compat": "npm:0.3.14" + "@firebase/installations": "npm:0.6.9" + "@firebase/installations-compat": "npm:0.2.9" + "@firebase/messaging": "npm:0.12.11" + "@firebase/messaging-compat": "npm:0.2.11" + "@firebase/performance": "npm:0.6.9" + "@firebase/performance-compat": "npm:0.2.9" + "@firebase/remote-config": "npm:0.4.9" + "@firebase/remote-config-compat": "npm:0.2.9" + "@firebase/storage": "npm:0.13.2" + "@firebase/storage-compat": "npm:0.3.12" + "@firebase/util": "npm:1.10.0" + "@firebase/vertexai-preview": "npm:0.0.4" + checksum: 10/c91a047b34f3e2a0b0f563a4b9b4aca4887c0052f82819384acc482c1523c83c108d47eb8a96aa2adce94e07d0f9eeabbd7fd4d2b4fde1e2706fb90a6aea2db1 languageName: node linkType: hard @@ -12843,12 +12865,12 @@ __metadata: linkType: hard "follow-redirects@npm:^1.14.0, follow-redirects@npm:^1.14.9, follow-redirects@npm:^1.15.6": - version: 1.15.6 - resolution: "follow-redirects@npm:1.15.6" + version: 1.15.9 + resolution: "follow-redirects@npm:1.15.9" peerDependenciesMeta: debug: optional: true - checksum: 10/70c7612c4cab18e546e36b991bbf8009a1a41cf85354afe04b113d1117569abf760269409cb3eb842d9f7b03d62826687086b081c566ea7b1e6613cf29030bf7 + checksum: 10/e3ab42d1097e90d28b913903841e6779eb969b62a64706a3eb983e894a5db000fbd89296f45f08885a0e54cd558ef62e81be1165da9be25a6c44920da10f424c languageName: node linkType: hard @@ -13158,12 +13180,12 @@ __metadata: linkType: hard "gif-picker-react@npm:^1.1.0": - version: 1.3.3 - resolution: "gif-picker-react@npm:1.3.3" + version: 1.4.0 + resolution: "gif-picker-react@npm:1.4.0" peerDependencies: react: ">=17" react-dom: ">=17" - checksum: 10/f398bc89d6eb166bf443199fd5370afc5ce5fcf4507bb0383bea6aa064bba482db2c7f106e133b5af39de1039bcdeb19456f1858963af5f2213cf6d644ea6b4d + checksum: 10/c8d21fd77f50087c86cde37434f5786cfb09c6b29a2019fb5eb3eb6ae34661fe7fc44ab115198dff78bb366cc11a96f3dd88247264ed120e5fbd1fae2c307206 languageName: node linkType: hard @@ -13406,7 +13428,7 @@ __metadata: languageName: node linkType: hard -"h3@npm:^1.10.2, h3@npm:^1.11.1": +"h3@npm:^1.12.0": version: 1.12.0 resolution: "h3@npm:1.12.0" dependencies: @@ -13604,9 +13626,9 @@ __metadata: linkType: hard "hls.js@npm:^1.4.12": - version: 1.5.14 - resolution: "hls.js@npm:1.5.14" - checksum: 10/4d8c8fee1f39374dd51535f64d28336d1863185ad131ccbfa7d5dc10f0ef53521caa937f61e331ffa39942b55dbfbe131d3abd50f88bfc21bd0af7267d173e94 + version: 1.5.15 + resolution: "hls.js@npm:1.5.15" + checksum: 10/58dd5c70e233a3d66ebba9f55bfbe6673ac9d941d391afd896d44e7a141cba931fd25c392133c13f65fbd82e85e1575ada68a2722d1da38b6ad7b9b6a93a6a6b languageName: node linkType: hard @@ -14379,11 +14401,11 @@ __metadata: linkType: hard "is-core-module@npm:^2.13.0": - version: 2.15.0 - resolution: "is-core-module@npm:2.15.0" + version: 2.15.1 + resolution: "is-core-module@npm:2.15.1" dependencies: hasown: "npm:^2.0.2" - checksum: 10/70e962543e5d3a97c07cb29144a86792d545a21f28e67da5401d85878a0193d46fbab8d97bc3ca680e2778705dca66e7b6ca840c493497a27ca0e8c5f3ac3d1d + checksum: 10/77316d5891d5743854bcef2cd2f24c5458fb69fbc9705c12ca17d54a2017a67d0693bbf1ba8c77af376c0eef6bf6d1b27a4ab08e4db4e69914c3789bdf2ceec5 languageName: node linkType: hard @@ -14869,15 +14891,6 @@ __metadata: languageName: node linkType: hard -"it-pushable@npm:^3.2.3": - version: 3.2.3 - resolution: "it-pushable@npm:3.2.3" - dependencies: - p-defer: "npm:^4.0.0" - checksum: 10/173e031e9cba9493d21ad9823f070c7b665ce711fdb41bbe6451c20bef4b9bb0bfefa41020a2d2fe39f7eb979dd87c4d91f235bfa39869b5f6eecec9debb15b7 - languageName: node - linkType: hard - "it-reader@npm:^2.0.0": version: 2.1.0 resolution: "it-reader@npm:2.1.0" @@ -14894,13 +14907,6 @@ __metadata: languageName: node linkType: hard -"it-stream-types@npm:^2.0.1": - version: 2.0.1 - resolution: "it-stream-types@npm:2.0.1" - checksum: 10/06193e2f7c7a9e9c1cea430884e24fd769670c2ddc897bf7a3e424bd048fa1f8da280ee3c1c404fdab5667f434002b2f45d5ff5cebdccbc41ca1516a0ae11907 - languageName: node - linkType: hard - "it-tar@npm:^1.2.2": version: 1.2.2 resolution: "it-tar@npm:1.2.2" @@ -14998,12 +15004,12 @@ __metadata: languageName: node linkType: hard -"jiti@npm:^1.21.0": - version: 1.21.6 - resolution: "jiti@npm:1.21.6" +"jiti@npm:^2.0.0": + version: 2.0.0 + resolution: "jiti@npm:2.0.0" bin: - jiti: bin/jiti.js - checksum: 10/289b124cea411c130a14ffe88e3d38376ab44b6695616dfa0a1f32176a8f20ec90cdd6d2b9d81450fc6467cfa4d865f04f49b98452bff0f812bc400fd0ae78d6 + jiti: lib/jiti-cli.mjs + checksum: 10/2fdb08483c7beb1f75449b721bc0273d3eeb9008d2a3031ed24437c0e6b599813d6b531d5380331396df6f52db16f5a1c7657bfaeecee19d2e07e6f7753e7fa1 languageName: node linkType: hard @@ -15583,31 +15589,31 @@ __metadata: linkType: hard "listhen@npm:^1.7.2": - version: 1.7.2 - resolution: "listhen@npm:1.7.2" + version: 1.8.0 + resolution: "listhen@npm:1.8.0" dependencies: "@parcel/watcher": "npm:^2.4.1" "@parcel/watcher-wasm": "npm:^2.4.1" citty: "npm:^0.1.6" clipboardy: "npm:^4.0.0" consola: "npm:^3.2.3" - crossws: "npm:^0.2.0" + crossws: "npm:^0.2.4" defu: "npm:^6.1.4" get-port-please: "npm:^3.1.2" - h3: "npm:^1.10.2" + h3: "npm:^1.12.0" http-shutdown: "npm:^1.2.2" - jiti: "npm:^1.21.0" - mlly: "npm:^1.6.1" + jiti: "npm:^2.0.0" + mlly: "npm:^1.7.1" node-forge: "npm:^1.3.1" pathe: "npm:^1.1.2" std-env: "npm:^3.7.0" - ufo: "npm:^1.4.0" + ufo: "npm:^1.5.4" untun: "npm:^0.1.3" uqr: "npm:^0.1.2" bin: listen: bin/listhen.mjs listhen: bin/listhen.mjs - checksum: 10/42634382736042709a58e3c10fad3b99c9750252e5ba14314092bc9d47be27cd9e5ce9449dc631f479d68299db6c4c90afb93b833b3d8a94a8dc99c19c6f888b + checksum: 10/79fba7a69c971fbd67226b52f44367e9bd3a2e587dce3df620509ca101d7c5e7cb2ac386a669dedf353831a6ea61279764082f6160bf8f789a14662444baa24b languageName: node linkType: hard @@ -15885,9 +15891,9 @@ __metadata: linkType: hard "loglevel@npm:^1.7.0, loglevel@npm:^1.8.0": - version: 1.9.1 - resolution: "loglevel@npm:1.9.1" - checksum: 10/863cbbcddf850a937482c604e2d11586574a5110b746bb49c7cc04739e01f6035f6db841d25377106dd330bca7142d74995f15a97c5f3ea0af86d9472d4a99f4 + version: 1.9.2 + resolution: "loglevel@npm:1.9.2" + checksum: 10/6153d8db308323f7ee20130bc40309e7a976c30a10379d8666b596d9c6441965c3e074c8d7ee3347fe5cfc059c0375b6f3e8a10b93d5b813cc5547f5aa412a29 languageName: node linkType: hard @@ -15965,7 +15971,7 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^10.0.1, lru-cache@npm:^10.1.0, lru-cache@npm:^10.2.0": +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.1.0, lru-cache@npm:^10.2.0, lru-cache@npm:^10.4.3": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" checksum: 10/e6e90267360476720fa8e83cc168aa2bf0311f3f2eea20a6ba78b90a885ae72071d9db132f40fda4129c803e7dcec3a6b6a6fbb44ca90b081630b810b5d6a41a @@ -16006,7 +16012,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.10, magic-string@npm:^0.30.3": +"magic-string@npm:^0.30.11, magic-string@npm:^0.30.3": version: 0.30.11 resolution: "magic-string@npm:0.30.11" dependencies: @@ -16111,10 +16117,10 @@ __metadata: languageName: node linkType: hard -"merge-descriptors@npm:1.0.1": - version: 1.0.1 - resolution: "merge-descriptors@npm:1.0.1" - checksum: 10/5abc259d2ae25bb06d19ce2b94a21632583c74e2a9109ee1ba7fd147aa7362b380d971e0251069f8b3eb7d48c21ac839e21fa177b335e82c76ec172e30c31a26 +"merge-descriptors@npm:1.0.3": + version: 1.0.3 + resolution: "merge-descriptors@npm:1.0.3" + checksum: 10/52117adbe0313d5defa771c9993fe081e2d2df9b840597e966aadafde04ae8d0e3da46bac7ca4efc37d4d2b839436582659cd49c6a43eacb3fe3050896a105d1 languageName: node linkType: hard @@ -16190,12 +16196,12 @@ __metadata: linkType: hard "micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": - version: 4.0.7 - resolution: "micromatch@npm:4.0.7" + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" dependencies: braces: "npm:^3.0.3" picomatch: "npm:^2.3.1" - checksum: 10/a11ed1cb67dcbbe9a5fc02c4062cf8bb0157d73bf86956003af8dcfdf9b287f9e15ec0f6d6925ff6b8b5b496202335e497b01de4d95ef6cf06411bc5e5c474a0 + checksum: 10/6bf2a01672e7965eb9941d1f02044fad2bd12486b5553dc1116ff24c09a8723157601dc992e74c911d896175918448762df3b3fd0a6b61037dd1a9766ddfbf58 languageName: node linkType: hard @@ -16471,7 +16477,7 @@ __metadata: languageName: node linkType: hard -"mlly@npm:^1.6.1, mlly@npm:^1.7.1": +"mlly@npm:^1.7.1": version: 1.7.1 resolution: "mlly@npm:1.7.1" dependencies: @@ -16544,14 +16550,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 10/673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f - languageName: node - linkType: hard - -"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1": +"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: 10/aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -16697,9 +16696,9 @@ __metadata: linkType: hard "multiformats@npm:^13.0.0, multiformats@npm:^13.1.0": - version: 13.2.2 - resolution: "multiformats@npm:13.2.2" - checksum: 10/6e673320e9b06d5fdbbf2bde0d3132f13fac94fb40f36d646265b5c38eba4a28c40a2c76b4efa0c1a23517fe87320e540e9ef7f28d71c1cc3239c91bf6770ce6 + version: 13.3.0 + resolution: "multiformats@npm:13.3.0" + checksum: 10/59c75b08f54593e355b3a5b35e8693f9e3b7f04b860cf6e39aca2d2245073c8ebfdfa31ca9ee1a08fdaffdc737476484cf509f632d28048127baa962b70d23d8 languageName: node linkType: hard @@ -16869,9 +16868,9 @@ __metadata: linkType: hard "napi-wasm@npm:^1.1.0": - version: 1.1.0 - resolution: "napi-wasm@npm:1.1.0" - checksum: 10/767781f07ccaca846a6036a2df7686c9decc1b4fd6ad30ba782c94829476ec5610acc41e4caf7df94ebf0bed4abd4d34539979d0d85b025127c8a41be6259375 + version: 1.1.3 + resolution: "napi-wasm@npm:1.1.3" + checksum: 10/5cad19c3ba4c8b176453149542ea72f156be5db6d249611a76537833381f5cec802ed4d7ae5c3f7c0ef69d439c037f7247bbae7db711ed84f915be2a9fc43bb4 languageName: node linkType: hard @@ -17017,7 +17016,7 @@ __metadata: languageName: node linkType: hard -"node-fetch-native@npm:^1.6.2, node-fetch-native@npm:^1.6.3, node-fetch-native@npm:^1.6.4": +"node-fetch-native@npm:^1.6.4": version: 1.6.4 resolution: "node-fetch-native@npm:1.6.4" checksum: 10/39c4c6d0c2a4bed1444943e1647ad0d79eb6638cf159bc37dffeafd22cffcf6a998e006aa1f3dd1d9d2258db7d78dee96b44bee4ba0bbaf0440ed348794f2543 @@ -17053,13 +17052,13 @@ __metadata: linkType: hard "node-gyp-build@npm:^4.2.0, node-gyp-build@npm:^4.3.0": - version: 4.8.1 - resolution: "node-gyp-build@npm:4.8.1" + version: 4.8.2 + resolution: "node-gyp-build@npm:4.8.2" bin: node-gyp-build: bin.js node-gyp-build-optional: optional.js node-gyp-build-test: build-test.js - checksum: 10/b9297770f96a92e5f2b854f3fd5e4bd418df81d7785a81ab60cec5cf2e5e72dc2c3319808978adc572cfa3885e6b12338cb5f4034bed2cab35f0d76a4b75ccdf + checksum: 10/e3a365eed7a2d950864a1daa34527588c16fe43ae189d0aeb8fd1dfec91ba42a0e1b499322bff86c2832029fec4f5901bf26e32005e1e17a781dcd5177b6a657 languageName: node linkType: hard @@ -17109,8 +17108,8 @@ __metadata: linkType: hard "node-stdlib-browser@npm:^1.2.0": - version: 1.2.0 - resolution: "node-stdlib-browser@npm:1.2.0" + version: 1.2.1 + resolution: "node-stdlib-browser@npm:1.2.1" dependencies: assert: "npm:^2.0.0" browser-resolve: "npm:^2.0.0" @@ -17136,10 +17135,10 @@ __metadata: string_decoder: "npm:^1.0.0" timers-browserify: "npm:^2.0.4" tty-browserify: "npm:0.0.1" - url: "npm:^0.11.0" + url: "npm:^0.11.4" util: "npm:^0.12.4" vm-browserify: "npm:^1.0.1" - checksum: 10/3872da5954722fc8e8267bb58af0dbe36a85b2003e55e63e191f7cc38baf2cbff530bea42c809dfeaa0ad70c0977d0b862b4a515ad90902c1db39ff2179f9b71 + checksum: 10/0990a187ef469b60b757ef63295dc12c5825225c1ff3ac62ccea242dd653fe971b5b754cbbc157cad90779c4139e56b28e5cae0eccd45cee309863f8053203d1 languageName: node linkType: hard @@ -17284,21 +17283,21 @@ __metadata: languageName: node linkType: hard -"ofetch@npm:^1.3.3": - version: 1.3.4 - resolution: "ofetch@npm:1.3.4" +"ofetch@npm:^1.3.4": + version: 1.4.0 + resolution: "ofetch@npm:1.4.0" dependencies: destr: "npm:^2.0.3" - node-fetch-native: "npm:^1.6.3" - ufo: "npm:^1.5.3" - checksum: 10/41630a6d8adeddb03fc9a9ae435d7da58a364e84df254640a3965ae5246fd627ef752ef46bc083996c2bfafa56837f1e8c6b69f07a97b5da4fa98f2c98119c0f + node-fetch-native: "npm:^1.6.4" + ufo: "npm:^1.5.4" + checksum: 10/92af33cfb35879314c0ecdd9c15b814fd3a7dc31dbae1032492fa42767bb1afe6f2a7faa179b2c2a4482d4b30c87671ddb043bcccde7ada7499b10e5caf2eb51 languageName: node linkType: hard "ohash@npm:^1.1.3": - version: 1.1.3 - resolution: "ohash@npm:1.1.3" - checksum: 10/80a3528285f61588600c8c4f091a67f55fbc141f4eec4b3c30182468053042eef5a9684780e963f98a71ec068f3de56d42920c6417bf8f79ab14aeb75ac0bb39 + version: 1.1.4 + resolution: "ohash@npm:1.1.4" + checksum: 10/b11445234e59c9c2b00f357f8f00b6ba00e14c84fc0a232cdc14eb1d80066479b09d27af0201631e84b7a15ba7c4a1939f4cc47f2030e9bf83c9e8afc3ff7dfd languageName: node linkType: hard @@ -17403,13 +17402,6 @@ __metadata: languageName: node linkType: hard -"p-defer@npm:^4.0.0": - version: 4.0.1 - resolution: "p-defer@npm:4.0.1" - checksum: 10/a561e7b581b76e6dce8ae763b4980004dbc795781de327d0b760e5341f035b0fa2c14e892a66d6d8122e2e114815a26f5ad154061374df84f88e75405ea4b0bb - languageName: node - linkType: hard - "p-fifo@npm:^1.0.0": version: 1.0.0 resolution: "p-fifo@npm:1.0.0" @@ -17516,9 +17508,9 @@ __metadata: linkType: hard "package-json-from-dist@npm:^1.0.0": - version: 1.0.0 - resolution: "package-json-from-dist@npm:1.0.0" - checksum: 10/ac706ec856a5a03f5261e4e48fa974f24feb044d51f84f8332e2af0af04fbdbdd5bbbfb9cbbe354190409bc8307c83a9e38c6672c3c8855f709afb0006a009ea + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 10/58ee9538f2f762988433da00e26acc788036914d57c71c246bf0be1b60cdbd77dd60b6a3e1a30465f0b248aeb80079e0b34cb6050b1dfa18c06953bb1cbc7602 languageName: node linkType: hard @@ -17682,10 +17674,10 @@ __metadata: languageName: node linkType: hard -"path-to-regexp@npm:0.1.7": - version: 0.1.7 - resolution: "path-to-regexp@npm:0.1.7" - checksum: 10/701c99e1f08e3400bea4d701cf6f03517474bb1b608da71c78b1eb261415b645c5670dfae49808c89e12cea2dccd113b069f040a80de012da0400191c6dbd1c8 +"path-to-regexp@npm:0.1.10": + version: 0.1.10 + resolution: "path-to-regexp@npm:0.1.10" + checksum: 10/894e31f1b20e592732a87db61fff5b95c892a3fe430f9ab18455ebe69ee88ef86f8eb49912e261f9926fc53da9f93b46521523e33aefd9cb0a7b0d85d7096006 languageName: node linkType: hard @@ -17812,10 +17804,10 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1": - version: 1.0.1 - resolution: "picocolors@npm:1.0.1" - checksum: 10/fa68166d1f56009fc02a34cdfd112b0dd3cf1ef57667ac57281f714065558c01828cdf4f18600ad6851cbe0093952ed0660b1e0156bddf2184b6aaf5817553a5 +"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0": + version: 1.1.0 + resolution: "picocolors@npm:1.1.0" + checksum: 10/a2ad60d94d185c30f2a140b19c512547713fb89b920d32cc6cf658fa786d63a37ba7b8451872c3d9fc34883971fb6e5878e07a20b60506e0bb2554dce9169ccb languageName: node linkType: hard @@ -17885,13 +17877,13 @@ __metadata: linkType: hard "pkg-types@npm:^1.1.1": - version: 1.1.3 - resolution: "pkg-types@npm:1.1.3" + version: 1.2.0 + resolution: "pkg-types@npm:1.2.0" dependencies: confbox: "npm:^0.1.7" mlly: "npm:^1.7.1" pathe: "npm:^1.1.2" - checksum: 10/06c03ca679ea8e3a1ea7cb74e92af1a486a6081401aac35f6aa51fb6f0855cd86bbfc713f9bfdaaa730815b5ae147b4d6a838710b550c1c4b3f54a6653ff04a3 + checksum: 10/ed732842b86260395b82e31afc0dd8316e74642a78754ad148a5500ca5537565c6dfbd6c80c2dc92077afc1beb471b05a85a9572089cc8a1bba82248c331bf45 languageName: node linkType: hard @@ -17966,21 +17958,21 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.4.40, postcss@npm:^8.4.41": - version: 8.4.41 - resolution: "postcss@npm:8.4.41" +"postcss@npm:^8.4.43, postcss@npm:^8.4.47": + version: 8.4.47 + resolution: "postcss@npm:8.4.47" dependencies: nanoid: "npm:^3.3.7" - picocolors: "npm:^1.0.1" - source-map-js: "npm:^1.2.0" - checksum: 10/6e6176c2407eff60493ca60a706c6b7def20a722c3adda94ea1ece38345eb99964191336fd62b62652279cec6938e79e0b1e1d477142c8d3516e7a725a74ee37 + picocolors: "npm:^1.1.0" + source-map-js: "npm:^1.2.1" + checksum: 10/f2b50ba9b6fcb795232b6bb20de7cdc538c0025989a8ed9c4438d1960196ba3b7eaff41fdb1a5c701b3504651ea87aeb685577707f0ae4d6ce6f3eae5df79a81 languageName: node linkType: hard "preact@npm:^10.16.0": - version: 10.23.2 - resolution: "preact@npm:10.23.2" - checksum: 10/188e220a90eb5dca757a28d4a88bed0d23b1e80ea6f9e9d2447e109e754b428db62429cc65dc38214037b638323232476c59b6daec9a6eb7b780f933b010808c + version: 10.24.1 + resolution: "preact@npm:10.24.1" + checksum: 10/44084b7c1e044a76299c9d78f5ff8b60dbe94058e819c5e81d3587f80a90d7e497a52c63ffa31e56e844c54dee322ef919d3fd5d20688a37314250c06ca85f8b languageName: node linkType: hard @@ -18148,8 +18140,8 @@ __metadata: linkType: hard "protobufjs@npm:^7.2.5, protobufjs@npm:^7.2.6": - version: 7.3.2 - resolution: "protobufjs@npm:7.3.2" + version: 7.4.0 + resolution: "protobufjs@npm:7.4.0" dependencies: "@protobufjs/aspromise": "npm:^1.1.2" "@protobufjs/base64": "npm:^1.1.2" @@ -18163,7 +18155,7 @@ __metadata: "@protobufjs/utf8": "npm:^1.1.0" "@types/node": "npm:>=13.7.0" long: "npm:^5.0.0" - checksum: 10/816604aa0649a93fd5d3ef2858ef038f482d18eebcfb4201fe85c0d3bcccc12410f9e3e73262f1219e6b5bed4f27b28c3bf7c931c409dfb1fd563a304d541d89 + checksum: 10/408423506610f70858d7593632f4a6aa4f05796c90fd632be9b9252457c795acc71aa6d3b54bb7f48a890141728fee4ca3906723ccea6c202ad71f21b3879b8b languageName: node linkType: hard @@ -18242,12 +18234,12 @@ __metadata: linkType: hard "pump@npm:^3.0.0": - version: 3.0.0 - resolution: "pump@npm:3.0.0" + version: 3.0.2 + resolution: "pump@npm:3.0.2" dependencies: end-of-stream: "npm:^1.1.0" once: "npm:^1.3.1" - checksum: 10/e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 + checksum: 10/e0c4216874b96bd25ddf31a0b61a5613e26cc7afa32379217cf39d3915b0509def3565f5f6968fafdad2894c8bbdbd67d340e84f3634b2a29b950cffb6442d9f languageName: node linkType: hard @@ -18417,11 +18409,11 @@ __metadata: linkType: soft "qrcode.react@npm:^3.1.0": - version: 3.1.0 - resolution: "qrcode.react@npm:3.1.0" + version: 3.2.0 + resolution: "qrcode.react@npm:3.2.0" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10/71953241f151ca5ad4013c034cb13033e1ebad56a1db77297a7ddd7fd4d5f137f37f3be51133aeef0b54dc52d6c76630429d2269bd72e6858c3209fe42310498 + checksum: 10/00d3625f9be5333ff18b638b6bb4b2839ddddf79b71be9a8054bac5e30d78dc36ec3d77247a365ea4aaabd5c8b97f810e6ee28173523156879194079371e41b5 languageName: node linkType: hard @@ -18452,16 +18444,7 @@ __metadata: languageName: node linkType: hard -"qs@npm:6.11.0": - version: 6.11.0 - resolution: "qs@npm:6.11.0" - dependencies: - side-channel: "npm:^1.0.4" - checksum: 10/5a3bfea3e2f359ede1bfa5d2f0dbe54001aa55e40e27dc3e60fab814362d83a9b30758db057c2011b6f53a2d4e4e5150194b5bac45372652aecb3e3c0d4b256e - languageName: node - linkType: hard - -"qs@npm:^6.12.3": +"qs@npm:6.13.0, qs@npm:^6.12.3": version: 6.13.0 resolution: "qs@npm:6.13.0" dependencies: @@ -18615,8 +18598,8 @@ __metadata: linkType: hard "rc-pagination@npm:^4.2.0": - version: 4.2.0 - resolution: "rc-pagination@npm:4.2.0" + version: 4.3.0 + resolution: "rc-pagination@npm:4.3.0" dependencies: "@babel/runtime": "npm:^7.10.1" classnames: "npm:^2.3.2" @@ -18624,7 +18607,7 @@ __metadata: peerDependencies: react: ">=16.9.0" react-dom: ">=16.9.0" - checksum: 10/d0523e25dc0a5ace3cbd0b727481befa624391b688926d0130494ddef15ce513d1d85e2235fd2b4545a4906501919b359936e5bd39ad5f710f9adf8253e05699 + checksum: 10/5ffdf81ae46eccdf308d62483f5e7509a04f8fb60a5e65a2d52373db4e3f19ccf40d71d108fe8aa4c142a292d8688b1726e81fd62e922b914fcff207995fce05 languageName: node linkType: hard @@ -18908,8 +18891,8 @@ __metadata: linkType: hard "react-joyride@npm:^2.4.0": - version: 2.8.2 - resolution: "react-joyride@npm:2.8.2" + version: 2.9.2 + resolution: "react-joyride@npm:2.9.2" dependencies: "@gilbarbara/deep-equal": "npm:^0.3.1" deep-diff: "npm:^1.0.2" @@ -18921,11 +18904,11 @@ __metadata: scroll: "npm:^3.0.1" scrollparent: "npm:^2.1.0" tree-changes: "npm:^0.11.2" - type-fest: "npm:^4.18.2" + type-fest: "npm:^4.26.1" peerDependencies: react: 15 - 18 react-dom: 15 - 18 - checksum: 10/b7f4c90db0a2d996baa2e66af79f9fd57edaced11cc0c7a2194ebfeb2022cd5b06746dae00af9e41ed5183be2d7b249b1f38bae25623e885182639fefc5b894d + checksum: 10/42af3a8435f8ebf951e1659e4a34ea6b57af4fc1c6090f5d6abe651e2a6a07ab025dbc4f64db574f6ff8fbe4ffb76ec0d2f9a0f7bc6bea1c96c769919b78d5f2 languageName: node linkType: hard @@ -19093,26 +19076,26 @@ __metadata: linkType: hard "react-router-dom@npm:^6.9.0": - version: 6.26.1 - resolution: "react-router-dom@npm:6.26.1" + version: 6.26.2 + resolution: "react-router-dom@npm:6.26.2" dependencies: - "@remix-run/router": "npm:1.19.1" - react-router: "npm:6.26.1" + "@remix-run/router": "npm:1.19.2" + react-router: "npm:6.26.2" peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 10/1bd255d1ff88f477699c72656e7c07702a907e644388a1bea1c648f2df0c3c86db2e90bea945b1d43eaf84ebab194f3868f3788502965ad5f20c508c6874f1fe + checksum: 10/4eee37839bd1a660807c090b4d272e4aa9b95d8a9a932cdcdf7c5b10735f39b6db73bad79b08a3012386a7e225ff6bf60435e2741fb7c68e137ac5a6295d4308 languageName: node linkType: hard -"react-router@npm:6.26.1": - version: 6.26.1 - resolution: "react-router@npm:6.26.1" +"react-router@npm:6.26.2": + version: 6.26.2 + resolution: "react-router@npm:6.26.2" dependencies: - "@remix-run/router": "npm:1.19.1" + "@remix-run/router": "npm:1.19.2" peerDependencies: react: ">=16.8" - checksum: 10/b3761515c75da65a1678f005d08a6285ceccd9df7237ae6fdd9ab2ab816ef328435b75610f705ecd9ecd41c6878fd22eb9b44c5391cdef2e1ed99ddbc78de8a4 + checksum: 10/496e855b53e61066c1791e354f5d79eab56a128d9722fdc6486c3ecd3b3a0bf9968e927028f429893b157f3cc10fc09e890a055847723ee242663e7995fedc9d languageName: node linkType: hard @@ -19771,27 +19754,27 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^4.13.0": - version: 4.21.0 - resolution: "rollup@npm:4.21.0" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.21.0" - "@rollup/rollup-android-arm64": "npm:4.21.0" - "@rollup/rollup-darwin-arm64": "npm:4.21.0" - "@rollup/rollup-darwin-x64": "npm:4.21.0" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.21.0" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.21.0" - "@rollup/rollup-linux-arm64-gnu": "npm:4.21.0" - "@rollup/rollup-linux-arm64-musl": "npm:4.21.0" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.21.0" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.21.0" - "@rollup/rollup-linux-s390x-gnu": "npm:4.21.0" - "@rollup/rollup-linux-x64-gnu": "npm:4.21.0" - "@rollup/rollup-linux-x64-musl": "npm:4.21.0" - "@rollup/rollup-win32-arm64-msvc": "npm:4.21.0" - "@rollup/rollup-win32-ia32-msvc": "npm:4.21.0" - "@rollup/rollup-win32-x64-msvc": "npm:4.21.0" - "@types/estree": "npm:1.0.5" +"rollup@npm:^4.20.0": + version: 4.22.5 + resolution: "rollup@npm:4.22.5" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.22.5" + "@rollup/rollup-android-arm64": "npm:4.22.5" + "@rollup/rollup-darwin-arm64": "npm:4.22.5" + "@rollup/rollup-darwin-x64": "npm:4.22.5" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.22.5" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.22.5" + "@rollup/rollup-linux-arm64-gnu": "npm:4.22.5" + "@rollup/rollup-linux-arm64-musl": "npm:4.22.5" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.22.5" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.22.5" + "@rollup/rollup-linux-s390x-gnu": "npm:4.22.5" + "@rollup/rollup-linux-x64-gnu": "npm:4.22.5" + "@rollup/rollup-linux-x64-musl": "npm:4.22.5" + "@rollup/rollup-win32-arm64-msvc": "npm:4.22.5" + "@rollup/rollup-win32-ia32-msvc": "npm:4.22.5" + "@rollup/rollup-win32-x64-msvc": "npm:4.22.5" + "@types/estree": "npm:1.0.6" fsevents: "npm:~2.3.2" dependenciesMeta: "@rollup/rollup-android-arm-eabi": @@ -19830,7 +19813,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10/27ac47d5049719249d2a44982e31f01423158a3625cabff2f2362219aee64bdc14c32572b669169c22c324c3a965044ce8f06e27eee00fd8802861cd13697f87 + checksum: 10/f34812fa982442ab71410b649630c24434b2dc02485e543607734766eb7211ce7e0a79102f27210f337af00f3617006adebb4f87fb2e9d24cac7100d0e599352 languageName: node linkType: hard @@ -19930,9 +19913,9 @@ __metadata: linkType: hard "safe-stable-stringify@npm:^2.1.0": - version: 2.4.3 - resolution: "safe-stable-stringify@npm:2.4.3" - checksum: 10/a6c192bbefe47770a11072b51b500ed29be7b1c15095371c1ee1dc13e45ce48ee3c80330214c56764d006c485b88bd0b24940d868948170dddc16eed312582d8 + version: 2.5.0 + resolution: "safe-stable-stringify@npm:2.5.0" + checksum: 10/2697fa186c17c38c3ca5309637b4ac6de2f1c3d282da27cd5e1e3c88eca0fb1f9aea568a6aabdf284111592c8782b94ee07176f17126031be72ab1313ed46c5c languageName: node linkType: hard @@ -20122,9 +20105,9 @@ __metadata: languageName: node linkType: hard -"send@npm:0.18.0": - version: 0.18.0 - resolution: "send@npm:0.18.0" +"send@npm:0.19.0": + version: 0.19.0 + resolution: "send@npm:0.19.0" dependencies: debug: "npm:2.6.9" depd: "npm:2.0.0" @@ -20139,7 +20122,7 @@ __metadata: on-finished: "npm:2.4.1" range-parser: "npm:~1.2.1" statuses: "npm:2.0.1" - checksum: 10/ec66c0ad109680ad8141d507677cfd8b4e40b9559de23191871803ed241718e99026faa46c398dcfb9250676076573bd6bfe5d0ec347f88f4b7b8533d1d391cb + checksum: 10/1f6064dea0ae4cbe4878437aedc9270c33f2a6650a77b56a16b62d057527f2766d96ee282997dd53ec0339082f2aad935bc7d989b46b48c82fc610800dc3a1d0 languageName: node linkType: hard @@ -20152,15 +20135,15 @@ __metadata: languageName: node linkType: hard -"serve-static@npm:1.15.0": - version: 1.15.0 - resolution: "serve-static@npm:1.15.0" +"serve-static@npm:1.16.2": + version: 1.16.2 + resolution: "serve-static@npm:1.16.2" dependencies: - encodeurl: "npm:~1.0.2" + encodeurl: "npm:~2.0.0" escape-html: "npm:~1.0.3" parseurl: "npm:~1.3.3" - send: "npm:0.18.0" - checksum: 10/699b2d4c29807a51d9b5e0f24955346911437aebb0178b3c4833ad30d3eca93385ff9927254f5c16da345903cad39d9cd4a532198c95a5129cc4ed43911b15a4 + send: "npm:0.19.0" + checksum: 10/7fa9d9c68090f6289976b34fc13c50ac8cd7f16ae6bce08d16459300f7fc61fbc2d7ebfa02884c073ec9d6ab9e7e704c89561882bbe338e99fcacb2912fde737 languageName: node linkType: hard @@ -20366,14 +20349,14 @@ __metadata: linkType: hard "socket.io-client@npm:^4.5.2, socket.io-client@npm:^4.7.2": - version: 4.7.5 - resolution: "socket.io-client@npm:4.7.5" + version: 4.8.0 + resolution: "socket.io-client@npm:4.8.0" dependencies: "@socket.io/component-emitter": "npm:~3.1.0" debug: "npm:~4.3.2" - engine.io-client: "npm:~6.5.2" + engine.io-client: "npm:~6.6.1" socket.io-parser: "npm:~4.2.4" - checksum: 10/a9e118081dc1669a63af3abd9defce94f85c8ed8d9146cd7a77665b5f1f78baf0b9f4155cf0fce7770856f97493416551abcba686f02778045f4768ceaafed5c + checksum: 10/98e05a6e3b19e6bae39bedbb6fd07e970e90c962b6ab9b68c4968a789be84efe40129b7f8abc73bafa31a29d444c3a0bde992131f93e7c3ddb27ef5192131e08 languageName: node linkType: hard @@ -20427,10 +20410,10 @@ __metadata: languageName: node linkType: hard -"source-map-js@npm:^1.2.0": - version: 1.2.0 - resolution: "source-map-js@npm:1.2.0" - checksum: 10/74f331cfd2d121c50790c8dd6d3c9de6be21926de80583b23b37029b0f37aefc3e019fa91f9a10a5e120c08135297e1ecf312d561459c45908cb1e0e365f49e5 +"source-map-js@npm:^1.2.0, source-map-js@npm:^1.2.1": + version: 1.2.1 + resolution: "source-map-js@npm:1.2.1" + checksum: 10/ff9d8c8bf096d534a5b7707e0382ef827b4dd360a577d3f34d2b9f48e12c9d230b5747974ee7c607f0df65113732711bb701fe9ece3c7edbd43cb2294d707df3 languageName: node linkType: hard @@ -20826,8 +20809,8 @@ __metadata: linkType: hard "styled-components@npm:>=5, styled-components@npm:^6.1.0": - version: 6.1.12 - resolution: "styled-components@npm:6.1.12" + version: 6.1.13 + resolution: "styled-components@npm:6.1.13" dependencies: "@emotion/is-prop-valid": "npm:1.2.2" "@emotion/unitless": "npm:0.8.1" @@ -20841,7 +20824,7 @@ __metadata: peerDependencies: react: ">= 16.8.0" react-dom: ">= 16.8.0" - checksum: 10/b0bcba70921f99b6d30a63ba4311b09a04da4c9c9213bc711a436bff8607387c61e588e9953897d3c99399e85dc5f1d7ab78482920bc6a610a1f883d8eb9bce8 + checksum: 10/8be7bcb156945e876f560b1bef4f2e5a6a214e53fa6e7f98cd7294c83f3cfb2d712c4561d175abcd6d331a65ef5b9b2004c916aa035ddec9633f0661d9c8205c languageName: node linkType: hard @@ -20895,13 +20878,20 @@ __metadata: languageName: node linkType: hard -"stylis@npm:4.3.2, stylis@npm:^4.3.0": +"stylis@npm:4.3.2": version: 4.3.2 resolution: "stylis@npm:4.3.2" checksum: 10/4d3e3cb5cbfc7abdf14e424c8631a15fd15cbf0357ffc641c319587e00c2d1036b1a71cb88b42411bc3ce10d7730ad3fb9789b034d11365e8a19d23f56486c77 languageName: node linkType: hard +"stylis@npm:^4.3.0": + version: 4.3.4 + resolution: "stylis@npm:4.3.4" + checksum: 10/69b902a3c9fc3329c8ddb18d422f8130068356dd4d4a20ae245953679cc88ae08d49c55e32b0b57c8fe8a76f2ed7f32697240b8db4d368a25fc2db045ebaeba8 + languageName: node + linkType: hard + "super-regex@npm:^0.2.0": version: 0.2.0 resolution: "super-regex@npm:0.2.0" @@ -21072,8 +21062,8 @@ __metadata: linkType: hard "terser@npm:^5.26.0": - version: 5.31.6 - resolution: "terser@npm:5.31.6" + version: 5.34.1 + resolution: "terser@npm:5.34.1" dependencies: "@jridgewell/source-map": "npm:^0.3.3" acorn: "npm:^8.8.2" @@ -21081,7 +21071,7 @@ __metadata: source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 10/78057c58025151c9bdad82a050f0b51175f9fe3117d8ee369ca7effe038cdd540da2fd5985a4f8ee08dba5616e7911e1392d40670698ff42a49fec338d369e80 + checksum: 10/4389f39b5b841e2a7795ee733b54bf8fc44f8784a78c213dae32c7e6adc66c3bb258ebdcbacb8e7f1fa08fceb20bfc4ce4f7666d42bbfc29ab71126e89614c34 languageName: node linkType: hard @@ -21336,8 +21326,8 @@ __metadata: linkType: hard "tsconfck@npm:^3.0.3": - version: 3.1.1 - resolution: "tsconfck@npm:3.1.1" + version: 3.1.3 + resolution: "tsconfck@npm:3.1.3" peerDependencies: typescript: ^5.0.0 peerDependenciesMeta: @@ -21345,7 +21335,7 @@ __metadata: optional: true bin: tsconfck: bin/tsconfck.js - checksum: 10/a4456577f540212516d7eb530005893739aadd6da00787914a8ed9aa19c3f2f306b8912920aa440b9b8978f10c9dadbd062b8c2a2f0ff1f6c2d4272b5be2ef34 + checksum: 10/bf9b9b72de5b83f833f5dea8b276e77bab08e85751589f36dd23854fa3d5f7955194086fb8424df388bf232f2fc9a067d7913bfa674cb1217be0bba648ec71f2 languageName: node linkType: hard @@ -21371,9 +21361,9 @@ __metadata: linkType: hard "tslib@npm:^2.0.0, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.6.0": - version: 2.6.3 - resolution: "tslib@npm:2.6.3" - checksum: 10/52109bb681f8133a2e58142f11a50e05476de4f075ca906d13b596ae5f7f12d30c482feb0bff167ae01cfc84c5803e575a307d47938999246f5a49d174fc558c + version: 2.7.0 + resolution: "tslib@npm:2.7.0" + checksum: 10/9a5b47ddac65874fa011c20ff76db69f97cf90c78cff5934799ab8894a5342db2d17b4e7613a087046bc1d133d21547ddff87ac558abeec31ffa929c88b7fce6 languageName: node linkType: hard @@ -21459,10 +21449,10 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^4.18.2": - version: 4.25.0 - resolution: "type-fest@npm:4.25.0" - checksum: 10/16ddf51dbfeef45e6f0a139c16f06d6cd05b61be76b048c41e79997f150a66422219d7ec10a2717ab926505402d59b1ddc8560f5f6c245e1b8a35971c2f1b754 +"type-fest@npm:^4.26.1": + version: 4.26.1 + resolution: "type-fest@npm:4.26.1" + checksum: 10/b82676194f80af228cb852e320d2ea8381c89d667d2e4d9f2bdfc8f254bccc039c7741a90c53617a4de0c9fdca8265ed18eb0888cd628f391c5c381c33a9f94b languageName: node linkType: hard @@ -21505,22 +21495,22 @@ __metadata: linkType: hard "typescript@npm:^5.2.2": - version: 5.5.4 - resolution: "typescript@npm:5.5.4" + version: 5.6.2 + resolution: "typescript@npm:5.6.2" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10/1689ccafef894825481fc3d856b4834ba3cc185a9c2878f3c76a9a1ef81af04194849840f3c69e7961e2312771471bb3b460ca92561e1d87599b26c37d0ffb6f + checksum: 10/f95365d4898f357823e93d334ecda9fcade54f009b397c7d05b7621cd9e865981033cf89ccde0f3e3a7b73b1fdbae18e92bc77db237b43e912f053fef0f9a53b languageName: node linkType: hard "typescript@patch:typescript@npm%3A^5.2.2#optional!builtin": - version: 5.5.4 - resolution: "typescript@patch:typescript@npm%3A5.5.4#optional!builtin::version=5.5.4&hash=b45daf" + version: 5.6.2 + resolution: "typescript@patch:typescript@npm%3A5.6.2#optional!builtin::version=5.6.2&hash=b45daf" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10/2c065f0ef81855eac25c9b658a3c9da65ffc005260c12854c2286f40f3667e1b1ecf8bdbdd37b59aa0397920378ce7900bff8cb32e0f1c7af6fd86efc676718c + checksum: 10/060a7349adf698477b411be4ace470aee6c2c1bd99917fdf5d33697c17ec55c64fe724eb10399387530b50e9913b41528dd8bfcca0a5fc8f8bac63fbb4580a2e languageName: node linkType: hard @@ -21542,7 +21532,7 @@ __metadata: languageName: node linkType: hard -"ufo@npm:^1.4.0, ufo@npm:^1.5.3": +"ufo@npm:^1.5.3, ufo@npm:^1.5.4": version: 1.5.4 resolution: "ufo@npm:1.5.4" checksum: 10/a885ed421e656aea6ca64e9727b8118a9488715460b6f1a0f0427118adfe2f2830fe7c1d5bd9c5c754a332e6807516551cd663ea67ce9ed6a4e3edc739916335 @@ -21559,7 +21549,7 @@ __metadata: languageName: node linkType: hard -"uint8arraylist@npm:^2.0.0, uint8arraylist@npm:^2.4.8": +"uint8arraylist@npm:^2.0.0": version: 2.4.8 resolution: "uint8arraylist@npm:2.4.8" dependencies: @@ -21644,7 +21634,14 @@ __metadata: languageName: node linkType: hard -"undici@npm:5.28.4, undici@npm:^5.12.0": +"undici@npm:6.19.7": + version: 6.19.7 + resolution: "undici@npm:6.19.7" + checksum: 10/77fb8b0377388f6dba8244b015841318d621031211b4f3c2273d809304b77ec44adeba4b89dfd6708bdc044190e18f068e5b231882ef15d057d4624e46f544e3 + languageName: node + linkType: hard + +"undici@npm:^5.12.0": version: 5.28.4 resolution: "undici@npm:5.28.4" dependencies: @@ -21713,33 +21710,33 @@ __metadata: linkType: hard "unstorage@npm:^1.9.0": - version: 1.10.2 - resolution: "unstorage@npm:1.10.2" + version: 1.12.0 + resolution: "unstorage@npm:1.12.0" dependencies: anymatch: "npm:^3.1.3" chokidar: "npm:^3.6.0" destr: "npm:^2.0.3" - h3: "npm:^1.11.1" + h3: "npm:^1.12.0" listhen: "npm:^1.7.2" - lru-cache: "npm:^10.2.0" + lru-cache: "npm:^10.4.3" mri: "npm:^1.2.0" - node-fetch-native: "npm:^1.6.2" - ofetch: "npm:^1.3.3" - ufo: "npm:^1.4.0" + node-fetch-native: "npm:^1.6.4" + ofetch: "npm:^1.3.4" + ufo: "npm:^1.5.4" peerDependencies: - "@azure/app-configuration": ^1.5.0 - "@azure/cosmos": ^4.0.0 + "@azure/app-configuration": ^1.7.0 + "@azure/cosmos": ^4.1.1 "@azure/data-tables": ^13.2.2 - "@azure/identity": ^4.0.1 + "@azure/identity": ^4.4.1 "@azure/keyvault-secrets": ^4.8.0 - "@azure/storage-blob": ^12.17.0 - "@capacitor/preferences": ^5.0.7 + "@azure/storage-blob": ^12.24.0 + "@capacitor/preferences": ^6.0.2 "@netlify/blobs": ^6.5.0 || ^7.0.0 - "@planetscale/database": ^1.16.0 - "@upstash/redis": ^1.28.4 + "@planetscale/database": ^1.19.0 + "@upstash/redis": ^1.34.0 "@vercel/kv": ^1.0.1 idb-keyval: ^6.2.1 - ioredis: ^5.3.2 + ioredis: ^5.4.1 peerDependenciesMeta: "@azure/app-configuration": optional: true @@ -21767,7 +21764,7 @@ __metadata: optional: true ioredis: optional: true - checksum: 10/2ed14d4755447fbb383e98294ca383ec19fdcfbff1c6a46a6d5cf3c322e2f77eb9b71e8a135338daa32229adb6d087076c5321d44674bf1fd6df0b3e00b10f78 + checksum: 10/b648d79e9913a87152228a080355d9ccf780900eb78bd32f8dab9cc55eb66ab45876e9fc1ed49f1c7a4171600e78c33430e2527740d991df9d071872409b9c37 languageName: node linkType: hard @@ -21785,16 +21782,16 @@ __metadata: linkType: hard "update-browserslist-db@npm:^1.1.0": - version: 1.1.0 - resolution: "update-browserslist-db@npm:1.1.0" + version: 1.1.1 + resolution: "update-browserslist-db@npm:1.1.1" dependencies: - escalade: "npm:^3.1.2" - picocolors: "npm:^1.0.1" + escalade: "npm:^3.2.0" + picocolors: "npm:^1.1.0" peerDependencies: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 10/d70b9efeaf4601aadb1a4f6456a7a5d9118e0063d995866b8e0c5e0cf559482671dab6ce7b079f9536b06758a344fbd83f974b965211e1c6e8d1958540b0c24c + checksum: 10/7678dd8609750588d01aa7460e8eddf2ff9d16c2a52fb1811190e0d056390f1fdffd94db3cf8fb209cf634ab4fa9407886338711c71cc6ccade5eeb22b093734 languageName: node linkType: hard @@ -21855,7 +21852,7 @@ __metadata: languageName: node linkType: hard -"url@npm:^0.11.0": +"url@npm:^0.11.0, url@npm:^0.11.4": version: 0.11.4 resolution: "url@npm:0.11.4" dependencies: @@ -22202,13 +22199,13 @@ __metadata: linkType: hard "vite@npm:^5.2.7": - version: 5.4.1 - resolution: "vite@npm:5.4.1" + version: 5.4.8 + resolution: "vite@npm:5.4.8" dependencies: esbuild: "npm:^0.21.3" fsevents: "npm:~2.3.3" - postcss: "npm:^8.4.41" - rollup: "npm:^4.13.0" + postcss: "npm:^8.4.43" + rollup: "npm:^4.20.0" peerDependencies: "@types/node": ^18.0.0 || >=20.0.0 less: "*" @@ -22240,7 +22237,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10/1cf22e5a8ec782ea9417a77ad4b16e518f69cf23c99a5af5bb92dc4acbfce70109a35a35faea8fc0789f4637b6304618f6b84e4c5dfe3c9c2875dff7d749b02d + checksum: 10/17fdffa558abaf854f04ead7d3ddd76e4556a59871f9ac63cca3fc20a79979984837d8dddaae4b171e3d73061f781e4eec0f6d3babdbce2b4d111d29cf474c1c languageName: node linkType: hard @@ -22604,10 +22601,9 @@ __metadata: linkType: hard "webpack@npm:^4.46.0 || ^5.0.0": - version: 5.93.0 - resolution: "webpack@npm:5.93.0" + version: 5.95.0 + resolution: "webpack@npm:5.95.0" dependencies: - "@types/eslint-scope": "npm:^3.7.3" "@types/estree": "npm:^1.0.5" "@webassemblyjs/ast": "npm:^1.12.1" "@webassemblyjs/wasm-edit": "npm:^1.12.1" @@ -22616,7 +22612,7 @@ __metadata: acorn-import-attributes: "npm:^1.9.5" browserslist: "npm:^4.21.10" chrome-trace-event: "npm:^1.0.2" - enhanced-resolve: "npm:^5.17.0" + enhanced-resolve: "npm:^5.17.1" es-module-lexer: "npm:^1.2.1" eslint-scope: "npm:5.1.1" events: "npm:^3.2.0" @@ -22636,7 +22632,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 10/a48bef7a511d826db7f9ebee2c84317214923ac40cb2aabe6a649546c54a76a55fc3b91ff03c05fed22a13a176891c47bbff7fcc644c53bcbe5091555863641b + checksum: 10/0377ad3a550b041f26237c96fb55754625b0ce6bae83c1c2447e3262ad056b0b0ad770dcbb92b59f188e9a2bd56155ce910add17dcf023cfbe78bdec774380c1 languageName: node linkType: hard @@ -22959,10 +22955,10 @@ __metadata: languageName: node linkType: hard -"xmlhttprequest-ssl@npm:~2.0.0": - version: 2.0.0 - resolution: "xmlhttprequest-ssl@npm:2.0.0" - checksum: 10/3c2edfce0c49c7a494ed16c87e6897c9e3eba29763a5505526de83ddefd195d224fa5cdf41092298c99cd6ee473c9f259a0679f6ff3b8a9535dcd09900db91f9 +"xmlhttprequest-ssl@npm:~2.1.1": + version: 2.1.1 + resolution: "xmlhttprequest-ssl@npm:2.1.1" + checksum: 10/40affa3100d566709965910bb3877f5434d61a5588fef46dc896ec39f141261aafe922b5fbbaa79927f019bb8e765877563f0b2ffa69e4c8779b7666bb0c2cc1 languageName: node linkType: hard