From 15632f77b4b124e4460c50c9761f5b13861cfd09 Mon Sep 17 00:00:00 2001 From: NiftyAndy Date: Tue, 24 Sep 2024 16:48:31 -0400 Subject: [PATCH] Integrate new marketplace contract with web app --- apps/app/package.json | 1 - .../dashboard/degens/page.tsx | 4 +- .../dashboard/gamer-profile/page.tsx | 4 +- .../items/burner/_components/comics-grid.tsx | 8 +- .../items/burner/_components/items-grid.tsx | 7 +- .../items/burner/_components/machine.tsx | 22 +- .../burner/_components/satoshi-animations.tsx | 16 +- .../dashboard/items/burner/page.tsx | 30 +- .../(private-routes)/dashboard/items/page.tsx | 71 +- .../dashboard/overview/MyComics.tsx | 12 +- .../dashboard/overview/MyDegens.tsx | 4 +- .../dashboard/overview/MyItems.tsx | 21 +- .../dashboard/overview/MyStats.tsx | 1 + .../app/(public-routes)/mint-o-matic/page.tsx | 4 +- apps/app/src/components/cards/ComicCard.tsx | 2 +- apps/app/src/components/cards/ComicDetail.tsx | 2 +- .../src/components/cards/DegenCard/index.tsx | 3 +- apps/app/src/components/cards/ItemDetail.tsx | 2 +- .../src/components/cards/WearableItemCard.tsx | 2 +- .../components/cards/WearableSubItemCard.tsx | 2 +- .../DegenDialog/EquipDegenContentDialog.tsx | 10 +- .../DegenDialog/ViewTraitsContentDialog.tsx | 7 +- .../src/components/dialog/ViewComicDialog.tsx | 2 +- .../src/components/dialog/ViewItemDialog.tsx | 2 +- .../src/constants/contracts/deployments.ts | 4 +- apps/app/src/constants/contracts/index.ts | 5 +- .../constants/{comics.ts => marketplace.ts} | 2 +- apps/app/src/constants/url.ts | 20 +- apps/app/src/contexts/GamerProfileContext.tsx | 9 +- apps/app/src/contexts/IMXContext.tsx | 132 ++-- apps/app/src/contexts/NetworkContext.tsx | 38 +- apps/app/src/hooks/useComicsBalance.ts | 25 +- apps/app/src/hooks/useIMXContext.ts | 18 + apps/app/src/hooks/useImxProvider.ts | 8 +- apps/app/src/hooks/useItemsBalance.ts | 66 +- apps/app/src/hooks/useNetworkContext.ts | 4 +- .../src/types/{comic.ts => marketplace.ts} | 0 apps/app/src/types/web3.ts | 12 +- packages/imx-passport/config.ts | 10 +- packages/imx-passport/types.ts | 2 + pnpm-lock.yaml | 677 ++++-------------- 41 files changed, 425 insertions(+), 846 deletions(-) rename apps/app/src/constants/{comics.ts => marketplace.ts} (98%) create mode 100644 apps/app/src/hooks/useIMXContext.ts rename apps/app/src/types/{comic.ts => marketplace.ts} (100%) diff --git a/apps/app/package.json b/apps/app/package.json index 4cbae70c..8d339f5a 100644 --- a/apps/app/package.json +++ b/apps/app/package.json @@ -14,7 +14,6 @@ "dependencies": { "@cowprotocol/cow-sdk": "^5.4.1", "@hookform/resolvers": "^3.9.0", - "@imtbl/imx-sdk": "~3.8.2", "@mui/x-data-grid": "^7.18.0", "@nl/imx-passport": "workspace:^", "@nl/theme": "workspace:^", diff --git a/apps/app/src/app/(private-routes)/dashboard/degens/page.tsx b/apps/app/src/app/(private-routes)/dashboard/degens/page.tsx index 075d1da4..dbd2ab6d 100644 --- a/apps/app/src/app/(private-routes)/dashboard/degens/page.tsx +++ b/apps/app/src/app/(private-routes)/dashboard/degens/page.tsx @@ -22,7 +22,7 @@ import { } from '@/components/extended/DegensFilter/utils'; import RenameDegenDialogContent from '@/app/(private-routes)/dashboard/degens/_dialogs/RenameDegenDialogContent'; import SectionTitle from '@/components/sections/SectionTitle'; -import { DEGEN_BASE_API_URL, DEGEN_OPENSEA_URL, PROFILE_FAV_DEGENS_API } from '@/constants/url'; +import { DEGEN_BASE_API_URL, DEGEN_COLLECTION_URL, PROFILE_FAV_DEGENS_API } from '@/constants/url'; import { HYDRAS } from '@/constants/hydras'; import { useProfileFavDegens } from '@/hooks/useGamerProfile'; import useFetch from '@/hooks/useFetch'; @@ -321,7 +321,7 @@ const DashboardDegensPage = (): JSX.Element => { ) : dataForCurrentPage.length ? ( dataForCurrentPage.map(renderDegen) ) : !characters?.length ? ( - + { const { profile, error, loadingProfile } = useGamerProfile(); const { address } = useAccount(); const { avatarsAndFee } = useProfileAvatarFee(); - const { comicsBalance, loading: loadingComics } = useComicsBalance(); + const { comicsBalance, comicsLoading } = useIMXContext(); const { data } = useFetch(`${DEGEN_BASE_API_URL}/cache/rentals/rentables.json`); const { loadingDegens, characters, characterCount: degenCount } = useBalances(); diff --git a/apps/app/src/app/(private-routes)/dashboard/items/burner/_components/comics-grid.tsx b/apps/app/src/app/(private-routes)/dashboard/items/burner/_components/comics-grid.tsx index 31dfb758..b24e1f0d 100644 --- a/apps/app/src/app/(private-routes)/dashboard/items/burner/_components/comics-grid.tsx +++ b/apps/app/src/app/(private-routes)/dashboard/items/burner/_components/comics-grid.tsx @@ -6,8 +6,8 @@ import sum from 'lodash/sum'; import { ImageList, ImageListItem, ImageListItemBar, Skeleton, TextField, InputAdornment } from '@mui/material'; import BurnIcon from '@mui/icons-material/Whatshot'; -import useComicsBalance from '@/hooks/useComicsBalance'; -import type { Comic } from '@/types/comic'; +import useIMXContext from '@/hooks/useIMXContext'; +import type { Comic } from '@/types/marketplace'; const PREFIX = 'comics-grid'; @@ -82,7 +82,7 @@ export default function ComicsGrid({ setSelectedComics: React.Dispatch>; refreshKey: number; }) { - const { comicsBalance, loading: loadingComics } = useComicsBalance(refreshKey); + const { comicsBalance, comicsLoading } = useIMXContext(); const keyCount = useMemo(() => (burnCount.some(v => v === 0) ? 0 : Math.min(...burnCount)), [burnCount]); const itemCount = useMemo(() => sum(burnCount) - keyCount * 6, [burnCount, keyCount]); @@ -111,7 +111,7 @@ export default function ComicsGrid({ handleUpdateBurnCount(comic, newSelectedComics); }; - return loadingComics ? ( + return comicsLoading ? ( ) : ( diff --git a/apps/app/src/app/(private-routes)/dashboard/items/burner/_components/items-grid.tsx b/apps/app/src/app/(private-routes)/dashboard/items/burner/_components/items-grid.tsx index e5c9f609..afc5a9e8 100644 --- a/apps/app/src/app/(private-routes)/dashboard/items/burner/_components/items-grid.tsx +++ b/apps/app/src/app/(private-routes)/dashboard/items/burner/_components/items-grid.tsx @@ -1,9 +1,8 @@ -import { useContext } from 'react'; import { styled } from '@nl/theme'; import Image from 'next/image'; import { ImageList, ImageListItem, ImageListItemBar, Skeleton } from '@mui/material'; -import IMXContext from '@/contexts/IMXContext'; +import useIMXContext from '@/hooks/useIMXContext'; const PREFIX = 'items-grid'; @@ -50,9 +49,9 @@ const gridStyles = { }; export default function ItemsGrid({ itemCounts }: { itemCounts: number[] }) { - const imx = useContext(IMXContext); + const { itemsLoading } = useIMXContext(); - return imx.loading ? ( + return itemsLoading ? ( ) : ( diff --git a/apps/app/src/app/(private-routes)/dashboard/items/burner/_components/machine.tsx b/apps/app/src/app/(private-routes)/dashboard/items/burner/_components/machine.tsx index 919bb17e..40f329e4 100644 --- a/apps/app/src/app/(private-routes)/dashboard/items/burner/_components/machine.tsx +++ b/apps/app/src/app/(private-routes)/dashboard/items/burner/_components/machine.tsx @@ -1,20 +1,20 @@ 'use client'; -import { memo, useContext, useState } from 'react'; +import { memo, useState } from 'react'; import useInterval from '@/hooks/useInterval'; -import IMXContext, { Context } from '@/contexts/IMXContext'; +import useIMXContext from '@/hooks/useIMXContext'; import MachineFrame from './machine-frame'; -import type { Comic } from '@/types/comic'; +import type { Comic } from '@/types/marketplace'; const ComicsBurnerMachine: React.FC< React.PropsWithChildren< React.PropsWithChildren<{ + address?: `0x${string}`; burnDisabled: boolean; - imx: Context; selectedComics: Comic[]; }> > -> = memo(({ burnDisabled, imx, selectedComics }) => { +> = memo(({ address, burnDisabled, selectedComics }) => { const [count, setCount] = useState(0); useInterval(() => { @@ -25,7 +25,7 @@ const ComicsBurnerMachine: React.FC< <> - {!imx.registeredUser ? ( + {!address ? ( ) : ( <> - {!imx.registeredUser ? ( - - ) : null} + {!address ? : null} {selectedComics.length < 1 ? ( ) : null} - {imx.registeredUser && selectedComics.length > 1 ? ( + {address && selectedComics.length > 1 ? ( ) : null} @@ -74,8 +72,8 @@ const ComicsBurnerMachineWithContext = ({ burnDisabled: boolean; selectedComics: Comic[]; }) => { - const imx = useContext(IMXContext); - return ; + const { address } = useIMXContext(); + return ; }; export default ComicsBurnerMachineWithContext; diff --git a/apps/app/src/app/(private-routes)/dashboard/items/burner/_components/satoshi-animations.tsx b/apps/app/src/app/(private-routes)/dashboard/items/burner/_components/satoshi-animations.tsx index 2dee1f0c..bfe01511 100644 --- a/apps/app/src/app/(private-routes)/dashboard/items/burner/_components/satoshi-animations.tsx +++ b/apps/app/src/app/(private-routes)/dashboard/items/burner/_components/satoshi-animations.tsx @@ -1,17 +1,15 @@ -import { memo, useContext } from 'react'; -import IMXContext, { Context } from '@/contexts/IMXContext'; +import { memo } from 'react'; import SatoshiFrame from './satoshi-frame'; import SatoshiBurnAnim from './satoshi-burn-animations'; -const SatoshiAnimations: React.FC< - React.PropsWithChildren> -> = memo(({ burning, imx }) => { - return <>{burning ? : }; -}); +const SatoshiAnimations: React.FC>> = memo( + ({ burning }) => { + return <>{burning ? : }; + }, +); const SatoshiAnimationsWithContext = ({ burning = false }) => { - const imx = useContext(IMXContext); - return ; + return ; }; SatoshiAnimations.displayName = 'SatoshiAnimations'; diff --git a/apps/app/src/app/(private-routes)/dashboard/items/burner/page.tsx b/apps/app/src/app/(private-routes)/dashboard/items/burner/page.tsx index 5457d2be..33294762 100644 --- a/apps/app/src/app/(private-routes)/dashboard/items/burner/page.tsx +++ b/apps/app/src/app/(private-routes)/dashboard/items/burner/page.tsx @@ -1,15 +1,15 @@ 'use client'; -import { useCallback, useContext, useEffect, useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import { useRouter } from 'next/navigation'; import { Button } from '@mui/material'; import { type AddressLike } from 'ethers6'; -import IMXContext from '@/contexts/IMXContext'; +import useIMXContext from '@/hooks/useIMXContext'; import useNetworkContext from '@/hooks/useNetworkContext'; -import { COMICS_BURNER_CONTRACT, COMICS_CONTRACT } from '@/constants/contracts'; +import { COMICS_BURNER_CONTRACT, MARKETPLACE_CONTRACT } from '@/constants/contracts'; import { DEBUG } from '@/constants/index'; -import type { Comic } from '@/types/comic'; +import type { Comic } from '@/types/marketplace'; import Machine from './_components/machine'; import MachineButton from './_components/machine-button'; @@ -18,9 +18,11 @@ import ComicsGrid from './_components/comics-grid'; import SatoshiAnimations from './_components/satoshi-animations'; import ItemsGrid from './_components/items-grid'; +// TODO: Config Signer for MARKETPLACE_CONTRACT or add to writeContracts + const ComicsBurner = () => { const router = useRouter(); - const imx = useContext(IMXContext); + const { itemsBalance } = useIMXContext(); const { address, tx, writeContracts } = useNetworkContext(); const [isApprovedForAll, setIsApprovedForAll] = useState(false); const [helpDialogOpen, setHelpDialogOpen] = useState(false); @@ -29,23 +31,23 @@ const ComicsBurner = () => { const [burnCount, setBurnCount] = useState([0, 0, 0, 0, 0, 0]); const [burning, setBurning] = useState(false); const [refreshKey, setRefreshKey] = useState(0); - const burnDisabled = !imx.registeredUser || burning || selectedComics.length < 1 || burnCount.every(c => !c); + const burnDisabled = burning || selectedComics.length < 1 || burnCount.every(c => !c); useEffect(() => { - if (imx.itemsBalance) { - setItemsCounts(imx.itemsBalance.map(it => it.balance || 0)); + if (itemsBalance.length) { + setItemsCounts(itemsBalance.map(it => it.balance || 0)); } - }, [imx.itemsBalance]); + }, [itemsBalance]); useEffect(() => { const getAllowance = async () => { const burnContract = writeContracts[COMICS_BURNER_CONTRACT]; const burnContractAddress = await burnContract.getAddress(); - const comicsContract = writeContracts[COMICS_CONTRACT]; + const comicsContract = writeContracts[MARKETPLACE_CONTRACT]; const approved = (await comicsContract.isApprovedForAll(address as AddressLike, burnContractAddress)) as boolean; setIsApprovedForAll(approved); }; - if (writeContracts && writeContracts[COMICS_BURNER_CONTRACT] && writeContracts[COMICS_CONTRACT]) { + if (writeContracts && writeContracts[COMICS_BURNER_CONTRACT] && writeContracts[MARKETPLACE_CONTRACT]) { // eslint-disable-next-line no-void void getAllowance(); } @@ -55,7 +57,7 @@ const ComicsBurner = () => { const burnContract = writeContracts[COMICS_BURNER_CONTRACT]; if (!isApprovedForAll) { const burnContractAddress = await burnContract.getAddress(); - const comicsContract = writeContracts[COMICS_CONTRACT]; + const comicsContract = writeContracts[MARKETPLACE_CONTRACT]; await tx(comicsContract.setApprovalForAll(burnContractAddress, true)); } }, [isApprovedForAll, tx, writeContracts]); @@ -93,7 +95,7 @@ const ComicsBurner = () => { ← Back to Comics & Items - { width={135} top={45} left={-200} - /> + /> */} { const [selectedComic, setSelectedComic] = useState(null); const [selectedItem, setSelectedItem] = useState(null); const [selectedSubIndex, setSelectedSubIndex] = useState(-1); - const { comicsBalance, loading: loadingComics } = useComicsBalance(); + const { comicsBalance, comicsLoading, itemsBalance, itemsLoading } = useIMXContext(); const router = useRouter(); - const imx = useContext(IMXContext); - const { selectedNetworkId } = useNetworkContext(); const theme = useTheme(); const isTablet = useMediaQuery(theme.breakpoints.down('md')); @@ -72,14 +68,12 @@ const DashboardComicsPage = (): JSX.Element => { const handleLaunchBurner = () => router.push('items/burner'); const renderComics = useMemo(() => { - if (comicsBalance.length === 0 && loadingComics) { - if (loadingComics) { - return [...Array(6)].map(() => ( - - - - )); - } + if (comicsBalance.length === 0 && comicsLoading) { + return [...Array(6)].map(() => ( + + + + )); } else if (comicsBalance.length > 0) { return comicsBalance.map(comic => ( @@ -92,22 +86,31 @@ const DashboardComicsPage = (): JSX.Element => { )); } return null; - }, [comicsBalance, loadingComics, selectedComic]); + }, [comicsBalance, comicsLoading, selectedComic]); const renderItems = useMemo(() => { - return imx.itemsBalance - .filter(item => !selectedItem?.balance || selectedItem?.balance <= 1 || item.id !== selectedItem?.id) - .map(item => ( - - handleViewItem(item)} - isSelected={item.id === selectedItem?.id} - /> + if (itemsBalance.length === 0 && itemsLoading) { + return [...Array(6)].map(() => ( + + )); + } else if (itemsBalance.length > 0) { + return itemsBalance + .filter(item => !selectedItem?.balance || selectedItem?.balance <= 1 || item.id !== selectedItem?.id) + .map(item => ( + + handleViewItem(item)} + isSelected={item.id === selectedItem?.id} + /> + + )); + } + return null; // eslint-disable-next-line react-hooks/exhaustive-deps - }, [selectedItem, imx.itemsBalance]); + }, [itemsBalance, itemsLoading, selectedItem]); const renderSubItems = useMemo(() => { if (!selectedItem?.balance || selectedItem?.balance <= 1) return null; @@ -158,7 +161,7 @@ const DashboardComicsPage = (): JSX.Element => { {renderComics} {comicsBalance.length > 0 && ( - + {}} isNew={!comicsBalance.some(comic => comic.balance && comic.balance > 0)} @@ -207,14 +210,10 @@ const DashboardComicsPage = (): JSX.Element => { )} {renderItems} - {imx.itemsBalance.length > 0 && ( + {itemsBalance.length > 0 && ( - - {}} isNew={!imx.itemsBalance.some(it => it.balance && it.balance > 0)} /> + + {}} isNew={!itemsBalance.some(it => it.balance && it.balance > 0)} /> )} diff --git a/apps/app/src/app/(private-routes)/dashboard/overview/MyComics.tsx b/apps/app/src/app/(private-routes)/dashboard/overview/MyComics.tsx index 82b02587..9be36524 100644 --- a/apps/app/src/app/(private-routes)/dashboard/overview/MyComics.tsx +++ b/apps/app/src/app/(private-routes)/dashboard/overview/MyComics.tsx @@ -7,17 +7,17 @@ import { Box, Button, Stack } from '@mui/material'; import { useRouter } from 'next/navigation'; import ComicCard from '@/components/cards/ComicCard'; import SectionSlider from '@/components/sections/SectionSlider'; -import type { Comic } from '@/types/comic'; +import type { Comic } from '@/types/marketplace'; import EmptyState from '@/components/EmptyState'; import ViewComicDialog from '@/components/dialog/ViewComicDialog'; -import useComicsBalance from '@/hooks/useComicsBalance'; +import useIMXContext from '@/hooks/useIMXContext'; import ComicPlaceholder from '@/components/cards/Skeleton/ComicPlaceholder'; -import { COMICS_OPENSEA_URL } from '@/constants/url'; +import { COMICS_PURCHASE_URL } from '@/constants/url'; const MyComics = (): JSX.Element => { const [selectedComic, setSelectedComic] = useState(null); const router = useRouter(); - const { comicsBalance, loading } = useComicsBalance(); + const { comicsBalance, comicsLoading } = useIMXContext(); const filteredComics = useMemo( () => comicsBalance.filter(comic => comic.balance && comic.balance > 0), [comicsBalance], @@ -70,7 +70,7 @@ const MyComics = (): JSX.Element => { } > - {loading ? ( + {comicsLoading ? ( @@ -82,7 +82,7 @@ const MyComics = (): JSX.Element => { )) ) : ( - + { )) ) : ( - + { - const { selectedNetworkId } = useNetworkContext(); const router = useRouter(); - const imx = useContext(IMXContext); - const filteredItems = useMemo( - () => imx.itemsBalance.filter(item => item.balance && item.balance > 0), - [imx.itemsBalance], - ); + const { itemsBalance, itemsLoading } = useIMXContext(); + const filteredItems = useMemo(() => itemsBalance.filter(item => item.balance && item.balance > 0), [itemsBalance]); const settings = { slidesToShow: 4, @@ -71,7 +66,7 @@ const MyItems = (): JSX.Element => { } > - {imx.loading ? ( + {itemsLoading ? ( @@ -83,11 +78,7 @@ const MyItems = (): JSX.Element => { )) ) : ( - + { isLoadingProfile: loadingProfile, isLoadingDegens: false, isLoadingComics: false, + isLoadingItems: false, }} > diff --git a/apps/app/src/app/(public-routes)/mint-o-matic/page.tsx b/apps/app/src/app/(public-routes)/mint-o-matic/page.tsx index b7837e45..450f0f15 100644 --- a/apps/app/src/app/(public-routes)/mint-o-matic/page.tsx +++ b/apps/app/src/app/(public-routes)/mint-o-matic/page.tsx @@ -7,7 +7,7 @@ import useBalances from '@/hooks/useBalances'; import useAuth from '@/hooks/useAuth'; import ErrorBoundary from '@/components/wrapper/ErrorBoundary'; import Preloader from '@/components/Preloader'; -import { DEGEN_OPENSEA_URL } from '@/constants/url'; +import { DEGEN_COLLECTION_URL } from '@/constants/url'; import Link from 'next/link'; import dynamic from 'next/dynamic'; @@ -44,7 +44,7 @@ const MintPage = () => { This page is accessible to DEGEN owners only. - + diff --git a/apps/app/src/components/cards/ComicCard.tsx b/apps/app/src/components/cards/ComicCard.tsx index 7f2e9e2e..e79d60cc 100644 --- a/apps/app/src/components/cards/ComicCard.tsx +++ b/apps/app/src/components/cards/ComicCard.tsx @@ -1,6 +1,6 @@ import { Box, SxProps, Typography } from '@mui/material'; import { Theme } from '@nl/theme'; -import type { Comic } from '@/types/comic'; +import type { Comic } from '@/types/marketplace'; import ImageCard from '@/components/cards/ImageCard'; import useComicDimension from '@/hooks/useComicDimension'; diff --git a/apps/app/src/components/cards/ComicDetail.tsx b/apps/app/src/components/cards/ComicDetail.tsx index db370b3c..d0ef20cb 100644 --- a/apps/app/src/components/cards/ComicDetail.tsx +++ b/apps/app/src/components/cards/ComicDetail.tsx @@ -1,5 +1,5 @@ import { Box } from '@mui/material'; -import type { Comic } from '@/types/comic'; +import type { Comic } from '@/types/marketplace'; import ImageCard from '@/components/cards/ImageCard'; export interface ComicDetailProps { diff --git a/apps/app/src/components/cards/DegenCard/index.tsx b/apps/app/src/components/cards/DegenCard/index.tsx index abde006c..e99c1310 100644 --- a/apps/app/src/components/cards/DegenCard/index.tsx +++ b/apps/app/src/components/cards/DegenCard/index.tsx @@ -30,6 +30,7 @@ import { errorMsgHandler } from '@/utils/errorHandlers'; import type { Degen } from '@/types/degens'; // import { DISABLE_RENT_API_URL } from '@/constants/url'; import useAuth from '@/hooks/useAuth'; +import { DEGEN_PURCHASE_URL } from '@/constants/url'; // const chipStyles = (isSmall: boolean) => ({ // color: 'white', @@ -193,7 +194,7 @@ const DegenCard: React.FC )} { const dispatch = useDispatch(); - const { comicsBalance, loading: loadingComics } = useComicsBalance(); + const { comicsBalance, comicsLoading } = useIMXContext(); const filteredComics = useMemo( () => comicsBalance.filter(comic => comic.balance && comic.balance > 0), [comicsBalance], @@ -216,7 +216,7 @@ const EquipDegenContentDialog = ({ degen, name }: EquipDegenContentDialogProps) }; if (filteredComics.length === 0) { - if (loadingComics) { + if (comicsLoading) { return ( @@ -225,7 +225,7 @@ const EquipDegenContentDialog = ({ degen, name }: EquipDegenContentDialogProps) } return ( - + diff --git a/apps/app/src/components/dialog/DegenDialog/ViewTraitsContentDialog.tsx b/apps/app/src/components/dialog/DegenDialog/ViewTraitsContentDialog.tsx index feeaebf3..8501f467 100644 --- a/apps/app/src/components/dialog/DegenDialog/ViewTraitsContentDialog.tsx +++ b/apps/app/src/components/dialog/DegenDialog/ViewTraitsContentDialog.tsx @@ -9,6 +9,7 @@ import { GOOGLE_ANALYTICS } from '@/constants/google-analytics'; import { TRAIT_KEY_VALUE_MAP, TRAIT_NAME_MAP } from '@/constants/cosmeticsFilters'; import type { Degen, GetDegenResponse } from '@/types/degens'; import { sendEvent } from '@/utils/google-analytics'; +import { DEGEN_PURCHASE_URL } from '@/constants/url'; export interface ViewTraitsContentDialogProps { degen?: Degen; @@ -45,11 +46,7 @@ const ViewTraitsContentDialog = ({ {displayName} - + DEGEN ID #{degen?.id}{' '} OpenSea Logo diff --git a/apps/app/src/components/dialog/ViewComicDialog.tsx b/apps/app/src/components/dialog/ViewComicDialog.tsx index ebd39f45..c03b576e 100644 --- a/apps/app/src/components/dialog/ViewComicDialog.tsx +++ b/apps/app/src/components/dialog/ViewComicDialog.tsx @@ -1,6 +1,6 @@ import Image from 'next/image'; import { Button, Dialog, DialogActions, DialogContent, useMediaQuery } from '@mui/material'; -import type { Comic } from '@/types/comic'; +import type { Comic } from '@/types/marketplace'; import { useTheme } from '@nl/theme'; export interface ViewComicDialogProps { diff --git a/apps/app/src/components/dialog/ViewItemDialog.tsx b/apps/app/src/components/dialog/ViewItemDialog.tsx index 4dbc2b6a..e250147b 100644 --- a/apps/app/src/components/dialog/ViewItemDialog.tsx +++ b/apps/app/src/components/dialog/ViewItemDialog.tsx @@ -1,5 +1,5 @@ import { Button, Dialog, DialogActions, DialogContent, useMediaQuery } from '@mui/material'; -import type { Item } from '@/types/comic'; +import type { Item } from '@/types/marketplace'; import { useTheme } from '@nl/theme'; import ItemDetail from '@/components/cards/ItemDetail'; diff --git a/apps/app/src/constants/contracts/deployments.ts b/apps/app/src/constants/contracts/deployments.ts index cc4a520c..258fc325 100644 --- a/apps/app/src/constants/contracts/deployments.ts +++ b/apps/app/src/constants/contracts/deployments.ts @@ -126,7 +126,7 @@ const CONTRACTS: { // address: IMX_TESTNET_DEPLOYMENTS.contracts.ComicsBurner.address, // abi: IMX_TESTNET_DEPLOYMENTS.contracts.ComicsBurner.abi, // }, - NFTLToken: { + NFTL: { address: IMX_TESTNET_DEPLOYMENTS.contracts.NFTL.address, abi: IMX_TESTNET_DEPLOYMENTS.contracts.NFTL.abi, }, @@ -140,7 +140,7 @@ const CONTRACTS: { // address: IMX_MAINNET_DEPLOYMENTS.contracts.ComicsBurner.address, // abi: IMX_MAINNET_DEPLOYMENTS.contracts.ComicsBurner.abi, // }, - NFTLToken: { + NFTL: { address: IMX_MAINNET_DEPLOYMENTS.contracts.NFTL.address, abi: IMX_MAINNET_DEPLOYMENTS.contracts.NFTL.abi, }, diff --git a/apps/app/src/constants/contracts/index.ts b/apps/app/src/constants/contracts/index.ts index 3dcf58ef..bed95237 100644 --- a/apps/app/src/constants/contracts/index.ts +++ b/apps/app/src/constants/contracts/index.ts @@ -22,12 +22,11 @@ export const getContractABI = (chainId: Network['chainId'], contractName: string }; export const COMICS_BURNER_CONTRACT = 'NiftyBurningComicsL2'; -export const COMICS_CONTRACT = 'NiftyLaunchComics'; -export const ITEMS_CONTRACT = 'NiftyItemL2'; export const DEGEN_CONTRACT = 'NiftyDegen'; export const GAME_ACCOUNT_CONTRACT = 'BalanceManager'; -export const HYDRA_DISTRIBUTOR = 'HydraDistributor'; +export const MARKETPLACE_CONTRACT = 'NiftyMarketplace'; export const NFTL_CONTRACT = 'NFTLToken'; +export const NFTL_IMX_CONTRACT = 'NFTL'; export const NFTL_RAFFLE_CONTRACT = 'NFTLRaffle'; type ChainAddressSearch = { [chainId: number]: `0x${string}` }; diff --git a/apps/app/src/constants/comics.ts b/apps/app/src/constants/marketplace.ts similarity index 98% rename from apps/app/src/constants/comics.ts rename to apps/app/src/constants/marketplace.ts index 6a4f9ab9..7ce95b0f 100644 --- a/apps/app/src/constants/comics.ts +++ b/apps/app/src/constants/marketplace.ts @@ -1,4 +1,4 @@ -import type { Comic, Item } from '@/types/comic'; +import type { Comic, Item } from '@/types/marketplace'; export const COMICS: Comic[] = [ { diff --git a/apps/app/src/constants/url.ts b/apps/app/src/constants/url.ts index 8d1c4e81..5748a62f 100644 --- a/apps/app/src/constants/url.ts +++ b/apps/app/src/constants/url.ts @@ -1,5 +1,5 @@ -import { mainnet, sepolia } from 'viem/chains'; -import { getContractAddress, NFTL_CONTRACT, ITEMS_CONTRACT } from './contracts'; +import { mainnet } from 'viem/chains'; +import { getContractAddress, NFTL_CONTRACT } from './contracts'; export const BASE_API_URL = 'https://odgwhiwhzb.execute-api.us-east-1.amazonaws.com/prod'; @@ -70,16 +70,14 @@ export const NFTL_PURCHASE_URL = `https://app.sushi.com/swap?inputCurrency=ETH&o NFTL_CONTRACT, )}`; -// DEGEN Purchase URL -export const DEGEN_OPENSEA_URL = 'https://opensea.io/collection/niftydegen'; +// DEGEN URLs +export const DEGEN_COLLECTION_URL = 'https://opensea.io/collection/niftydegen'; +export const DEGEN_PURCHASE_URL = (id: string | number) => + `https://opensea.io/assets/0x986aea67c7d6a15036e18678065eb663fc5be883/${id}`; -// Comic Purchase URL -export const COMICS_OPENSEA_URL = 'https://opensea.io/collection/nifty-league-comics'; - -export const ITEM_PURCHASE_URL = { - [mainnet.id]: `https://market.immutable.com/collections/${getContractAddress(mainnet.id, ITEMS_CONTRACT)}`, - [sepolia.id]: `https://market.sandbox.immutable.com/collections/${getContractAddress(sepolia.id, ITEMS_CONTRACT)}`, -}; +// Marketplace URLs +export const COMICS_PURCHASE_URL = 'https://tokentrove.com/collection/NiftyLeague'; +export const ITEM_PURCHASE_URL = 'https://tokentrove.com/collection/NiftyLeague'; export const CONVERT_TOKEN_TO_USD_URL = 'https://price-api.crypto.com/price/v1/exchange/'; diff --git a/apps/app/src/contexts/GamerProfileContext.tsx b/apps/app/src/contexts/GamerProfileContext.tsx index 539de8bb..fbae0550 100644 --- a/apps/app/src/contexts/GamerProfileContext.tsx +++ b/apps/app/src/contexts/GamerProfileContext.tsx @@ -2,19 +2,21 @@ import { createContext, type PropsWithChildren } from 'react'; import { useGamerProfile } from '@/hooks/useGamerProfile'; -import useComicsBalance from '@/hooks/useComicsBalance'; +import useIMXContext from '@/hooks/useIMXContext'; import useBalances from '@/hooks/useBalances'; type GamerProfileContextType = { isLoadingProfile: boolean | undefined; isLoadingDegens: boolean | undefined; isLoadingComics: boolean | undefined; + isLoadingItems: boolean | undefined; }; const defaultValue: GamerProfileContextType = { isLoadingProfile: true, isLoadingDegens: true, isLoadingComics: true, + isLoadingItems: true, }; const GamerProfileContext = createContext(defaultValue); @@ -22,14 +24,15 @@ const GamerProfileContext = createContext(defaultValue) export const GamerProfileProvider = ({ children }: PropsWithChildren) => { const { loadingDegens } = useBalances(); const { loadingProfile } = useGamerProfile(); - const { loading: loadingComics } = useComicsBalance(); + const { comicsLoading, itemsLoading } = useIMXContext(); return ( {children} diff --git a/apps/app/src/contexts/IMXContext.tsx b/apps/app/src/contexts/IMXContext.tsx index 33ee13ab..11e2ec47 100644 --- a/apps/app/src/contexts/IMXContext.tsx +++ b/apps/app/src/contexts/IMXContext.tsx @@ -1,116 +1,82 @@ 'use client'; -import { type PropsWithChildren, createContext, useCallback, useEffect, useMemo, useState } from 'react'; +import { type PropsWithChildren, createContext, useEffect } from 'react'; +import { immutableZkEvm, immutableZkEvmTestnet } from 'viem/chains'; import isEmpty from 'lodash/isEmpty'; -import { Link, ImmutableXClient, ImmutableMethodResults } from '@imtbl/imx-sdk'; + +import type { BrowserProvider } from 'ethers6'; +import type { Contracts } from '@/types/web3'; +import type { Comic, Item } from '@/types/marketplace'; +import { DEBUG } from '@/constants/index'; import useNetworkContext from '@/hooks/useNetworkContext'; -import { getContractAddress, ITEMS_CONTRACT } from '@/constants/contracts'; +import useContractLoader from '@/hooks/useContractLoader'; +import useComicsBalance from '@/hooks/useComicsBalance'; import useItemsBalance from '@/hooks/useItemsBalance'; -import type { Item } from '@/types/comic'; +import useImxProvider, { getNetwork } from '@/hooks/useImxProvider'; export interface Context { - balance?: ImmutableMethodResults.ImmutableGetBalanceResult; - client?: ImmutableXClient; - inventory?: ImmutableMethodResults.ImmutableGetAssetsResult; + address?: `0x${string}`; + comicsBalance: Comic[]; + comicsLoading: boolean; + imxContracts: Contracts; itemsBalance: Item[]; - link: Link; - linkSetup: () => Promise; - loading: boolean; - registeredUser: boolean; - setIMXRefreshKey: React.Dispatch>; - wallet: string; + itemsLoading: boolean; + passportProvider?: BrowserProvider; } const CONTEXT_INITIAL_STATE: Context = { - balance: undefined, - client: undefined, - inventory: undefined, + address: undefined, + comicsBalance: [], + comicsLoading: true, + imxContracts: {} as Contracts, itemsBalance: [], - link: new Link(process.env.NEXT_PUBLIC_SANDBOX_LINK_URL), - linkSetup: async () => new Promise(() => null), - loading: true, - registeredUser: false, - setIMXRefreshKey: () => {}, - wallet: 'undefined', + itemsLoading: true, + passportProvider: undefined, }; const IMXContext = createContext(CONTEXT_INITIAL_STATE); export const IMXProvider = ({ children }: PropsWithChildren): JSX.Element => { const { address, selectedNetworkId } = useNetworkContext(); - // initialise Immutable X Link SDK - const link = useMemo(() => new Link(process.env.NEXT_PUBLIC_SANDBOX_LINK_URL), []); - const [wallet, setWallet] = useState('undefined'); - const [balance, setBalance] = useState(Object); - const [inventory, setInventory] = useState(Object); - const [client, setClient] = useState(Object); - const [loading, setLoading] = useState(true); - const { itemsBalance } = useItemsBalance(inventory); - const [imxRefreshKey, setIMXRefreshKey] = useState(0); - const [registeredUser, setRegisteredUser] = useState(false); + // IMX Passport instance converted to an ethers.js Provider + const passportProvider = useImxProvider(); + const passportNetwork = getNetwork(); - // set user wallet and balance from IMX or ETH network context - const updateUser = useCallback( - async (user: `0x${string}`) => { - setWallet(user); - setBalance(await client.getBalance({ user, tokenAddress: 'eth' })); - if (selectedNetworkId) - setInventory( - await client.getAssets({ - user, - collection: getContractAddress(selectedNetworkId, ITEMS_CONTRACT), - page_size: 200, - }), - ); - setLoading(false); - try { - const response = await client.getUser({ user }); - if (response) setRegisteredUser(true); - } catch { - setRegisteredUser(false); - } - }, - [client, selectedNetworkId], - ); + // Load Immutable zkEVM contracts + const imxChainId = passportNetwork.id; + const imxContracts = useContractLoader(passportProvider, { chainId: imxChainId }); - useEffect(() => { - buildIMX(); - }, []); - - // initialise an Immutable X Client to interact with apis more easily - async function buildIMX() { - const publicApiUrl: string = process.env.NEXT_PUBLIC_SANDBOX_ENV_URL ?? ''; - setClient(await ImmutableXClient.build({ publicApiUrl })); - } + // Load user NFT balances + const { comicsBalance, loading: comicsLoading } = useComicsBalance(imxContracts, address); + const { itemsBalance, loading: itemsLoading } = useItemsBalance(imxContracts, address); useEffect(() => { - if (address && !isEmpty(client)) { - updateUser(address); + if (DEBUG && address && passportProvider && selectedNetworkId && !isEmpty(imxContracts)) { + console.group('_________________ ✅ Nifty League: IMX _________________'); + console.log('🛫 passportProvider', passportProvider); + console.log('👤 address:', address); + console.log('✖️ imxContracts', imxContracts); + console.groupEnd(); + } else if (DEBUG && passportProvider && !isEmpty(imxContracts)) { + console.group('_________________ 🚫 Offline User: IMX _________________'); + console.log('🛫 passportProvider', passportProvider); + console.log('✖️ imxContracts', imxContracts); + console.groupEnd(); } - }, [address, client, updateUser, imxRefreshKey]); - - // register and/or setup a user - const linkSetup = useCallback(async () => { - const res = await link.setup({}); - setRegisteredUser(true); - updateUser(res.address as `0x${string}`); - }, [link, updateUser]); + }, [address, imxContracts, passportProvider, selectedNetworkId]); return ( {children} diff --git a/apps/app/src/contexts/NetworkContext.tsx b/apps/app/src/contexts/NetworkContext.tsx index 679860e3..343cc323 100644 --- a/apps/app/src/contexts/NetworkContext.tsx +++ b/apps/app/src/contexts/NetworkContext.tsx @@ -1,8 +1,6 @@ 'use client'; import { type PropsWithChildren, createContext, useEffect } from 'react'; -import type { BrowserProvider } from 'ethers6'; -import { mainnet, immutableZkEvm, immutableZkEvmTestnet } from 'viem/chains'; import { useWeb3ModalState } from '@web3modal/wagmi/react'; import { useAccount } from 'wagmi'; import isEmpty from 'lodash/isEmpty'; @@ -10,7 +8,6 @@ import isEmpty from 'lodash/isEmpty'; import useContractLoader from '@/hooks/useContractLoader'; import useEthersProvider, { type Provider } from '@/hooks/useEthersProvider'; import useEthersSigner, { type Signer } from '@/hooks/useEthersSigner'; -import useImxProvider from '@/hooks/useImxProvider'; import useNotify from '@/hooks/useNotify'; import type { Tx } from '@/types/notify'; @@ -20,9 +17,7 @@ import { TARGET_NETWORK } from '@/constants/networks'; interface NetworkContext { address?: `0x${string}`; - imxContracts: Contracts; isConnected: boolean; - passportProvider?: BrowserProvider; publicProvider?: Provider; readContracts: Contracts; selectedNetworkId?: number; @@ -33,9 +28,7 @@ interface NetworkContext { const CONTEXT_INITIAL_STATE: NetworkContext = { address: undefined, - imxContracts: {} as Contracts, isConnected: false, - passportProvider: undefined, publicProvider: undefined, readContracts: {} as Contracts, selectedNetworkId: undefined, @@ -54,17 +47,12 @@ export const NetworkProvider = ({ children }: PropsWithChildren): JSX.Element => selectedNetworkId?: number; }; - const passportProvider = useImxProvider(); const publicProvider = useEthersProvider({ chainId }); const signer = useEthersSigner({ chainId }); // The Notifier wraps transactions and provides notificiations const tx = useNotify(signer); - // Load Immutable zkEVM contracts - const imxChainId = chainId === mainnet.id ? immutableZkEvm.id : immutableZkEvmTestnet.id; - const imxContracts = useContractLoader(passportProvider, { chainId: imxChainId }); - // Load in your local 📝 Ethereum contracts and read a value from it: const readContracts = useContractLoader(publicProvider, { chainId }); @@ -76,53 +64,35 @@ export const NetworkProvider = ({ children }: PropsWithChildren): JSX.Element => DEBUG && isConnected && address && - passportProvider && publicProvider && selectedNetworkId && signer && signer.address === address && - !isEmpty(imxContracts) && !isEmpty(readContracts) && !isEmpty(writeContracts) ) { - console.group('_________________ ✅ Nifty League _________________'); - console.log('🛫 passportProvider', passportProvider); + console.group('_________________ ✅ Nifty League: Ethereum _________________'); console.log('🌐 publicProvider', publicProvider); console.log('📝 signer', signer); console.log('👤 address:', address); console.log('⛓️ selectedNetworkId:', selectedNetworkId); console.log('📍 targetNetwork:', TARGET_NETWORK); - console.log('✖️ imxContracts', imxContracts); console.log('🔓 readContracts', readContracts); console.log('🔏 writeContracts', writeContracts); console.groupEnd(); - } else if (DEBUG && passportProvider && publicProvider && !isEmpty(imxContracts) && !isEmpty(readContracts)) { - console.group('_________________ 🚫 Offline User _________________'); - console.log('🛫 passportProvider', passportProvider); + } else if (DEBUG && publicProvider && !isEmpty(readContracts)) { + console.group('_________________ 🚫 Offline User: Ethereum _________________'); console.log('🌐 publicProvider', publicProvider); console.log('⛓️ selectedNetworkId:', selectedNetworkId); console.log('📍 targetNetwork:', TARGET_NETWORK); - console.log('✖️ imxContracts', imxContracts); console.log('🔓 readContracts', readContracts); console.groupEnd(); } - }, [ - address, - imxContracts, - isConnected, - passportProvider, - publicProvider, - readContracts, - selectedNetworkId, - signer, - writeContracts, - ]); + }, [address, isConnected, publicProvider, readContracts, selectedNetworkId, signer, writeContracts]); const context = { address, - imxContracts, isConnected, - passportProvider, publicProvider, readContracts, selectedNetworkId, diff --git a/apps/app/src/hooks/useComicsBalance.ts b/apps/app/src/hooks/useComicsBalance.ts index 357181e7..6daa6b32 100644 --- a/apps/app/src/hooks/useComicsBalance.ts +++ b/apps/app/src/hooks/useComicsBalance.ts @@ -1,35 +1,38 @@ 'use client'; import { useEffect, useState } from 'react'; -import useNetworkContext from '@/hooks/useNetworkContext'; -import { COMICS_CONTRACT } from '@/constants/contracts'; -import { COMICS } from '@/constants/comics'; -import type { Comic } from '@/types/comic'; import type { AddressLike } from 'ethers6'; +import type { Contracts } from '@/types/web3'; +import type { Comic } from '@/types/marketplace'; +import { MARKETPLACE_CONTRACT } from '@/constants/contracts'; +import { COMICS } from '@/constants/marketplace'; /* ~ What it does? ~ - Gets your comics NFT balance + Gets your Comics NFTs balance from Immutable zkEVM ~ How can I use? ~ - const yourBalance = useComicsBalance(); + const { comicsBalance } = useComicsBalance(imxContracts, address); */ -export default function useComicsBalance(refreshKey = 0): { +export default function useComicsBalance( + imxContracts: Contracts, + address?: `0x${string}`, + refreshKey = 0, +): { comicsBalance: Comic[]; loading: boolean; } { const [loading, setLoading] = useState(true); const [comicsBalance, setComicsBal] = useState([]); - const { address, readContracts } = useNetworkContext(); useEffect(() => { async function checkUserComics() { const ownerArr = [address, address, address, address, address, address] as AddressLike[]; const comicIds = [1, 2, 3, 4, 5, 6]; - const comicsData = await readContracts[COMICS_CONTRACT].balanceOfBatch(ownerArr, comicIds); + const comicsData = await imxContracts[MARKETPLACE_CONTRACT].balanceOfBatch(ownerArr, comicIds); setComicsBal( comicsData.map((c: bigint, i: number) => ({ ...(COMICS[i] as Comic), @@ -43,11 +46,11 @@ export default function useComicsBalance(refreshKey = 0): { setComicsBal([]); } - if (address && readContracts && readContracts[COMICS_CONTRACT]) { + if (address && imxContracts && imxContracts[MARKETPLACE_CONTRACT]) { // eslint-disable-next-line no-void void checkUserComics(); } - }, [address, readContracts, refreshKey]); + }, [address, imxContracts, refreshKey]); return { comicsBalance, loading }; } diff --git a/apps/app/src/hooks/useIMXContext.ts b/apps/app/src/hooks/useIMXContext.ts new file mode 100644 index 00000000..171cdb94 --- /dev/null +++ b/apps/app/src/hooks/useIMXContext.ts @@ -0,0 +1,18 @@ +'use client'; + +import { useContext } from 'react'; + +// IMX Provider +import IMXContext, { Context } from '@/contexts/IMXContext'; + +const useIMXContext = () => { + const context = useContext(IMXContext); + + if (!context) throw new Error('context must be use inside provider'); + + return context; +}; + +export type { Context }; + +export default useIMXContext; diff --git a/apps/app/src/hooks/useImxProvider.ts b/apps/app/src/hooks/useImxProvider.ts index 88d62aa7..bb76341a 100644 --- a/apps/app/src/hooks/useImxProvider.ts +++ b/apps/app/src/hooks/useImxProvider.ts @@ -1,6 +1,8 @@ import { useEffect, useState } from 'react'; import { BrowserProvider, JsonRpcSigner } from 'ethers6'; -import passport from '@nl/imx-passport'; +import { type Chain, immutableZkEvm, immutableZkEvmTestnet } from 'viem/chains'; +import passport, { passportEnv } from '@nl/imx-passport'; +import { config } from '@nl/imx-passport/types'; export function clientToProvider(): BrowserProvider { const passportProvider = passport.connectEvm(); @@ -13,6 +15,10 @@ export async function getSigner(): Promise { return provider.getSigner(); } +export function getNetwork(): Chain { + return passportEnv === config.Environment.PRODUCTION ? immutableZkEvm : immutableZkEvmTestnet; +} + /** Action to convert a IMX Passport instance to an ethers.js Provider. */ export function useImxProvider(): BrowserProvider { const provider = clientToProvider(); diff --git a/apps/app/src/hooks/useItemsBalance.ts b/apps/app/src/hooks/useItemsBalance.ts index 1b9f199a..09ec6902 100644 --- a/apps/app/src/hooks/useItemsBalance.ts +++ b/apps/app/src/hooks/useItemsBalance.ts @@ -1,38 +1,56 @@ -import { useMemo } from 'react'; -import groupBy from 'lodash/groupBy'; -import { ITEMS } from '@/constants/comics'; -import { ImmutableMethodResults } from '@imtbl/imx-sdk'; -import type { Item } from '@/types/comic'; +'use client'; + +import { useEffect, useState } from 'react'; +import type { AddressLike } from 'ethers6'; +import type { Contracts } from '@/types/web3'; +import type { Item } from '@/types/marketplace'; +import { MARKETPLACE_CONTRACT } from '@/constants/contracts'; +import { ITEMS } from '@/constants/marketplace'; /* ~ What it does? ~ - Gets your IMX items NFT balances from inventory + Gets your Items NFTs balance from Immutable zkEVM ~ How can I use? ~ - const yourBalance = useItemsBalance(inventory); + const { itemsBalance } = useItemsBalance(imxContracts, address); */ -export default function useItemsBalance(inventory: ImmutableMethodResults.ImmutableGetAssetsResult): { +export default function useItemsBalance( + imxContracts: Contracts, + address?: `0x${string}`, + refreshKey = 0, +): { itemsBalance: Item[]; + loading: boolean; } { - const itemsBalance: Item[] = useMemo(() => { - if (inventory?.result) { - const groupBalances: { item_id?: number; balance: number }[] = Object.values( - groupBy(inventory.result, 'metadata.item_id'), - ).map((group: { metadata?: unknown }[]) => ({ - ...(group[0]?.metadata || {}), - balance: group.length, - })); - - return ITEMS.map(item => ({ - ...item, - ...(groupBalances.find(g => g.item_id === item.id) || {}), - })); + const [loading, setLoading] = useState(true); + const [itemsBalance, setItemsBal] = useState([]); + + useEffect(() => { + async function checkUserItems() { + const ownerArr = [address, address, address, address, address, address] as AddressLike[]; + const comicIds = [101, 102, 103, 104, 105, 106]; + const comicsData = await imxContracts[MARKETPLACE_CONTRACT].balanceOfBatch(ownerArr, comicIds); + setItemsBal( + comicsData.map((c: bigint, i: number) => ({ + ...(ITEMS[i] as Item), + balance: Number(c), + })), + ); + setLoading(false); + } + if (!address) { + setLoading(false); + setItemsBal([]); + } + + if (address && imxContracts && imxContracts[MARKETPLACE_CONTRACT]) { + // eslint-disable-next-line no-void + void checkUserItems(); } - return []; - }, [inventory]); + }, [address, imxContracts, refreshKey]); - return { itemsBalance }; + return { itemsBalance, loading }; } diff --git a/apps/app/src/hooks/useNetworkContext.ts b/apps/app/src/hooks/useNetworkContext.ts index d604a181..bc8b8a09 100644 --- a/apps/app/src/hooks/useNetworkContext.ts +++ b/apps/app/src/hooks/useNetworkContext.ts @@ -2,11 +2,9 @@ import { useContext } from 'react'; -// balance provider +// Network Provider import NetworkContext from '@/contexts/NetworkContext'; -// ==============================|| AUTH HOOKS ||============================== // - const useNetworkContext = () => { const context = useContext(NetworkContext); diff --git a/apps/app/src/types/comic.ts b/apps/app/src/types/marketplace.ts similarity index 100% rename from apps/app/src/types/comic.ts rename to apps/app/src/types/marketplace.ts diff --git a/apps/app/src/types/web3.ts b/apps/app/src/types/web3.ts index b38b7994..e2628445 100644 --- a/apps/app/src/types/web3.ts +++ b/apps/app/src/types/web3.ts @@ -16,15 +16,17 @@ import { NFTLToken, NiftyBurningComicsL2, NiftyDegen, - NiftyLaunchComics, + NiftyMarketplace, + NFTL, } from '@/types/typechain'; + import { COMICS_BURNER_CONTRACT, - COMICS_CONTRACT, DEGEN_CONTRACT, GAME_ACCOUNT_CONTRACT, - HYDRA_DISTRIBUTOR, + MARKETPLACE_CONTRACT, NFTL_CONTRACT, + NFTL_IMX_CONTRACT, NFTL_RAFFLE_CONTRACT, } from '@/constants/contracts'; @@ -60,11 +62,11 @@ export interface Ethereumish { // export interface Contracts extends Record {} export interface Contracts { [COMICS_BURNER_CONTRACT]: NiftyBurningComicsL2; - [COMICS_CONTRACT]: NiftyLaunchComics; [DEGEN_CONTRACT]: NiftyDegen; [GAME_ACCOUNT_CONTRACT]: BalanceManager; - [HYDRA_DISTRIBUTOR]: HydraDistributor; + [MARKETPLACE_CONTRACT]: NiftyMarketplace; [NFTL_CONTRACT]: NFTLToken; + [NFTL_IMX_CONTRACT]: NFTL; [NFTL_RAFFLE_CONTRACT]: NFTLRaffle; MerkleDistributor: Contract; // [contractName: string]: Contract; diff --git a/packages/imx-passport/config.ts b/packages/imx-passport/config.ts index 1d50fd3f..12f4fac1 100644 --- a/packages/imx-passport/config.ts +++ b/packages/imx-passport/config.ts @@ -26,14 +26,15 @@ const env = { }; const baseURL = typeof window !== 'undefined' && window?.location?.origin; +const environment = process.env.NODE_ENV === 'production' ? config.Environment.PRODUCTION : config.Environment.SANDBOX; const passportConfig: PassportModuleConfiguration = { baseConfig: { - environment: process.env.NODE_ENV === 'production' ? config.Environment.PRODUCTION : config.Environment.SANDBOX, + environment, publishableKey: - process.env.NODE_ENV === 'production' ? env.mainnet.IMX_PUBLISHABLE_KEY : env.testnet.IMX_PUBLISHABLE_KEY, + environment === config.Environment.PRODUCTION ? env.mainnet.IMX_PUBLISHABLE_KEY : env.testnet.IMX_PUBLISHABLE_KEY, }, - clientId: process.env.NODE_ENV === 'production' ? env.mainnet.IMX_CLIENT_ID : env.testnet.IMX_CLIENT_ID, + clientId: environment === config.Environment.PRODUCTION ? env.mainnet.IMX_CLIENT_ID : env.testnet.IMX_CLIENT_ID, logoutRedirectUri: `${baseURL}/logout`, logoutMode: 'redirect', redirectUri: `${baseURL}/redirect`, @@ -42,6 +43,5 @@ const passportConfig: PassportModuleConfiguration = { }; const passportInstance: passport.Passport = new passport.Passport(passportConfig); - -export { passportInstance }; +export const passportEnv: config.Environment = environment; export default passportInstance; diff --git a/packages/imx-passport/types.ts b/packages/imx-passport/types.ts index fa87f1c8..5b5b3d6e 100644 --- a/packages/imx-passport/types.ts +++ b/packages/imx-passport/types.ts @@ -1,3 +1,5 @@ import { passport } from '@imtbl/sdk'; export type Passport = passport.Passport; + +export { config } from '@imtbl/sdk'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c9b3ea3c..13987718 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -111,9 +111,6 @@ importers: '@hookform/resolvers': specifier: ^3.9.0 version: 3.9.0(react-hook-form@7.53.0) - '@imtbl/imx-sdk': - specifier: ~3.8.2 - version: 3.8.2 '@mui/x-data-grid': specifier: ^7.18.0 version: 7.18.0(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@mui/material@6.1.1)(@mui/system@6.1.1)(@types/react@18.3.8)(react-dom@18.3.1)(react@18.3.1) @@ -252,13 +249,13 @@ importers: dependencies: '@docusaurus/core': specifier: 3.5.2 - version: 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + version: 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/preset-classic': specifier: 3.5.2 - version: 3.5.2(@algolia/client-search@5.5.3)(@mdx-js/react@3.0.1)(@types/react@18.3.8)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2)(typescript@5.6.2) + version: 3.5.2(@algolia/client-search@5.5.3)(@mdx-js/react@3.0.1)(@types/react@18.3.8)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2)(typescript@5.4.5) '@docusaurus/theme-mermaid': specifier: ^3.5.2 - version: 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + version: 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@heroicons/react': specifier: ^2.1.5 version: 2.1.5(react@18.3.1) @@ -283,7 +280,7 @@ importers: version: 3.5.2(react-dom@18.3.1)(react@18.3.1) '@docusaurus/theme-classic': specifier: ^3.5.2 - version: 3.5.2(@types/react@18.3.8)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + version: 3.5.2(@types/react@18.3.8)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/tsconfig': specifier: 3.5.2 version: 3.5.2 @@ -401,13 +398,13 @@ importers: version: 14.2.13 '@typescript-eslint/eslint-plugin': specifier: ^7.18.0 - version: 7.18.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.1)(typescript@5.6.2) + version: 7.18.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.1)(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^7.18.0 - version: 7.18.0(eslint@8.57.1)(typescript@5.6.2) + version: 7.18.0(eslint@8.57.1)(typescript@5.4.5) eslint-config-next: specifier: ^14.2.13 - version: 14.2.13(eslint@8.57.1)(typescript@5.6.2) + version: 14.2.13(eslint@8.57.1)(typescript@5.4.5) eslint-config-prettier: specifier: ^9.1.0 version: 9.1.0(eslint@8.57.1) @@ -487,7 +484,7 @@ importers: version: 8.3.2(react@18.3.1)(storybook@8.3.2) '@storybook/react': specifier: ^8.3.2 - version: 8.3.2(react-dom@18.3.1)(react@18.3.1)(storybook@8.3.2)(typescript@5.6.2) + version: 8.3.2(react-dom@18.3.1)(react@18.3.1)(storybook@8.3.2)(typescript@5.4.5) '@supabase/supabase-js': specifier: ^2.45.4 version: 2.45.4 @@ -506,7 +503,7 @@ importers: version: link:../typescript-config '@turbo/gen': specifier: ^2.1.2 - version: 2.1.2(@types/node@22.6.1)(typescript@5.6.2) + version: 2.1.2(@types/node@22.6.1)(typescript@5.4.5) packages: @@ -2267,11 +2264,6 @@ packages: requiresBuild: true optional: true - /@colors/colors@1.6.0: - resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} - engines: {node: '>=0.1.90'} - dev: false - /@confio/ics23@0.6.8: resolution: {integrity: sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==} dependencies: @@ -2432,14 +2424,6 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@dabh/diagnostics@2.0.3: - resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} - dependencies: - colorspace: 1.1.4 - enabled: 2.0.0 - kuler: 2.0.0 - dev: false - /@discoveryjs/json-ext@0.5.7: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} @@ -2477,7 +2461,7 @@ packages: - '@algolia/client-search' dev: false - /@docusaurus/core@3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): + /@docusaurus/core@3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): resolution: {integrity: sha512-4Z1WkhCSkX4KO0Fw5m/Vuc7Q3NxBG53NE5u59Rs96fWkMPZVSrzEPP16/Nk6cWb/shK7xXPndTmalJtw7twL/w==} engines: {node: '>=18.0'} hasBin: true @@ -2498,10 +2482,10 @@ packages: '@babel/traverse': 7.25.6 '@docusaurus/cssnano-preset': 3.5.2 '@docusaurus/logger': 3.5.2 - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) + '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) '@mdx-js/react': 3.0.1(@types/react@18.3.8)(react@18.3.1) autoprefixer: 10.4.20(postcss@8.4.47) babel-loader: 9.2.1(@babel/core@7.25.2)(webpack@5.94.0) @@ -2533,10 +2517,10 @@ packages: mini-css-extract-plugin: 2.9.1(webpack@5.94.0) p-map: 4.0.0 postcss: 8.4.47 - postcss-loader: 7.3.4(postcss@8.4.47)(typescript@5.6.2)(webpack@5.94.0) + postcss-loader: 7.3.4(postcss@8.4.47)(typescript@5.4.5)(webpack@5.94.0) prompts: 2.4.2 react: 18.3.1 - react-dev-utils: 12.0.1(eslint@8.57.1)(typescript@5.6.2)(webpack@5.94.0) + react-dev-utils: 12.0.1(eslint@8.57.1)(typescript@5.4.5)(webpack@5.94.0) react-dom: 18.3.1(react@18.3.1) react-helmet-async: 1.3.0(react-dom@18.3.1)(react@18.3.1) react-loadable: /@docusaurus/react-loadable@6.0.0(react@18.3.1) @@ -2592,7 +2576,7 @@ packages: chalk: 4.1.2 tslib: 2.7.0 - /@docusaurus/mdx-loader@3.5.2(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): + /@docusaurus/mdx-loader@3.5.2(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): resolution: {integrity: sha512-ku3xO9vZdwpiMIVd8BzWV0DCqGEbCP5zs1iHfKX50vw6jX8vQo0ylYo1YJMZyz6e+JFJ17HYHT5FzVidz2IflA==} engines: {node: '>=18.0'} peerDependencies: @@ -2600,8 +2584,8 @@ packages: react-dom: ^18.0.0 dependencies: '@docusaurus/logger': 3.5.2 - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) '@mdx-js/mdx': 3.0.1 '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 @@ -2656,7 +2640,7 @@ packages: - uglify-js - webpack-cli - /@docusaurus/plugin-content-blog@3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): + /@docusaurus/plugin-content-blog@3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): resolution: {integrity: sha512-R7ghWnMvjSf+aeNDH0K4fjyQnt5L0KzUEnUhmf1e3jZrv3wogeytZNN6n7X8yHcMsuZHPOrctQhXWnmxu+IRRg==} engines: {node: '>=18.0'} peerDependencies: @@ -2664,15 +2648,15 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/logger': 3.5.2 - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) - '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/types': 3.5.2(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) cheerio: 1.0.0-rc.12 feed: 4.2.2 fs-extra: 11.2.0 @@ -2704,22 +2688,22 @@ packages: - vue-template-compiler - webpack-cli - /@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): + /@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): resolution: {integrity: sha512-Bt+OXn/CPtVqM3Di44vHjE7rPCEsRCB/DMo2qoOuozB9f7+lsdrHvD0QCHdBs0uhz6deYJDppAr2VgqybKPlVQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/logger': 3.5.2 - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/module-type-aliases': 3.5.2(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/types': 3.5.2(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) '@types/react-router-config': 5.0.11 combine-promises: 1.2.0 fs-extra: 11.2.0 @@ -2749,18 +2733,18 @@ packages: - vue-template-compiler - webpack-cli - /@docusaurus/plugin-content-pages@3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): + /@docusaurus/plugin-content-pages@3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): resolution: {integrity: sha512-WzhHjNpoQAUz/ueO10cnundRz+VUtkjFhhaQ9jApyv1a46FPURO4cef89pyNIOMny1fjDz/NUN2z6Yi+5WUrCw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/types': 3.5.2(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -2785,16 +2769,16 @@ packages: - vue-template-compiler - webpack-cli - /@docusaurus/plugin-debug@3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): + /@docusaurus/plugin-debug@3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): resolution: {integrity: sha512-kBK6GlN0itCkrmHuCS6aX1wmoWc5wpd5KJlqQ1FyrF0cLDnvsYSnh7+ftdwzt7G6lGBho8lrVwkkL9/iQvaSOA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/types': 3.5.2(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -2820,16 +2804,16 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-analytics@3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): + /@docusaurus/plugin-google-analytics@3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): resolution: {integrity: sha512-rjEkJH/tJ8OXRE9bwhV2mb/WP93V441rD6XnM6MIluu7rk8qg38iSxS43ga2V2Q/2ib53PcqbDEJDG/yWQRJhQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/types': 3.5.2(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.7.0 @@ -2853,16 +2837,16 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-gtag@3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): + /@docusaurus/plugin-google-gtag@3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): resolution: {integrity: sha512-lm8XL3xLkTPHFKKjLjEEAHUrW0SZBSHBE1I+i/tmYMBsjCcUB5UJ52geS5PSiOCFVR74tbPGcPHEV/gaaxFeSA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/types': 3.5.2(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) '@types/gtag.js': 0.0.12 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -2887,16 +2871,16 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-tag-manager@3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): + /@docusaurus/plugin-google-tag-manager@3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): resolution: {integrity: sha512-QkpX68PMOMu10Mvgvr5CfZAzZQFx8WLlOiUQ/Qmmcl6mjGK6H21WLT5x7xDmcpCoKA/3CegsqIqBR+nA137lQg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/types': 3.5.2(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.7.0 @@ -2920,19 +2904,19 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-sitemap@3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): + /@docusaurus/plugin-sitemap@3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): resolution: {integrity: sha512-DnlqYyRAdQ4NHY28TfHuVk414ft2uruP4QWCH//jzpHjqvKyXjj2fmDtI8RPUBh9K8iZKFMHRnLtzJKySPWvFA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/logger': 3.5.2 '@docusaurus/types': 3.5.2(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -2958,25 +2942,25 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@3.5.2(@algolia/client-search@5.5.3)(@mdx-js/react@3.0.1)(@types/react@18.3.8)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2)(typescript@5.6.2): + /@docusaurus/preset-classic@3.5.2(@algolia/client-search@5.5.3)(@mdx-js/react@3.0.1)(@types/react@18.3.8)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2)(typescript@5.4.5): resolution: {integrity: sha512-3ihfXQ95aOHiLB5uCu+9PRy2gZCeSZoDcqpnDvf3B+sTrMvMTr8qRUzBvWkoIqc82yG5prCboRjk1SVILKx6sg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) - '@docusaurus/plugin-content-blog': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) - '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) - '@docusaurus/plugin-content-pages': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) - '@docusaurus/plugin-debug': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) - '@docusaurus/plugin-google-analytics': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) - '@docusaurus/plugin-google-gtag': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) - '@docusaurus/plugin-google-tag-manager': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) - '@docusaurus/plugin-sitemap': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) - '@docusaurus/theme-classic': 3.5.2(@types/react@18.3.8)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) - '@docusaurus/theme-search-algolia': 3.5.2(@algolia/client-search@5.5.3)(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(@types/react@18.3.8)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2)(typescript@5.6.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-content-blog': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-content-pages': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-debug': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-google-analytics': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-google-gtag': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-google-tag-manager': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-sitemap': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-classic': 3.5.2(@types/react@18.3.8)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-search-algolia': 3.5.2(@algolia/client-search@5.5.3)(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(@types/react@18.3.8)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2)(typescript@5.4.5) '@docusaurus/types': 3.5.2(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -3011,25 +2995,25 @@ packages: '@types/react': 18.3.8 react: 18.3.1 - /@docusaurus/theme-classic@3.5.2(@types/react@18.3.8)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): + /@docusaurus/theme-classic@3.5.2(@types/react@18.3.8)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): resolution: {integrity: sha512-XRpinSix3NBv95Rk7xeMF9k4safMkwnpSgThn0UNQNumKvmcIYjfkwfh2BhwYh/BxMXQHJ/PdmNh22TQFpIaYg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/module-type-aliases': 3.5.2(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/plugin-content-blog': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) - '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) - '@docusaurus/plugin-content-pages': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/plugin-content-blog': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-content-pages': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/theme-translations': 3.5.2 '@docusaurus/types': 3.5.2(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) '@mdx-js/react': 3.0.1(@types/react@18.3.8)(react@18.3.1) clsx: 2.1.1 copy-text-to-clipboard: 3.2.0 @@ -3064,7 +3048,7 @@ packages: - vue-template-compiler - webpack-cli - /@docusaurus/theme-common@3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): + /@docusaurus/theme-common@3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): resolution: {integrity: sha512-QXqlm9S6x9Ibwjs7I2yEDgsCocp708DrCrgHgKwg2n2AY0YQ6IjU0gAK35lHRLOvAoJUfCKpQAwUykB0R7+Eew==} engines: {node: '>=18.0'} peerDependencies: @@ -3072,10 +3056,10 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/module-type-aliases': 3.5.2(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) + '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2) '@types/history': 4.7.11 '@types/react': 18.3.8 @@ -3096,18 +3080,18 @@ packages: - uglify-js - webpack-cli - /@docusaurus/theme-mermaid@3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): + /@docusaurus/theme-mermaid@3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): resolution: {integrity: sha512-7vWCnIe/KoyTN1Dc55FIyqO5hJ3YaV08Mr63Zej0L0mX1iGzt+qKSmeVUAJ9/aOalUhF0typV0RmNUSy5FAmCg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/module-type-aliases': 3.5.2(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/types': 3.5.2(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) mermaid: 10.9.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -3133,7 +3117,7 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@3.5.2(@algolia/client-search@5.5.3)(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(@types/react@18.3.8)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2)(typescript@5.6.2): + /@docusaurus/theme-search-algolia@3.5.2(@algolia/client-search@5.5.3)(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(@types/react@18.3.8)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2)(typescript@5.4.5): resolution: {integrity: sha512-qW53kp3VzMnEqZGjakaV90sst3iN1o32PH+nawv1uepROO8aEGxptcq2R5rsv7aBShSRbZwIobdvSYKsZ5pqvA==} engines: {node: '>=18.0'} peerDependencies: @@ -3141,13 +3125,13 @@ packages: react-dom: ^18.0.0 dependencies: '@docsearch/react': 3.6.1(@algolia/client-search@5.5.3)(@types/react@18.3.8)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2) - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/logger': 3.5.2 - '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/theme-translations': 3.5.2 - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) algoliasearch: 4.24.0 algoliasearch-helper: 3.22.5(algoliasearch@4.24.0) clsx: 2.1.1 @@ -3229,12 +3213,12 @@ packages: '@docusaurus/types': 3.5.2(react-dom@18.3.1)(react@18.3.1) tslib: 2.7.0 - /@docusaurus/utils-validation@3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2): + /@docusaurus/utils-validation@3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5): resolution: {integrity: sha512-m+Foq7augzXqB6HufdS139PFxDC5d5q2QKZy8q0qYYvGdI6nnlNsGH4cIGsgBnV7smz+mopl3g4asbSDvMV0jA==} engines: {node: '>=18.0'} dependencies: '@docusaurus/logger': 3.5.2 - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5) '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2) fs-extra: 11.2.0 joi: 17.13.3 @@ -3250,7 +3234,7 @@ packages: - uglify-js - webpack-cli - /@docusaurus/utils@3.5.2(@docusaurus/types@3.5.2)(typescript@5.6.2): + /@docusaurus/utils@3.5.2(@docusaurus/types@3.5.2)(typescript@5.4.5): resolution: {integrity: sha512-33QvcNFh+Gv+C2dP9Y9xWEzMgf3JzrpL2nW9PopidiohS1nDcyknKRx2DWaFvyVTTYIkkABVSr073VTj/NITNA==} engines: {node: '>=18.0'} peerDependencies: @@ -3262,7 +3246,7 @@ packages: '@docusaurus/logger': 3.5.2 '@docusaurus/types': 3.5.2(react-dom@18.3.1)(react@18.3.1) '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2) - '@svgr/webpack': 8.1.0(typescript@5.6.2) + '@svgr/webpack': 8.1.0(typescript@5.4.5) escape-string-regexp: 4.0.0 file-loader: 6.2.0(webpack@5.94.0) fs-extra: 11.2.0 @@ -3792,17 +3776,6 @@ packages: '@ethersproject/transactions': 5.7.0 dev: false - /@ethersproject/experimental@5.7.0: - resolution: {integrity: sha512-DWvhuw7Dg8JPyhMbh/CNYOwsTLjXRx/HGkacIL5rBocG8jJC0kmixwoK/J3YblO4vtcyBLMa+sV74RJZK2iyHg==} - dependencies: - '@ethersproject/web': 5.7.1 - ethers: 5.7.2 - scrypt-js: 3.0.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - /@ethersproject/hash@5.7.0: resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} dependencies: @@ -4138,10 +4111,6 @@ packages: typescript: 5.4.5 dev: false - /@gamestopnft/detect-gamestop-provider@1.0.0: - resolution: {integrity: sha512-GAKdmc1Da0rSKt3sjAHemN9QEqJTCmtgyG6e1w0IPMFC1qbVns/o4+sVw7ymKQp9Ur54JQZRcExv5HwOTEqi3A==} - dev: false - /@google/model-viewer@3.5.0(three@0.163.0): resolution: {integrity: sha512-wyrJ0yi+9XHaGg4OMDG7odbzI3/Lkn55VjIZ6siw3uM0NdPlWIYY8ZQbysbwS6f6jC7GiScax5KaxQxLLk4eQw==} engines: {node: '>=6.0.0'} @@ -4225,60 +4194,6 @@ packages: buffer: 6.0.3 dev: false - /@imtbl/imx-sdk@3.8.2: - resolution: {integrity: sha512-0Qe5OjnIoJOv+ggyKiSMitGToyvRCnNXx4sVLQBTfENIPahClzxe6mrNexNbn1tUlCnPRYjpdBtkN8uv4D/B9g==} - engines: {node: '>=16', npm: '>=8'} - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/contracts': 5.7.0 - '@ethersproject/experimental': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/providers': 5.7.2 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/solidity': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/units': 5.7.0 - '@gamestopnft/detect-gamestop-provider': 1.0.0 - auto-bind: 4.0.0 - axios: 0.21.4 - axios-retry: 3.9.1 - bignumber.js: 9.1.2 - bitwise: 2.2.1 - bn.js: 5.2.1 - colors: 1.4.0 - elliptic: 6.5.7 - enc-utils: 3.0.0 - ethereumjs-wallet: 1.0.2 - ethers: 5.7.2 - fp-ts: 2.9.3 - fp-ts-std: 0.5.2(fp-ts@2.9.3)(monocle-ts@2.3.13)(newtype-ts@0.3.5) - hash.js: 1.1.7 - io-ts: 2.2.13(fp-ts@2.9.3) - io-ts-reporters: 1.2.2(fp-ts@2.9.3)(io-ts@2.2.13) - io-ts-types: 0.5.19(fp-ts@2.9.3)(io-ts@2.2.13)(monocle-ts@2.3.13)(newtype-ts@0.3.5) - magic-sdk: 18.6.0 - moment: 2.30.1 - monocle-ts: 2.3.13(fp-ts@2.9.3) - newtype-ts: 0.3.5(fp-ts@2.9.3)(monocle-ts@2.3.13) - node-fetch: 2.7.0 - qs: 6.13.0 - query-string: 7.1.3 - rxjs: 6.6.7 - soltypes: 1.3.5 - winston: 3.14.2 - ws: 7.5.10 - yalc: 1.0.0-pre.53 - transitivePeerDependencies: - - bufferutil - - debug - - encoding - - supports-color - - utf-8-validate - dev: false - /@imtbl/react-analytics@0.2.1-alpha: resolution: {integrity: sha512-oDqDmCn+qJPsLnXV+DnP7VxNWLs6wES1020AprgqZh1k5lq0hoZ1ATtEPsq/u1zg9V94glC6lLCVtl28eHbj9w==} dependencies: @@ -4707,16 +4622,6 @@ packages: resolution: {integrity: sha512-HjriTgPxECC37z4UPbomuL0sFd5Fe0aC8BEDSShD5Ltbi0oMjamEW7avYdZi14S5F4UHfcol0M3xTc+0FTNwrw==} dev: false - /@magic-sdk/commons@14.6.0(@magic-sdk/provider@18.6.0)(@magic-sdk/types@15.8.0): - resolution: {integrity: sha512-xYSXDZQ2nhbydZCsphaaMpcl5glsvH+yLkKkQJfXPwaHpow68yFC6z+/lbbqQqvR6vNPdWN+7dbKbTJHI+CnUQ==} - peerDependencies: - '@magic-sdk/provider': '>=4.3.0' - '@magic-sdk/types': '>=3.1.1' - dependencies: - '@magic-sdk/provider': 18.6.0(localforage@1.10.0) - '@magic-sdk/types': 15.8.0 - dev: false - /@magic-sdk/commons@17.5.0(@magic-sdk/provider@21.5.0)(@magic-sdk/types@17.3.0): resolution: {integrity: sha512-2KdLT6KTNnToOuTb92a/Ur/zGfV8/M89W+wqrcumcSmdOOyD65C80q2Gd70OF2+HZEOPEfBp8vBTfOGyRSb8fg==} peerDependencies: @@ -4727,19 +4632,6 @@ packages: '@magic-sdk/types': 17.3.0 dev: false - /@magic-sdk/provider@18.6.0(localforage@1.10.0): - resolution: {integrity: sha512-7Q2MpUrVRWCBAbsUihsldY+4vqXgHCzqLtK5fvbnCfLGGjmjWf15ALMFwBSUskk1WCq0TVRTxe1xWAiHZ2i0iw==} - peerDependencies: - localforage: ^1.7.4 - dependencies: - '@magic-sdk/types': 15.8.0 - eventemitter3: 4.0.7 - localforage: 1.10.0 - web3-core: 1.5.2 - transitivePeerDependencies: - - supports-color - dev: false - /@magic-sdk/provider@21.5.0(localforage@1.10.0): resolution: {integrity: sha512-q2UAww4Hv8qDg+GYUqmUhdLPL5lfmYXpD6HN1IMI1HBU/SG2hLMVs/28u+RrCC1GddrqTTDal9GXONd3OHurHA==} peerDependencies: @@ -4753,10 +4645,6 @@ packages: - supports-color dev: false - /@magic-sdk/types@15.8.0: - resolution: {integrity: sha512-xLQsBAg2JXUn39dRfZW6Z3LUT50qz/3pg6R658oVBr4LbJd/L8iAR0zCRmjLLNXzfYm1RkJYZWuHaxjJgKlkSA==} - dev: false - /@magic-sdk/types@17.3.0: resolution: {integrity: sha512-0mTFr1qDJ94pOJkFu1oZ/s2KnV7lHgILvWuFh7fs7ugyn7z9M7euP9g+Bv+kEdZ6ja4QlNi+UR0OryaXowv75w==} dev: false @@ -9470,7 +9358,7 @@ packages: storybook: 8.3.2 dev: false - /@storybook/react@8.3.2(react-dom@18.3.1)(react@18.3.1)(storybook@8.3.2)(typescript@5.6.2): + /@storybook/react@8.3.2(react-dom@18.3.1)(react@18.3.1)(storybook@8.3.2)(typescript@5.4.5): resolution: {integrity: sha512-GvnqhxvaYC6s8WMiDWr184UlNp5jmRVNMBHasXlUsVDYvs6J1tStJeN+XBZbAJBW/0zkHLuf4REk8lLBi2eKRQ==} engines: {node: '>=18.0.0'} peerDependencies: @@ -9507,7 +9395,7 @@ packages: storybook: 8.3.2 ts-dedent: 2.2.0 type-fest: 2.19.0 - typescript: 5.6.2 + typescript: 5.4.5 util-deprecate: 1.0.2 dev: false @@ -9656,14 +9544,14 @@ packages: '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.25.2) '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.25.2) - /@svgr/core@8.1.0(typescript@5.6.2): + /@svgr/core@8.1.0(typescript@5.4.5): resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} engines: {node: '>=14'} dependencies: '@babel/core': 7.25.2 '@svgr/babel-preset': 8.1.0(@babel/core@7.25.2) camelcase: 6.3.0 - cosmiconfig: 8.3.6(typescript@5.6.2) + cosmiconfig: 8.3.6(typescript@5.4.5) snake-case: 3.0.4 transitivePeerDependencies: - supports-color @@ -9684,26 +9572,26 @@ packages: dependencies: '@babel/core': 7.25.2 '@svgr/babel-preset': 8.1.0(@babel/core@7.25.2) - '@svgr/core': 8.1.0(typescript@5.6.2) + '@svgr/core': 8.1.0(typescript@5.4.5) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 transitivePeerDependencies: - supports-color - /@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0)(typescript@5.6.2): + /@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0)(typescript@5.4.5): resolution: {integrity: sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==} engines: {node: '>=14'} peerDependencies: '@svgr/core': '*' dependencies: - '@svgr/core': 8.1.0(typescript@5.6.2) - cosmiconfig: 8.3.6(typescript@5.6.2) + '@svgr/core': 8.1.0(typescript@5.4.5) + cosmiconfig: 8.3.6(typescript@5.4.5) deepmerge: 4.3.1 svgo: 3.3.2 transitivePeerDependencies: - typescript - /@svgr/webpack@8.1.0(typescript@5.6.2): + /@svgr/webpack@8.1.0(typescript@5.4.5): resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} engines: {node: '>=14'} dependencies: @@ -9712,9 +9600,9 @@ packages: '@babel/preset-env': 7.25.4(@babel/core@7.25.2) '@babel/preset-react': 7.24.7(@babel/core@7.25.2) '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) - '@svgr/core': 8.1.0(typescript@5.6.2) + '@svgr/core': 8.1.0(typescript@5.4.5) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0) - '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0)(typescript@5.6.2) + '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0)(typescript@5.4.5) transitivePeerDependencies: - supports-color - typescript @@ -9844,7 +9732,7 @@ packages: resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} dev: true - /@turbo/gen@2.1.2(@types/node@22.6.1)(typescript@5.6.2): + /@turbo/gen@2.1.2(@types/node@22.6.1)(typescript@5.4.5): resolution: {integrity: sha512-YsRYh6+J+1VCP+TI1wT6ZR7lXVcXTaAUZ0+jY5xHOs1zR9Z5AR0ltTOVM1r01YUHVdk2eULD8ukRPMVDgZxRvw==} hasBin: true dependencies: @@ -9856,7 +9744,7 @@ packages: node-plop: 0.26.3 picocolors: 1.0.1 proxy-agent: 6.4.0 - ts-node: 10.9.2(@types/node@22.6.1)(typescript@5.6.2) + ts-node: 10.9.2(@types/node@22.6.1)(typescript@5.4.5) update-check: 1.5.4 validate-npm-package-name: 5.0.1 transitivePeerDependencies: @@ -9932,7 +9820,7 @@ packages: /@types/bn.js@4.11.6: resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} dependencies: - '@types/node': 12.20.55 + '@types/node': 22.6.1 dev: false /@types/bn.js@5.1.6: @@ -10367,10 +10255,6 @@ packages: resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==} dev: true - /@types/triple-beam@1.3.5: - resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} - dev: false - /@types/trusted-types@2.0.7: resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} dev: false @@ -10411,7 +10295,7 @@ packages: dependencies: '@types/yargs-parser': 21.0.3 - /@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.1)(typescript@5.6.2): + /@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.1)(typescript@5.4.5): resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -10423,22 +10307,22 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.11.1 - '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.6.2) + '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.4.5) '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.6.2) + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@5.4.5) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.18.0 eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.6.2) - typescript: 5.6.2 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2): + /@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.4.5): resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -10450,11 +10334,11 @@ packages: dependencies: '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.2) + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.18.0 debug: 4.3.7(supports-color@8.1.1) eslint: 8.57.1 - typescript: 5.6.2 + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true @@ -10467,7 +10351,7 @@ packages: '@typescript-eslint/visitor-keys': 7.18.0 dev: true - /@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@5.6.2): + /@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@5.4.5): resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -10477,12 +10361,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.2) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.6.2) + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.4.5) debug: 4.3.7(supports-color@8.1.1) eslint: 8.57.1 - ts-api-utils: 1.3.0(typescript@5.6.2) - typescript: 5.6.2 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true @@ -10492,7 +10376,7 @@ packages: engines: {node: ^18.18.0 || >=20.0.0} dev: true - /@typescript-eslint/typescript-estree@7.18.0(typescript@5.6.2): + /@typescript-eslint/typescript-estree@7.18.0(typescript@5.4.5): resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -10508,13 +10392,13 @@ packages: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.6.2) - typescript: 5.6.2 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.6.2): + /@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.4.5): resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -10523,7 +10407,7 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.2) + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.4.5) eslint: 8.57.1 transitivePeerDependencies: - supports-color @@ -12141,10 +12025,6 @@ packages: tslib: 2.7.0 dev: false - /async@3.2.6: - resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} - dev: false - /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false @@ -12158,11 +12038,6 @@ packages: engines: {node: '>=8.0.0'} dev: false - /auto-bind@4.0.0: - resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==} - engines: {node: '>=8'} - dev: false - /autoprefixer@10.4.20(postcss@8.4.47): resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} engines: {node: ^10 || ^12 || >=14} @@ -12189,13 +12064,6 @@ packages: engines: {node: '>=4'} dev: true - /axios-retry@3.9.1: - resolution: {integrity: sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==} - dependencies: - '@babel/runtime': 7.25.6 - is-retry-allowed: 2.2.0 - dev: false - /axios@0.21.4: resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} dependencies: @@ -12423,10 +12291,6 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - /bitwise@2.2.1: - resolution: {integrity: sha512-eJUCdmPCux/zz2joOoExymwjUGvmfrxb8JhdJ6vC8jZPP/pqnG6Zs0qZh54BLIUMZHwHnA+nv6GFAad8LvCvCg==} - dev: false - /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: @@ -13141,20 +13005,6 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - dev: false - - /color@3.2.1: - resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} - dependencies: - color-convert: 1.9.3 - color-string: 1.9.1 - dev: false - /colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} @@ -13165,18 +13015,6 @@ packages: /colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - /colors@1.4.0: - resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} - engines: {node: '>=0.1.90'} - dev: false - - /colorspace@1.1.4: - resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} - dependencies: - color: 3.2.1 - text-hex: 1.0.0 - dev: false - /combine-promises@1.2.0: resolution: {integrity: sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==} engines: {node: '>=10'} @@ -13422,7 +13260,7 @@ packages: yaml: 1.10.2 dev: false - /cosmiconfig@8.3.6(typescript@5.6.2): + /cosmiconfig@8.3.6(typescript@5.4.5): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: @@ -13435,7 +13273,7 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 5.6.2 + typescript: 5.4.5 /cosmiconfig@9.0.0(typescript@5.4.5): resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} @@ -14372,11 +14210,6 @@ packages: resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} dev: false - /detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - dev: false - /detect-libc@1.0.3: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} engines: {node: '>=0.10'} @@ -14679,10 +14512,6 @@ packages: /emoticon@4.1.0: resolution: {integrity: sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==} - /enabled@2.0.0: - resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} - dev: false - /enc-utils@3.0.0: resolution: {integrity: sha512-e57t/Z2HzWOLwOp7DZcV0VMEY8t7ptWwsxyp6kM2b2zrk6JqIpXxzkruHAMiBsy5wg9jp/183GdiRXCvBtzsYg==} dependencies: @@ -15026,7 +14855,7 @@ packages: optionalDependencies: source-map: 0.6.1 - /eslint-config-next@14.2.13(eslint@8.57.1)(typescript@5.6.2): + /eslint-config-next@14.2.13(eslint@8.57.1)(typescript@5.4.5): resolution: {integrity: sha512-aro1EKAoyYchnO/3Tlo91hnNBO7QO7qnv/79MAFC+4Jq8TdUVKQlht5d2F+YjrePjdpOvfL+mV9JPfyYNwkk1g==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -15037,8 +14866,8 @@ packages: dependencies: '@next/eslint-plugin-next': 14.2.13 '@rushstack/eslint-patch': 1.10.4 - '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.6.2) + '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.1)(typescript@5.4.5) + '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.4.5) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.18.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1) @@ -15046,7 +14875,7 @@ packages: eslint-plugin-jsx-a11y: 6.10.0(eslint@8.57.1) eslint-plugin-react: 7.36.1(eslint@8.57.1) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) - typescript: 5.6.2 + typescript: 5.4.5 transitivePeerDependencies: - eslint-import-resolver-webpack - eslint-plugin-import-x @@ -15132,7 +14961,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.6.2) + '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.4.5) debug: 3.2.7 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 @@ -15152,7 +14981,7 @@ packages: optional: true dependencies: '@rtsao/scc': 1.1.0 - '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.6.2) + '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.4.5) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 @@ -15895,10 +15724,6 @@ packages: dependencies: bser: 2.1.1 - /fecha@4.2.3: - resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} - dev: false - /feed@4.2.2: resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==} engines: {node: '>=0.4.0'} @@ -16050,10 +15875,6 @@ packages: engines: {node: '>=0.4.0'} dev: false - /fn.name@1.1.0: - resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} - dev: false - /follow-redirects@1.15.9(debug@4.3.7): resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} engines: {node: '>=4.0'} @@ -16077,7 +15898,7 @@ packages: cross-spawn: 7.0.3 signal-exit: 4.1.0 - /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.1)(typescript@5.6.2)(webpack@5.94.0): + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.1)(typescript@5.4.5)(webpack@5.94.0): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -16105,7 +15926,7 @@ packages: schema-utils: 2.7.0 semver: 7.6.3 tapable: 1.1.3 - typescript: 5.6.2 + typescript: 5.4.5 webpack: 5.94.0 /form-data-encoder@2.1.4: @@ -16138,26 +15959,10 @@ packages: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} - /fp-ts-std@0.5.2(fp-ts@2.9.3)(monocle-ts@2.3.13)(newtype-ts@0.3.5): - resolution: {integrity: sha512-JgahLrHA2dANTA//9uGeH+ZDNjpdNPnvxKTSRQSEIo1TPPgIKFch4nYIsGcwFDQlv38Idm1BB3YMHxylcCVpgQ==} - peerDependencies: - fp-ts: ^2.0.0 - monocle-ts: ^2.0.0 - newtype-ts: ^0.3.0 - dependencies: - fp-ts: 2.9.3 - monocle-ts: 2.3.13(fp-ts@2.9.3) - newtype-ts: 0.3.5(fp-ts@2.9.3)(monocle-ts@2.3.13) - dev: false - /fp-ts@1.19.3: resolution: {integrity: sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==} dev: false - /fp-ts@2.9.3: - resolution: {integrity: sha512-NjzcHYgigcbPQ6yJ52zwgsVDwKz3vwy9sjbxyzcvfXQm+j1BGeOPRuzLKEwsLyE4Xut6gG1FXJtsU9/gUB7tXg==} - dev: false - /fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} @@ -17256,12 +17061,6 @@ packages: /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - /ignore-walk@3.0.4: - resolution: {integrity: sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==} - dependencies: - minimatch: 3.1.2 - dev: false - /ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -17439,44 +17238,12 @@ packages: dependencies: loose-envify: 1.4.0 - /io-ts-reporters@1.2.2(fp-ts@2.9.3)(io-ts@2.2.13): - resolution: {integrity: sha512-igASwWWkDY757OutNcM6zTtdJf/eTZYkoe2ymsX2qpm5bKZLo74FJYjsCtMQOEdY7dRHLLEulCyFQwdN69GBCg==} - peerDependencies: - fp-ts: ^2.0.2 - io-ts: ^2.0.0 - dependencies: - fp-ts: 2.9.3 - io-ts: 2.2.13(fp-ts@2.9.3) - dev: false - - /io-ts-types@0.5.19(fp-ts@2.9.3)(io-ts@2.2.13)(monocle-ts@2.3.13)(newtype-ts@0.3.5): - resolution: {integrity: sha512-kQOYYDZG5vKre+INIDZbLeDJe+oM+4zLpUkjXyTMyUfoCpjJNyi29ZLkuEAwcPufaYo3yu/BsemZtbdD+NtRfQ==} - peerDependencies: - fp-ts: ^2.0.0 - io-ts: ^2.0.0 - monocle-ts: ^2.0.0 - newtype-ts: ^0.3.2 - dependencies: - fp-ts: 2.9.3 - io-ts: 2.2.13(fp-ts@2.9.3) - monocle-ts: 2.3.13(fp-ts@2.9.3) - newtype-ts: 0.3.5(fp-ts@2.9.3)(monocle-ts@2.3.13) - dev: false - /io-ts@1.10.4: resolution: {integrity: sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==} dependencies: fp-ts: 1.19.3 dev: false - /io-ts@2.2.13(fp-ts@2.9.3): - resolution: {integrity: sha512-BYJgE/BanovJKDvCnAkrr7f3gTucSyk+Sr5VtpouBO1/YfBKUyIn2z1ODG8LEF+1D4sjKZ3Bd/A5/v8JrJe5UQ==} - peerDependencies: - fp-ts: ^2.0.0 - dependencies: - fp-ts: 2.9.3 - dev: false - /ip-address@9.0.5: resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} @@ -17560,10 +17327,6 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - /is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - dev: false - /is-async-function@2.0.0: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} engines: {node: '>= 0.4'} @@ -17835,11 +17598,6 @@ packages: resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} engines: {node: '>=0.10.0'} - /is-retry-allowed@2.2.0: - resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} - engines: {node: '>=10'} - dev: false - /is-root@2.1.0: resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==} engines: {node: '>=6'} @@ -18716,10 +18474,6 @@ packages: engines: {node: '>=6'} dev: false - /kuler@2.0.0: - resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} - dev: false - /language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} dev: true @@ -19033,18 +18787,6 @@ packages: wrap-ansi: 9.0.0 dev: true - /logform@2.6.1: - resolution: {integrity: sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==} - engines: {node: '>= 12.0.0'} - dependencies: - '@colors/colors': 1.6.0 - '@types/triple-beam': 1.3.5 - fecha: 4.2.3 - ms: 2.1.3 - safe-stable-stringify: 2.5.0 - triple-beam: 1.4.1 - dev: false - /logkitty@0.7.1: resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} hasBin: true @@ -19131,17 +18873,6 @@ packages: hasBin: true dev: true - /magic-sdk@18.6.0: - resolution: {integrity: sha512-6FdgZEKVEFZvrGlth2ZiipTEr7ihe0E4wbnPk1WlK3xIxFg3Gr5/Ca1PgWdkvNjKxjngySYykLXdCnwuNjt19w==} - dependencies: - '@magic-sdk/commons': 14.6.0(@magic-sdk/provider@18.6.0)(@magic-sdk/types@15.8.0) - '@magic-sdk/provider': 18.6.0(localforage@1.10.0) - '@magic-sdk/types': 15.8.0 - localforage: 1.10.0 - transitivePeerDependencies: - - supports-color - dev: false - /magic-sdk@21.5.0: resolution: {integrity: sha512-LNSTJGOO1wtJSwoEnO8ehH3RePdYc3lc0pD+SGZWyY78Ly6CgNE15lILBGJvpdaZjZd6wVqDYOf6Hh+PayuNKg==} dependencies: @@ -20462,18 +20193,6 @@ packages: resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==} dev: false - /moment@2.30.1: - resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} - dev: false - - /monocle-ts@2.3.13(fp-ts@2.9.3): - resolution: {integrity: sha512-D5Ygd3oulEoAm3KuGO0eeJIrhFf1jlQIoEVV2DYsZUMz42j4tGxgct97Aq68+F8w4w4geEnwFa8HayTS/7lpKQ==} - peerDependencies: - fp-ts: ^2.5.0 - dependencies: - fp-ts: 2.9.3 - dev: false - /motion@10.16.2: resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} dependencies: @@ -20545,16 +20264,6 @@ packages: '@segment/isodate': 1.0.3 dev: false - /newtype-ts@0.3.5(fp-ts@2.9.3)(monocle-ts@2.3.13): - resolution: {integrity: sha512-v83UEQMlVR75yf1OUdoSFssjitxzjZlqBAjiGQ4WJaML8Jdc68LJ+BaSAXUmKY4bNzp7hygkKLYTsDi14PxI2g==} - peerDependencies: - fp-ts: ^2.0.0 - monocle-ts: ^2.0.0 - dependencies: - fp-ts: 2.9.3 - monocle-ts: 2.3.13(fp-ts@2.9.3) - dev: false - /next-auth@4.24.7(next@14.2.13)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-iChjE8ov/1K/z98gdKbn2Jw+2vLgJtVV39X+rCP5SGnVQuco7QOr19FRNGMIrD8d3LYhHWV9j9sKLzq1aDWWQQ==} peerDependencies: @@ -20775,27 +20484,6 @@ packages: - csstype dev: false - /npm-bundled@1.1.2: - resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} - dependencies: - npm-normalize-package-bin: 1.0.1 - dev: false - - /npm-normalize-package-bin@1.0.1: - resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} - dev: false - - /npm-packlist@2.2.2: - resolution: {integrity: sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==} - engines: {node: '>=10'} - hasBin: true - dependencies: - glob: 7.2.3 - ignore-walk: 3.0.4 - npm-bundled: 1.1.2 - npm-normalize-package-bin: 1.0.1 - dev: false - /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -20990,12 +20678,6 @@ packages: dependencies: wrappy: 1.0.2 - /one-time@1.0.0: - resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} - dependencies: - fn.name: 1.1.0 - dev: false - /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} @@ -21704,14 +21386,14 @@ packages: postcss: 8.4.47 postcss-selector-parser: 6.1.2 - /postcss-loader@7.3.4(postcss@8.4.47)(typescript@5.6.2)(webpack@5.94.0): + /postcss-loader@7.3.4(postcss@8.4.47)(typescript@5.4.5)(webpack@5.94.0): resolution: {integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==} engines: {node: '>= 14.15.0'} peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 dependencies: - cosmiconfig: 8.3.6(typescript@5.6.2) + cosmiconfig: 8.3.6(typescript@5.4.5) jiti: 1.21.6 postcss: 8.4.47 semver: 7.6.3 @@ -22402,7 +22084,7 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /react-dev-utils@12.0.1(eslint@8.57.1)(typescript@5.6.2)(webpack@5.94.0): + /react-dev-utils@12.0.1(eslint@8.57.1)(typescript@5.4.5)(webpack@5.94.0): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -22421,7 +22103,7 @@ packages: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.57.1)(typescript@5.6.2)(webpack@5.94.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.57.1)(typescript@5.4.5)(webpack@5.94.0) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -22436,7 +22118,7 @@ packages: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - typescript: 5.6.2 + typescript: 5.4.5 webpack: 5.94.0 transitivePeerDependencies: - eslint @@ -23841,12 +23523,6 @@ packages: simple-concat: 1.0.1 dev: false - /simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - dependencies: - is-arrayish: 0.3.2 - dev: false - /sirv@2.0.4: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} @@ -24003,13 +23679,6 @@ packages: - debug dev: false - /soltypes@1.3.5: - resolution: {integrity: sha512-jBHYkE8narivBDbbWqYWEOY4UgvaVau/sVPQlhZuB5fTtQBWuBcxvhg+CYyxccAg2dW4tLPavL1oyv+ShKxegg==} - dependencies: - bn.js: 5.2.1 - js-sha3: 0.8.0 - dev: false - /sonic-boom@2.8.0: resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} dependencies: @@ -24104,10 +23773,6 @@ packages: resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} engines: {node: '>=12'} - /stack-trace@0.0.10: - resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} - dev: false - /stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -24588,10 +24253,6 @@ packages: dev: false optional: true - /text-hex@1.0.0: - resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} - dev: false - /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -24708,21 +24369,16 @@ packages: /trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - /triple-beam@1.4.1: - resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} - engines: {node: '>= 14.0.0'} - dev: false - /trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - /ts-api-utils@1.3.0(typescript@5.6.2): + /ts-api-utils@1.3.0(typescript@5.4.5): resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.6.2 + typescript: 5.4.5 dev: true /ts-dedent@2.2.0: @@ -24735,7 +24391,7 @@ packages: engines: {node: '>=14.13.1'} dev: false - /ts-node@10.9.2(@types/node@22.6.1)(typescript@5.6.2): + /ts-node@10.9.2(@types/node@22.6.1)(typescript@5.4.5): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -24761,7 +24417,7 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.6.2 + typescript: 5.4.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true @@ -24962,11 +24618,6 @@ packages: engines: {node: '>=14.17'} hasBin: true - /typescript@5.6.2: - resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} - engines: {node: '>=14.17'} - hasBin: true - /ua-parser-js@1.0.39: resolution: {integrity: sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw==} hasBin: true @@ -26001,32 +25652,6 @@ packages: /wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - /winston-transport@4.7.1: - resolution: {integrity: sha512-wQCXXVgfv/wUPOfb2x0ruxzwkcZfxcktz6JIMUaPLmcNhO4bZTwA/WtDWK74xV3F2dKu8YadrFv0qhwYjVEwhA==} - engines: {node: '>= 12.0.0'} - dependencies: - logform: 2.6.1 - readable-stream: 3.6.2 - triple-beam: 1.4.1 - dev: false - - /winston@3.14.2: - resolution: {integrity: sha512-CO8cdpBB2yqzEf8v895L+GNKYJiEq8eKlHU38af3snQBQ+sdAIUepjMSguOIJC7ICbzm0ZI+Af2If4vIJrtmOg==} - engines: {node: '>= 12.0.0'} - dependencies: - '@colors/colors': 1.6.0 - '@dabh/diagnostics': 2.0.3 - async: 3.2.6 - is-stream: 2.0.1 - logform: 2.6.1 - one-time: 1.0.0 - readable-stream: 3.6.2 - safe-stable-stringify: 2.5.0 - stack-trace: 0.0.10 - triple-beam: 1.4.1 - winston-transport: 4.7.1 - dev: false - /word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -26248,20 +25873,6 @@ packages: engines: {node: '>=0.10.32'} dev: false - /yalc@1.0.0-pre.53: - resolution: {integrity: sha512-tpNqBCpTXplnduzw5XC+FF8zNJ9L/UXmvQyyQj7NKrDNavbJtHvzmZplL5ES/RCnjX7JR7W9wz5GVDXVP3dHUQ==} - hasBin: true - dependencies: - chalk: 4.1.2 - detect-indent: 6.1.0 - fs-extra: 8.1.0 - glob: 7.2.3 - ignore: 5.3.2 - ini: 2.0.0 - npm-packlist: 2.2.2 - yargs: 16.2.0 - dev: false - /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}