From 7329f9ae15a2e514aef9ecbac9355c96eccb8c35 Mon Sep 17 00:00:00 2001 From: Pavan Soratur Date: Thu, 30 Nov 2023 01:41:51 -0800 Subject: [PATCH 1/3] EVM Staking - Initial Delegations & Payouts Table (#1863) --- apps/tangle-dapp/app/page.tsx | 5 + .../DelegatorTable/DelegatorTable.tsx | 111 ++++++++++++++++ .../components/DelegatorTable/index.ts | 1 + .../components/DelegatorTable/types.ts | 6 + .../components/TableStatus/TableStatus.tsx | 46 +++++++ .../components/TableStatus/index.ts | 1 + .../components/TableStatus/types.ts | 10 ++ apps/tangle-dapp/components/index.ts | 2 + .../DelegationsPayoutsContainer.tsx | 120 ++++++++++++++++++ .../DelegatorTableContainer.tsx | 12 ++ .../DelegationsPayoutsContainer/index.ts | 1 + apps/tangle-dapp/containers/Layout/Layout.tsx | 4 +- .../ValidatorTablesContainer.tsx | 4 +- apps/tangle-dapp/containers/index.ts | 1 + .../data/DelegationsPayouts/useDelegations.ts | 115 +++++++++++++++++ apps/tangle-dapp/types/index.ts | 7 + package.json | 2 +- tools/tsconfig.json | 4 +- 18 files changed, 445 insertions(+), 7 deletions(-) create mode 100644 apps/tangle-dapp/components/DelegatorTable/DelegatorTable.tsx create mode 100644 apps/tangle-dapp/components/DelegatorTable/index.ts create mode 100644 apps/tangle-dapp/components/DelegatorTable/types.ts create mode 100644 apps/tangle-dapp/components/TableStatus/TableStatus.tsx create mode 100644 apps/tangle-dapp/components/TableStatus/index.ts create mode 100644 apps/tangle-dapp/components/TableStatus/types.ts create mode 100644 apps/tangle-dapp/containers/DelegationsPayoutsContainer/DelegationsPayoutsContainer.tsx create mode 100644 apps/tangle-dapp/containers/DelegationsPayoutsContainer/DelegatorTableContainer.tsx create mode 100644 apps/tangle-dapp/containers/DelegationsPayoutsContainer/index.ts create mode 100644 apps/tangle-dapp/data/DelegationsPayouts/useDelegations.ts diff --git a/apps/tangle-dapp/app/page.tsx b/apps/tangle-dapp/app/page.tsx index 1a0201d30a..15f125a50d 100644 --- a/apps/tangle-dapp/app/page.tsx +++ b/apps/tangle-dapp/app/page.tsx @@ -1,6 +1,7 @@ import { Typography } from '@webb-tools/webb-ui-components'; import { + DelegationsPayoutsContainer, HeaderChipsContainer, KeyStatsContainer, NominatorStatsContainer, @@ -26,6 +27,10 @@ export default async function Index() { +
+ +
+
diff --git a/apps/tangle-dapp/components/DelegatorTable/DelegatorTable.tsx b/apps/tangle-dapp/components/DelegatorTable/DelegatorTable.tsx new file mode 100644 index 0000000000..124ab740da --- /dev/null +++ b/apps/tangle-dapp/components/DelegatorTable/DelegatorTable.tsx @@ -0,0 +1,111 @@ +'use client'; + +import { + createColumnHelper, + getCoreRowModel, + getFilteredRowModel, + getPaginationRowModel, + getSortedRowModel, + useReactTable, +} from '@tanstack/react-table'; +import { ExternalLinkLine } from '@webb-tools/icons'; +import { + Avatar, + Chip, + fuzzyFilter, + shortenString, + Table, + Typography, +} from '@webb-tools/webb-ui-components'; +import { TANGLE_STAKING_URL } from '@webb-tools/webb-ui-components/constants'; +import { type FC, useCallback } from 'react'; + +import { Delegator } from '../../types'; +import { HeaderCell, StringCell } from '../tableCells'; +import { DelegatorTableProps } from './types'; + +const columnHelper = createColumnHelper(); + +const columns = [ + columnHelper.accessor('address', { + header: () => , + cell: (props) => { + const address = props.getValue(); + const identity = props.row.original.identity; + + return ( +
+ + {address} + + + + {identity === address ? shortenString(address, 6) : identity} + + + +
+ ); + }, + }), + columnHelper.accessor('isActive', { + header: () => , + cell: (props) => { + const isActive = props.getValue(); + return ( + + {isActive ? 'Active' : 'Waiting'} + + ); + }, + }), + columnHelper.accessor('totalStaked', { + header: () => ( + + ), + cell: (props) => ( + + ), + }), +]; + +const DelegatorTable: FC = ({ data = [], pageSize }) => { + const table = useReactTable({ + data, + columns, + initialState: { + pagination: { + pageSize, + }, + }, + filterFns: { + fuzzy: fuzzyFilter, + }, + globalFilterFn: fuzzyFilter, + getCoreRowModel: getCoreRowModel(), + getFilteredRowModel: getFilteredRowModel(), + getSortedRowModel: getSortedRowModel(), + getPaginationRowModel: getPaginationRowModel(), + }); + + const onRowClick = useCallback(() => { + window.open(TANGLE_STAKING_URL, '_blank'); + }, []); + + return ( +
+ + + ); +}; + +export default DelegatorTable; diff --git a/apps/tangle-dapp/components/DelegatorTable/index.ts b/apps/tangle-dapp/components/DelegatorTable/index.ts new file mode 100644 index 0000000000..7d2aa0e533 --- /dev/null +++ b/apps/tangle-dapp/components/DelegatorTable/index.ts @@ -0,0 +1 @@ +export { default as DelegatorTable } from './DelegatorTable'; diff --git a/apps/tangle-dapp/components/DelegatorTable/types.ts b/apps/tangle-dapp/components/DelegatorTable/types.ts new file mode 100644 index 0000000000..2cdb2a3629 --- /dev/null +++ b/apps/tangle-dapp/components/DelegatorTable/types.ts @@ -0,0 +1,6 @@ +import { Delegator } from '../../types'; + +export interface DelegatorTableProps { + data?: Delegator[]; + pageSize: number; +} diff --git a/apps/tangle-dapp/components/TableStatus/TableStatus.tsx b/apps/tangle-dapp/components/TableStatus/TableStatus.tsx new file mode 100644 index 0000000000..fda99d8899 --- /dev/null +++ b/apps/tangle-dapp/components/TableStatus/TableStatus.tsx @@ -0,0 +1,46 @@ +import { Button, Typography } from '@webb-tools/webb-ui-components'; +import { twMerge } from 'tailwind-merge'; + +import { TableStatusProps } from './types'; + +const TableStatus = ({ + title, + description, + icon, + buttonText, + buttonProps, + className, +}: TableStatusProps) => { + return ( +
+
+ {icon} + + {title} + + + {description} + +
+ + {buttonText && } +
+ ); +}; + +export default TableStatus; diff --git a/apps/tangle-dapp/components/TableStatus/index.ts b/apps/tangle-dapp/components/TableStatus/index.ts new file mode 100644 index 0000000000..fc95feeb98 --- /dev/null +++ b/apps/tangle-dapp/components/TableStatus/index.ts @@ -0,0 +1 @@ +export { default as TableStatus } from './TableStatus'; diff --git a/apps/tangle-dapp/components/TableStatus/types.ts b/apps/tangle-dapp/components/TableStatus/types.ts new file mode 100644 index 0000000000..42ec3d816b --- /dev/null +++ b/apps/tangle-dapp/components/TableStatus/types.ts @@ -0,0 +1,10 @@ +import { ButtonProps } from '@webb-tools/webb-ui-components'; + +export type TableStatusProps = { + icon?: string; + title: string; + description: string; + buttonText?: string; + buttonProps?: ButtonProps; + className?: string; +}; diff --git a/apps/tangle-dapp/components/index.ts b/apps/tangle-dapp/components/index.ts index 622c21ea71..a9d544fe09 100644 --- a/apps/tangle-dapp/components/index.ts +++ b/apps/tangle-dapp/components/index.ts @@ -1,10 +1,12 @@ export * from './Breadcrumbs'; export * from './ChainSelector'; +export * from './DelegatorTable'; export * from './HeaderChip'; export * from './InfoIconWithTooltip'; export * from './KeyStatsItem'; export * from './NominatorStatsItem'; export * from './sideBar'; export * from './skeleton'; +export * from './TableStatus'; export * from './ValidatorTable'; export * from './WalletDropdown'; diff --git a/apps/tangle-dapp/containers/DelegationsPayoutsContainer/DelegationsPayoutsContainer.tsx b/apps/tangle-dapp/containers/DelegationsPayoutsContainer/DelegationsPayoutsContainer.tsx new file mode 100644 index 0000000000..f37d521578 --- /dev/null +++ b/apps/tangle-dapp/containers/DelegationsPayoutsContainer/DelegationsPayoutsContainer.tsx @@ -0,0 +1,120 @@ +'use client'; + +import { + useConnectWallet, + useWebContext, +} from '@webb-tools/api-provider-environment'; +import { PresetTypedChainId } from '@webb-tools/dapp-types'; +import { + TabContent, + TableAndChartTabs, + useCheckMobile, +} from '@webb-tools/webb-ui-components'; +import { TANGLE_STAKING_URL } from '@webb-tools/webb-ui-components/constants'; +import { useMemo } from 'react'; + +import { ContainerSkeleton, TableStatus } from '../../components'; +import useDelegations from '../../data/DelegationsPayouts/useDelegations'; +import { convertEthereumToSubstrateAddress } from '../../utils'; +import DelegatorTableContainer from './DelegatorTableContainer'; + +const pageSize = 5; +const delegationsTableTab = 'Delegations'; +const payoutsTableTab = 'Payouts'; + +const DelegationsPayoutsContainer = () => { + const { activeAccount, loading } = useWebContext(); + + const nominatorSubstrateAddress = useMemo(() => { + if (!activeAccount?.address) return ''; + + return convertEthereumToSubstrateAddress(activeAccount.address); + }, [activeAccount?.address]); + + const { data: delegatorsData, isLoading: delegatorsIsLoading } = + useDelegations(nominatorSubstrateAddress); + + const { isMobile } = useCheckMobile(); + + const { toggleModal } = useConnectWallet(); + + return ( + + {/* Delegations Table */} + + {!activeAccount ? ( + + toggleModal( + true, + PresetTypedChainId.TangleTestnet ?? undefined + ), + }} + icon="πŸ”—" + /> + ) : delegatorsIsLoading ? ( + + ) : delegatorsData && delegatorsData.delegators.length === 0 ? ( + + ) : delegatorsData ? ( + + ) : null} + + + {/* Payouts Table */} + + {!activeAccount ? ( + + toggleModal( + true, + PresetTypedChainId.TangleTestnet ?? undefined + ), + }} + icon="πŸ”—" + /> + ) : ( + window.open(TANGLE_STAKING_URL, '_blank'), + }} + icon="πŸ”§" + /> + )} + + + ); +}; + +export default DelegationsPayoutsContainer; diff --git a/apps/tangle-dapp/containers/DelegationsPayoutsContainer/DelegatorTableContainer.tsx b/apps/tangle-dapp/containers/DelegationsPayoutsContainer/DelegatorTableContainer.tsx new file mode 100644 index 0000000000..ec6d65b347 --- /dev/null +++ b/apps/tangle-dapp/containers/DelegationsPayoutsContainer/DelegatorTableContainer.tsx @@ -0,0 +1,12 @@ +import { DelegatorTable } from '../../components'; +import { Delegator } from '../../types'; + +export default function DelegatorTableContainer({ + pageSize, + value, +}: { + pageSize: number; + value: Delegator[]; +}) { + return ; +} diff --git a/apps/tangle-dapp/containers/DelegationsPayoutsContainer/index.ts b/apps/tangle-dapp/containers/DelegationsPayoutsContainer/index.ts new file mode 100644 index 0000000000..638c7168ab --- /dev/null +++ b/apps/tangle-dapp/containers/DelegationsPayoutsContainer/index.ts @@ -0,0 +1 @@ +export { default as DelegationsPayoutsContainer } from './DelegationsPayoutsContainer'; diff --git a/apps/tangle-dapp/containers/Layout/Layout.tsx b/apps/tangle-dapp/containers/Layout/Layout.tsx index a43f011eb2..9de7dfaf00 100644 --- a/apps/tangle-dapp/containers/Layout/Layout.tsx +++ b/apps/tangle-dapp/containers/Layout/Layout.tsx @@ -3,7 +3,7 @@ import { getSideBarStateFromCookie } from '@webb-tools/webb-ui-components/next-u import React, { type FC, type PropsWithChildren } from 'react'; import { Breadcrumbs, SideBar, SideBarMenu } from '../../components'; -import WalletAndChainCointainer from '../WalletAndChainContainer/WalletAndChainContainer'; +import WalletAndChainContainer from '../WalletAndChainContainer/WalletAndChainContainer'; import { WalletModalContainer } from '../WalletModalContainer'; const Layout: FC = ({ children }) => { @@ -22,7 +22,7 @@ const Layout: FC = ({ children }) => { - + {children} diff --git a/apps/tangle-dapp/containers/ValidatorTablesContainer/ValidatorTablesContainer.tsx b/apps/tangle-dapp/containers/ValidatorTablesContainer/ValidatorTablesContainer.tsx index 4c297b54e3..13ed7e2563 100644 --- a/apps/tangle-dapp/containers/ValidatorTablesContainer/ValidatorTablesContainer.tsx +++ b/apps/tangle-dapp/containers/ValidatorTablesContainer/ValidatorTablesContainer.tsx @@ -14,7 +14,7 @@ const pageSize = 10; const activeValidatorsTableTab = 'Active Validators'; const waitingValidatorsTableTab = 'Waiting'; -const ShieldedTablesContainer = () => { +const ValidatorTablesContainer = () => { const { data: activeValidatorsData, isLoading: activeValidatorsDataLoading } = useSWR([getActiveValidators.name], ([, ...args]) => getActiveValidators(...args) @@ -59,4 +59,4 @@ const ShieldedTablesContainer = () => { ); }; -export default ShieldedTablesContainer; +export default ValidatorTablesContainer; diff --git a/apps/tangle-dapp/containers/index.ts b/apps/tangle-dapp/containers/index.ts index f30990253d..248f9d3b38 100644 --- a/apps/tangle-dapp/containers/index.ts +++ b/apps/tangle-dapp/containers/index.ts @@ -1,3 +1,4 @@ +export * from './DelegationsPayoutsContainer'; export * from './HeaderChipsContainer'; export * from './KeyStatsContainer'; export { Layout } from './Layout'; diff --git a/apps/tangle-dapp/data/DelegationsPayouts/useDelegations.ts b/apps/tangle-dapp/data/DelegationsPayouts/useDelegations.ts new file mode 100644 index 0000000000..583ecf497a --- /dev/null +++ b/apps/tangle-dapp/data/DelegationsPayouts/useDelegations.ts @@ -0,0 +1,115 @@ +'use client'; + +import { u128 } from '@polkadot/types'; +import { WebbError, WebbErrorCodes } from '@webb-tools/dapp-types/WebbError'; +import { useEffect, useState } from 'react'; +import { Subscription } from 'rxjs'; + +import { + formatTokenBalance, + getPolkadotApiPromise, + getPolkadotApiRx, + getValidatorIdentity, +} from '../../constants'; +import useFormatReturnType from '../../hooks/useFormatReturnType'; +import { Delegator } from '../../types'; + +export default function useDelegations( + address: string, + defaultValue: { delegators: Delegator[] } = { + delegators: [], + } +) { + const [delegators, setDelegators] = useState(defaultValue.delegators); + const [isLoading, setIsLoading] = useState(true); + const [error, setError] = useState(null); + + useEffect(() => { + let isMounted = true; + let sub: Subscription | null = null; + + const subscribeData = async () => { + if (!address) { + if (isMounted) { + setDelegators([]); + setIsLoading(false); + } + return; + } + + try { + const apiSub = await getPolkadotApiRx(); + const apiPromise = await getPolkadotApiPromise(); + if (!apiSub || !apiPromise) { + throw WebbError.from(WebbErrorCodes.ApiNotReady); + } + + setIsLoading(true); + + sub = apiSub.query.staking + .nominators(address) + .subscribe(async (nominatorData) => { + const targets = nominatorData.unwrapOrDefault().targets; + + const delegators: Delegator[] = await Promise.all( + targets.map(async (target) => { + const ledger = await apiPromise.query.staking.ledger( + target.toString() + ); + const ledgerData = ledger.unwrapOrDefault(); + const totalStaked = new u128( + apiPromise.registry, + ledgerData.total.toString() + ); + const totalStakedBalance = await formatTokenBalance( + totalStaked + ); + + const isActive = await apiPromise.query.session + .validators() + .then((activeValidators) => + activeValidators.some( + (val) => val.toString() === target.toString() + ) + ); + + const identity = await getValidatorIdentity(target.toString()); + + return { + address: target.toString(), + identity: identity ?? '', + totalStaked: totalStakedBalance ?? '', + isActive, + }; + }) + ); + + if (isMounted) { + setDelegators(delegators); + setIsLoading(false); + } + }); + } catch (e) { + if (isMounted) { + setError( + e instanceof Error ? e : WebbError.from(WebbErrorCodes.UnknownError) + ); + setIsLoading(false); + } + } + }; + + subscribeData(); + + return () => { + isMounted = false; + sub?.unsubscribe(); + }; + }, [address]); + + return useFormatReturnType({ + isLoading, + error, + data: { delegators }, + }); +} diff --git a/apps/tangle-dapp/types/index.ts b/apps/tangle-dapp/types/index.ts index 7fde3c01d6..23f5d92028 100644 --- a/apps/tangle-dapp/types/index.ts +++ b/apps/tangle-dapp/types/index.ts @@ -5,3 +5,10 @@ export type Validator = { effectiveAmountStaked: string; delegations: string; }; + +export type Delegator = { + address: string; + identity: string; + totalStaked: string; + isActive: boolean; +}; diff --git a/package.json b/package.json index 41ab23ed64..136889feaf 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "test": "nx run-many --all --target=test", "lint": "nx run-many --all --target=lint", "gql:codegen": "graphql-codegen --config apps/stats-dapp/codegen.yml", - "fetch:onChainConfig": "TS_NODE_PROJECT=\"tools/tsconfig.json\" ts-node-esm tools/scripts/fetchingOnChainConfig.ts", + "fetch:onChainConfig": "TS_NODE_PROJECT=\"tools/tsconfig.json\" yarn ts-node tools/scripts/fetchingOnChainConfig.ts", "build:bridge": "nx build bridge-dapp", "build:stats": "nx build stats-dapp", "build:webbsite": "nx build webbsite", diff --git a/tools/tsconfig.json b/tools/tsconfig.json index f67adfe06f..f4e9aa04df 100644 --- a/tools/tsconfig.json +++ b/tools/tsconfig.json @@ -1,11 +1,11 @@ { "extends": "../tsconfig.base.json", "ts-node": { + "transpileOnly": true, "require": ["tsconfig-paths/register"], "compilerOptions": { "target": "es6", - "module": "commonjs", - "esModuleInterop": true + "module": "commonjs" } }, "compilerOptions": { From e8445e2a88b258b6b031ac1b788527ed7ec7e6ba Mon Sep 17 00:00:00 2001 From: vutuanlinh2k2 <69841784+vutuanlinh2k2@users.noreply.github.com> Date: Fri, 1 Dec 2023 00:28:38 +0700 Subject: [PATCH 2/3] Governance Page components (#1862) --- .../src/components/ChainsRing/ChainsRing.tsx | 4 +- .../src/components/ChainsRing/types.ts | 4 +- .../GovernanceForm/GovernanceForm.tsx | 92 ------------- .../src/components/GovernanceForm/index.ts | 3 - .../src/components/GovernanceForm/types.ts | 15 --- .../src/components/GovernanceForm/utils.ts | 40 ------ .../components/ListCard/ContractListCard.tsx | 114 ++++++++++++++++ .../components/ListCard/ListCardWrapper.tsx | 9 +- .../src/components/ListCard/index.ts | 1 + .../src/components/ListCard/types.ts | 31 +++++ .../src/components/index.ts | 1 - .../GovernanceContractDetailCard.tsx | 127 ++++++++++++++++++ .../GovernanceFncCaller.tsx} | 36 +++-- .../GovernanceContractDetailCard/index.ts | 3 + .../GovernanceContractDetailCard/types.ts | 51 +++++++ .../src/containers/index.ts | 5 +- .../molecules/ContractListCard.stories.tsx | 37 +++++ .../GovernanceContractDetailCard.stories.tsx | 39 ++++++ .../templates/GovernanceForm.stories.tsx | 27 ---- 19 files changed, 443 insertions(+), 196 deletions(-) delete mode 100644 libs/webb-ui-components/src/components/GovernanceForm/GovernanceForm.tsx delete mode 100644 libs/webb-ui-components/src/components/GovernanceForm/index.ts delete mode 100644 libs/webb-ui-components/src/components/GovernanceForm/types.ts delete mode 100644 libs/webb-ui-components/src/components/GovernanceForm/utils.ts create mode 100644 libs/webb-ui-components/src/components/ListCard/ContractListCard.tsx create mode 100644 libs/webb-ui-components/src/containers/GovernanceContractDetailCard/GovernanceContractDetailCard.tsx rename libs/webb-ui-components/src/{components/GovernanceForm/FunctionInputs.tsx => containers/GovernanceContractDetailCard/GovernanceFncCaller.tsx} (63%) create mode 100644 libs/webb-ui-components/src/containers/GovernanceContractDetailCard/index.ts create mode 100644 libs/webb-ui-components/src/containers/GovernanceContractDetailCard/types.ts create mode 100644 libs/webb-ui-components/src/stories/molecules/ContractListCard.stories.tsx create mode 100644 libs/webb-ui-components/src/stories/templates/GovernanceContractDetailCard.stories.tsx delete mode 100644 libs/webb-ui-components/src/stories/templates/GovernanceForm.stories.tsx diff --git a/libs/webb-ui-components/src/components/ChainsRing/ChainsRing.tsx b/libs/webb-ui-components/src/components/ChainsRing/ChainsRing.tsx index 63798030c2..88d3643162 100644 --- a/libs/webb-ui-components/src/components/ChainsRing/ChainsRing.tsx +++ b/libs/webb-ui-components/src/components/ChainsRing/ChainsRing.tsx @@ -5,14 +5,14 @@ import { chainsConfig } from '@webb-tools/dapp-config/chains/chain-config'; import { Tooltip, TooltipBody, TooltipTrigger } from '../Tooltip'; import { useDarkMode } from '../../hooks/useDarkMode'; -import type { ChainsRingProps, ChainItem } from './types'; +import type { ChainsRingProps, ChainRingItemType } from './types'; const ChainsRing = forwardRef( ({ circleContent, additionalSvgContent, chainItems }, ref) => { const [isDarkMode] = useDarkMode(); const getStrokeColor = useCallback( - (item?: ChainItem) => { + (item?: ChainRingItemType) => { if (item === undefined) return '#9CA0B0'; return item.isActive ? (isDarkMode ? '#4B3AA4' : '#B5A9F2') : '#9CA0B0'; }, diff --git a/libs/webb-ui-components/src/components/ChainsRing/types.ts b/libs/webb-ui-components/src/components/ChainsRing/types.ts index 67ae6a4ea2..cf5c5829b2 100644 --- a/libs/webb-ui-components/src/components/ChainsRing/types.ts +++ b/libs/webb-ui-components/src/components/ChainsRing/types.ts @@ -3,10 +3,10 @@ import { PropsOf } from '../../types'; export interface ChainsRingProps extends PropsOf<'div'> { circleContent?: React.ReactNode; additionalSvgContent?: React.ReactNode; - chainItems: Array; + chainItems: Array; } -export type ChainItem = { +export type ChainRingItemType = { typedChainId: number; onClick?: () => void; isActive?: boolean; diff --git a/libs/webb-ui-components/src/components/GovernanceForm/GovernanceForm.tsx b/libs/webb-ui-components/src/components/GovernanceForm/GovernanceForm.tsx deleted file mode 100644 index 4af23c1aba..0000000000 --- a/libs/webb-ui-components/src/components/GovernanceForm/GovernanceForm.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import { type FC, useCallback, useMemo, useState } from 'react'; -import { getAbiItem } from 'viem'; -import cx from 'classnames'; -import { chainsConfig } from '@webb-tools/dapp-config/chains/chain-config'; - -import ChainsRing from '../ChainsRing'; -import FunctionInputs from './FunctionInputs'; -import { Typography } from '../../typography'; -import type { GovernanceFormProps, FunctionInfoType } from './types'; -import type { ChainItem } from '../ChainsRing/types'; - -const GovernanceForm: FC = ({ - abi, - typedChainIdSelections, - governanceFncNames, -}) => { - const [selectedTypedChainId, setSelectedTypedChainId] = useState< - number | undefined - >(); - - const fncInfos = useMemo( - () => - governanceFncNames.map((fncName) => { - const item = getAbiItem({ - abi, - name: fncName, - }); - return { - fncName: item.name, - fncParams: item.inputs.map((input) => ({ - name: input.name, - type: input.type, - })), - }; - }), - [abi, governanceFncNames] - ); - - const chainRingItems = useMemo( - () => - typedChainIdSelections.map((typedChainId) => { - return { - typedChainId, - isActive: selectedTypedChainId === typedChainId, - onClick: () => handleSelectedChain(typedChainId), - }; - }), - [typedChainIdSelections, selectedTypedChainId] - ); - - const handleSelectedChain = useCallback((typedChainId: number) => { - setSelectedTypedChainId(typedChainId); - }, []); - - return ( -
- {/* Chains Ring */} - - - {selectedTypedChainId !== undefined - ? chainsConfig[selectedTypedChainId].name - : 'Select Chain'} - -
- } - /> - - {/* Form */} -
- {fncInfos.map((fncInfo) => ( - - ))} -
- - ); -}; - -export default GovernanceForm; diff --git a/libs/webb-ui-components/src/components/GovernanceForm/index.ts b/libs/webb-ui-components/src/components/GovernanceForm/index.ts deleted file mode 100644 index 54e818e7c7..0000000000 --- a/libs/webb-ui-components/src/components/GovernanceForm/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { default as GovernanceForm } from './GovernanceForm'; - -export default GovernanceForm; diff --git a/libs/webb-ui-components/src/components/GovernanceForm/types.ts b/libs/webb-ui-components/src/components/GovernanceForm/types.ts deleted file mode 100644 index 73fadcae33..0000000000 --- a/libs/webb-ui-components/src/components/GovernanceForm/types.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { Abi } from 'viem'; - -export interface GovernanceFormProps { - abi: Abi; - typedChainIdSelections: number[]; - governanceFncNames: string[]; -} - -export type FunctionInfoType = { - fncName: string; - fncParams: { - name?: string; - type: string; - }[]; -}; diff --git a/libs/webb-ui-components/src/components/GovernanceForm/utils.ts b/libs/webb-ui-components/src/components/GovernanceForm/utils.ts deleted file mode 100644 index 7a509c66fe..0000000000 --- a/libs/webb-ui-components/src/components/GovernanceForm/utils.ts +++ /dev/null @@ -1,40 +0,0 @@ -export const MAX_NUM_OF_CHAINS = 8; - -export function getChainIconClassNameByIdx(idx: number) { - const baseClassName = 'absolute'; - let positionClassName = ''; - switch (idx % MAX_NUM_OF_CHAINS) { - case 0: - positionClassName = 'top-1/2 translate-y-[-50%] left-[105.5px]'; - break; - case 1: - positionClassName = - 'rotate-45 top-[40px] translate-y-[-50%] left-[131.5px]'; - break; - case 2: - positionClassName = 'top-[2px] translate-x-[50%] right-1/2'; - break; - case 3: - positionClassName = - '-rotate-45 top-[40px] translate-y-[-50%] right-[132.5px]'; - break; - case 4: - positionClassName = 'top-1/2 translate-y-[-50%] right-[105.5px]'; - break; - case 5: - positionClassName = - '-rotate-45 bottom-[16.75px] translate-y-[-50%] right-[132.2575px]'; - break; - case 6: - positionClassName = 'bottom-[2px] translate-x-[50%] right-1/2'; - break; - case 7: - positionClassName = - 'rotate-45 bottom-[17px] translate-y-[-50%] left-[131.5px]'; - break; - default: - break; - } - - return `${baseClassName} ${positionClassName}`; -} diff --git a/libs/webb-ui-components/src/components/ListCard/ContractListCard.tsx b/libs/webb-ui-components/src/components/ListCard/ContractListCard.tsx new file mode 100644 index 0000000000..f4bc6258d5 --- /dev/null +++ b/libs/webb-ui-components/src/components/ListCard/ContractListCard.tsx @@ -0,0 +1,114 @@ +import { useState, useMemo, forwardRef } from 'react'; +import { ExternalLinkLine, Search } from '@webb-tools/icons'; +import { ScrollArea } from '../ScrollArea'; +import { Typography } from '../../typography'; +import SkeletonLoader from '../SkeletonLoader'; +import { Input } from '../Input'; +import { ListItem } from './ListItem'; +import { ListCardWrapper } from './ListCardWrapper'; +import { isHex } from 'viem'; + +import { ContractListCardProps } from './types'; +import { shortenHex, shortenString } from '../../utils'; + +const ContractListCard = forwardRef( + ({ isLoading, selectContractItems, ...props }, ref) => { + const [searchText, setSearchText] = useState(''); + + const filterList = useMemo( + () => + selectContractItems.filter((item) => { + return ( + item.name.toLowerCase().includes(searchText.toLowerCase()) || + item.address.toLowerCase().includes(searchText.toLowerCase()) || + item.blockExplorerUrl + ?.toLowerCase() + .includes(searchText.toLowerCase()) + ); + }), + [selectContractItems, searchText] + ); + + return ( + + {/** The search input */} +
+ } + placeholder="Search contracts" + value={searchText} + onChange={(val) => setSearchText(val.toString())} + isDisabled={isLoading || selectContractItems.length === 0} + /> +
+ + + {isLoading && ( +
+ + +
+ )} + {!isLoading && ( +
    + {filterList.map((item, idx) => { + const { name, address, blockExplorerUrl, onSelectContract } = + item; + return ( + { + onSelectContract && onSelectContract(); + }} + > +
    + + {name} + + + {isHex(address) + ? shortenHex(address) + : shortenString(address)} + +
    + + {typeof blockExplorerUrl === 'string' && ( + event.stopPropagation()} + > + + + )} +
    + ); + })} +
+ )} +
+
+ ); + } +); + +export default ContractListCard; diff --git a/libs/webb-ui-components/src/components/ListCard/ListCardWrapper.tsx b/libs/webb-ui-components/src/components/ListCard/ListCardWrapper.tsx index 95d90fad00..c539d75c97 100644 --- a/libs/webb-ui-components/src/components/ListCard/ListCardWrapper.tsx +++ b/libs/webb-ui-components/src/components/ListCard/ListCardWrapper.tsx @@ -6,7 +6,10 @@ import { Typography } from '../../typography'; import { ListCardWrapperProps } from './types'; export const ListCardWrapper = forwardRef( - ({ children, className, onClose, title, ...props }, ref) => { + ( + { children, className, onClose, title, hideCloseButton = false, ...props }, + ref + ) => { return (
( {title} - + {!hideCloseButton && ( + + )}
{children} diff --git a/libs/webb-ui-components/src/components/ListCard/index.ts b/libs/webb-ui-components/src/components/ListCard/index.ts index 6d3ad09a5c..9b878f436d 100644 --- a/libs/webb-ui-components/src/components/ListCard/index.ts +++ b/libs/webb-ui-components/src/components/ListCard/index.ts @@ -1,4 +1,5 @@ export { default as ChainListCard } from './ChainListCard'; +export { default as ContractListCard } from './ContractListCard'; export * from './ListCardWrapper'; export * from './ListItem'; export { default as RelayerListCard } from './RelayerListCard'; diff --git a/libs/webb-ui-components/src/components/ListCard/types.ts b/libs/webb-ui-components/src/components/ListCard/types.ts index 83d336a21a..137edbfef0 100644 --- a/libs/webb-ui-components/src/components/ListCard/types.ts +++ b/libs/webb-ui-components/src/components/ListCard/types.ts @@ -139,6 +139,26 @@ export type AssetType = { explorerUrl?: string; }; +export type ContractType = { + /** + * The contract name + */ + name: string; + /** + * The contract address + */ + address: string; + /** + * The contract block explorer url (optional) + */ + blockExplorerUrl?: string; + + /** + * Callback when user hit a contract item + */ + onSelectContract?: () => void; +}; + export interface ListCardWrapperProps extends IWebbComponentBase, PropsOf<'div'> { @@ -151,6 +171,11 @@ export interface ListCardWrapperProps * The callback involke when pressing the close button */ onClose?: () => void; + + /** + * Hide Close buttonΖ’ + */ + hideCloseButton?: boolean; } export interface ChainListCardProps extends Omit, 'onChange'> { @@ -207,6 +232,12 @@ export interface ChainListCardProps extends Omit, 'onChange'> { isConnectingToChain?: boolean; } +export interface ContractListCardProps + extends Omit, 'onChange'> { + selectContractItems: ContractType[]; + isLoading?: boolean; +} + export interface RelayerListCardProps extends Omit, 'onChange'> { /** * If `true`, the component will display in connected view diff --git a/libs/webb-ui-components/src/components/index.ts b/libs/webb-ui-components/src/components/index.ts index db17b9502e..d40d2ef82f 100644 --- a/libs/webb-ui-components/src/components/index.ts +++ b/libs/webb-ui-components/src/components/index.ts @@ -32,7 +32,6 @@ export * from './FeeDetails'; export * from './FileUploads'; export * from './Filter'; export * from './Footer'; -export { default as GovernanceForm } from './GovernanceForm'; export * from './IconWithTooltip'; export * from './IconsGroup'; export * from './Input'; diff --git a/libs/webb-ui-components/src/containers/GovernanceContractDetailCard/GovernanceContractDetailCard.tsx b/libs/webb-ui-components/src/containers/GovernanceContractDetailCard/GovernanceContractDetailCard.tsx new file mode 100644 index 0000000000..b6b1da0140 --- /dev/null +++ b/libs/webb-ui-components/src/containers/GovernanceContractDetailCard/GovernanceContractDetailCard.tsx @@ -0,0 +1,127 @@ +import { type FC, useMemo, useState } from 'react'; +import { getAbiItem } from 'viem'; +import cx from 'classnames'; +import { chainsConfig } from '@webb-tools/dapp-config/chains/chain-config'; + +import ChainsRing from '../../components/ChainsRing'; +import { Typography } from '../../typography'; +import FunctionInputs from './GovernanceFncCaller'; +import type { + ContractDetailCardProps, + GovernanceFncCallerProps, +} from './types'; +import type { ChainRingItemType } from '../../components/ChainsRing/types'; + +const GovernanceContractDetailCard: FC = ({ + metadata, + abi, + governanceFncNames, + typedChainIdSelections, +}) => { + const [selectedTypedChainId, setSelectedTypedChainId] = useState< + number | undefined + >(); + + const chainRingItems = useMemo(() => { + return typedChainIdSelections.map((typedChainId) => { + return { + typedChainId, + isActive: selectedTypedChainId === typedChainId, + onClick: () => { + setSelectedTypedChainId(typedChainId); + }, + }; + }); + }, [typedChainIdSelections, selectedTypedChainId]); + + const isReadyToCallFnc = useMemo( + () => selectedTypedChainId !== undefined, + [selectedTypedChainId] + ); + + const fncCallerProps = useMemo( + () => + governanceFncNames.map((fncName) => { + const item = getAbiItem({ + abi, + name: fncName, + }); + return { + fncName: item.name, + fncParams: item.inputs.map((input) => ({ + name: input.name, + type: input.type, + })), + }; + }), + [abi, governanceFncNames] + ); + + return ( +
+ {/* Chains Ring */} +
+ + + {selectedTypedChainId !== undefined + ? chainsConfig[selectedTypedChainId].name + : 'Select Chain'} + +
+ } + /> +
+ +
+ + Metadata + +
+ {metadata.map((item) => { + const { title, detailsCmp } = item; + return ( +
+ + {title} + + {detailsCmp} +
+ ); + })} +
+
+ +
+ + Governance Functions + +
+ {fncCallerProps.map((fncInfo) => ( + + ))} +
+
+ + ); +}; + +export default GovernanceContractDetailCard; diff --git a/libs/webb-ui-components/src/components/GovernanceForm/FunctionInputs.tsx b/libs/webb-ui-components/src/containers/GovernanceContractDetailCard/GovernanceFncCaller.tsx similarity index 63% rename from libs/webb-ui-components/src/components/GovernanceForm/FunctionInputs.tsx rename to libs/webb-ui-components/src/containers/GovernanceContractDetailCard/GovernanceFncCaller.tsx index f54444afdc..d3157c7507 100644 --- a/libs/webb-ui-components/src/components/GovernanceForm/FunctionInputs.tsx +++ b/libs/webb-ui-components/src/containers/GovernanceContractDetailCard/GovernanceFncCaller.tsx @@ -1,20 +1,24 @@ import type { FC } from 'react'; import cx from 'classnames'; -import { ArrowDropDownFill } from '@webb-tools/icons'; +import { ArrowDropDownFill, InformationLine } from '@webb-tools/icons'; import { Accordion, AccordionButtonBase, AccordionContent, AccordionItem, -} from '../Accordion'; -import { Button } from '../buttons'; -import { Input } from '../Input'; +} from '../../components/Accordion'; +import { Button } from '../../components/buttons'; +import { Input } from '../../components/Input'; import { Typography } from '../../typography/Typography'; -import { FunctionInfoType } from './types'; +import type { GovernanceFncCallerProps } from './types'; -const FunctionInputs: FC<{ fncInfo: FunctionInfoType }> = ({ fncInfo }) => { - const { fncName, fncParams } = fncInfo; +const GovernanceFncCaller: FC = ({ + fncName, + fncParams, + isDisabled, + warningText, +}) => { return ( = ({ fncInfo }) => { > - + {fncName} @@ -54,12 +58,24 @@ const FunctionInputs: FC<{ fncInfo: FunctionInfoType }> = ({ fncInfo }) => { id={`${fncName}-${name}`} className="w-[75%]" placeholder={type} + isDisabled={isDisabled} /> ); })} - + + + {warningText && ( +
+ + + {warningText} + +
+ )}
@@ -67,4 +83,4 @@ const FunctionInputs: FC<{ fncInfo: FunctionInfoType }> = ({ fncInfo }) => { ); }; -export default FunctionInputs; +export default GovernanceFncCaller; diff --git a/libs/webb-ui-components/src/containers/GovernanceContractDetailCard/index.ts b/libs/webb-ui-components/src/containers/GovernanceContractDetailCard/index.ts new file mode 100644 index 0000000000..80b8ceadda --- /dev/null +++ b/libs/webb-ui-components/src/containers/GovernanceContractDetailCard/index.ts @@ -0,0 +1,3 @@ +import { default as GovernanceContractDetailCard } from './GovernanceContractDetailCard'; + +export default GovernanceContractDetailCard; diff --git a/libs/webb-ui-components/src/containers/GovernanceContractDetailCard/types.ts b/libs/webb-ui-components/src/containers/GovernanceContractDetailCard/types.ts new file mode 100644 index 0000000000..7067b7a1c4 --- /dev/null +++ b/libs/webb-ui-components/src/containers/GovernanceContractDetailCard/types.ts @@ -0,0 +1,51 @@ +import type { Abi } from 'viem'; + +export interface ContractDetailCardProps { + /** + * Contract metadata (address, wrapping fees, etc, ...) + */ + metadata: { + title: string; + detailsCmp: React.ReactNode; + }[]; + + /** + * The ABI of the smart contract + */ + abi: Abi; + + /** + * List of all the governance function of the smart contract + */ + governanceFncNames: string[]; + + /** + * All the chain options to be be chosen + */ + typedChainIdSelections: number[]; +} + +export interface GovernanceFncCallerProps { + /** + * The name of the function + */ + fncName: string; + + /** + * The list of all the parameters of the function + */ + fncParams: { + name?: string; + type: string; + }[]; + + /** + * Is the function allowed to be called + */ + isDisabled?: boolean; + + /** + * Warning text at the bottom of the component + */ + warningText?: string; +} diff --git a/libs/webb-ui-components/src/containers/index.ts b/libs/webb-ui-components/src/containers/index.ts index 0c1099452d..b7bee25d6c 100644 --- a/libs/webb-ui-components/src/containers/index.ts +++ b/libs/webb-ui-components/src/containers/index.ts @@ -1,7 +1,8 @@ -export * from './DepositCard'; +export { default as BridgeFeeDetails } from './BridgeFeeDetails'; export * from './ConfirmationCard'; +export { default as ContractDetailCard } from './GovernanceContractDetailCard'; +export * from './DepositCard'; export * from './TransferCard'; export * from './WebbUIErrorBoudary'; export * from './WithdrawCard'; export * from './TransactionProgressCard'; -export { default as BridgeFeeDetails } from './BridgeFeeDetails'; diff --git a/libs/webb-ui-components/src/stories/molecules/ContractListCard.stories.tsx b/libs/webb-ui-components/src/stories/molecules/ContractListCard.stories.tsx new file mode 100644 index 0000000000..0cb6c41068 --- /dev/null +++ b/libs/webb-ui-components/src/stories/molecules/ContractListCard.stories.tsx @@ -0,0 +1,37 @@ +import type { Meta, StoryObj } from '@storybook/react'; +import ContractListCard from '../../components/ListCard/ContractListCard'; +import { randEthereumAddress } from '@ngneat/falso'; + +const meta: Meta = { + title: 'Design System/Molecules/ContractListCard', + component: ContractListCard, +}; + +// More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export +export default meta; + +type Story = StoryObj; + +// More on component templates: https://storybook.js.org/docs/react/writing-stories/introduction#using-args +export const Default: Story = { + render: () => ( + + ), +}; + +export const Loading: Story = { + render: () => , +}; diff --git a/libs/webb-ui-components/src/stories/templates/GovernanceContractDetailCard.stories.tsx b/libs/webb-ui-components/src/stories/templates/GovernanceContractDetailCard.stories.tsx new file mode 100644 index 0000000000..93c9122bea --- /dev/null +++ b/libs/webb-ui-components/src/stories/templates/GovernanceContractDetailCard.stories.tsx @@ -0,0 +1,39 @@ +import type { Meta, StoryObj } from '@storybook/react'; +import GovernanceContractDetailCard from '../../containers/GovernanceContractDetailCard'; +import { VAnchor__factory } from '@webb-tools/contracts'; +import { randEthereumAddress } from '@ngneat/falso'; +import { shortenHex } from '../../utils'; +import { chainsConfig } from '@webb-tools/dapp-config/chains/chain-config'; + +const meta: Meta = { + title: 'Design System/Templates/GovernanceContractDetailCard', + component: GovernanceContractDetailCard, +}; + +// More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export +export default meta; + +type Story = StoryObj; + +// More on component templates: https://storybook.js.org/docs/react/writing-stories/introduction#using-args +export const Default: Story = { + render: () => ( + +typedChainId)} + /> + ), +}; diff --git a/libs/webb-ui-components/src/stories/templates/GovernanceForm.stories.tsx b/libs/webb-ui-components/src/stories/templates/GovernanceForm.stories.tsx deleted file mode 100644 index 6bc86e36e0..0000000000 --- a/libs/webb-ui-components/src/stories/templates/GovernanceForm.stories.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -import GovernanceForm from '../../components/GovernanceForm/GovernanceForm'; -import { chainsConfig } from '@webb-tools/dapp-config/chains/chain-config'; -import { VAnchor__factory } from '@webb-tools/contracts'; - -const meta: Meta = { - title: 'Design System/Templates/GovernanceForm', - component: GovernanceForm, -}; - -// More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export -export default meta; - -type Story = StoryObj; - -// More on component templates: https://storybook.js.org/docs/react/writing-stories/introduction#using-args -export const Default: Story = { - render: () => ( - +chainId)} - abi={VAnchor__factory.abi} - /> - ), -}; From b6211a0da8aab2cafc6a5621cf6b52f732707b78 Mon Sep 17 00:00:00 2001 From: Trung-Tin Pham <60747384+AtelyPham@users.noreply.github.com> Date: Fri, 1 Dec 2023 01:15:03 +0700 Subject: [PATCH 3/3] Leaderboard - Adding Sessions and Identity Info, Support Search Functionality (#1864) Co-authored-by: Pavan Soratur --- apps/testnet-leaderboard/app/page.tsx | 2 +- .../components/CountdownSection/Badges.tsx | 2 +- .../RankingTableSection/AddressCell.tsx | 25 - .../RankingTableSection/BadgeWithTooltip.tsx | 36 + .../RankingTableSection/BadgesCell.tsx | 31 +- .../RankingTableSection/IdentityCell.tsx | 65 + .../RankingTableSection/RankingTableView.tsx | 92 +- .../RankingTableSection/SessionsCell.tsx | 42 + .../RankingTableSection/SocialLinksCell.tsx | 80 ++ .../fetchLeaderboardData.ts | 8 +- .../components/RankingTableSection/index.tsx | 4 + .../components/RankingTableSection/types.ts | 31 +- .../components/RankingTableSection/utils.ts | 5 + apps/testnet-leaderboard/constants/index.ts | 5 +- apps/testnet-leaderboard/types/index.ts | 3 + .../src/hooks/useCopyable.ts | 22 +- tools/scripts/fetchingOnChainConfig.ts | 2 + yarn.lock | 1078 +++++++++-------- 18 files changed, 968 insertions(+), 565 deletions(-) delete mode 100644 apps/testnet-leaderboard/components/RankingTableSection/AddressCell.tsx create mode 100644 apps/testnet-leaderboard/components/RankingTableSection/BadgeWithTooltip.tsx create mode 100644 apps/testnet-leaderboard/components/RankingTableSection/IdentityCell.tsx create mode 100644 apps/testnet-leaderboard/components/RankingTableSection/SessionsCell.tsx create mode 100644 apps/testnet-leaderboard/components/RankingTableSection/SocialLinksCell.tsx create mode 100644 apps/testnet-leaderboard/components/RankingTableSection/utils.ts diff --git a/apps/testnet-leaderboard/app/page.tsx b/apps/testnet-leaderboard/app/page.tsx index f6948827d8..d94a84cf97 100644 --- a/apps/testnet-leaderboard/app/page.tsx +++ b/apps/testnet-leaderboard/app/page.tsx @@ -15,7 +15,7 @@ export default function Index() {
{
{Object.entries(BADGE_ICON_RECORD).map(([badge, icon], idx) => { const name = getBadgeName(badge) ?? badge; - const fmtName = name.split(' ').map(capitalize).join(' '); + const fmtName = name.split('_').map(capitalize).join(' '); return ( = ({ address }) => { - return ( -
- - - -
- ); -}; - -export default AddressCell; diff --git a/apps/testnet-leaderboard/components/RankingTableSection/BadgeWithTooltip.tsx b/apps/testnet-leaderboard/components/RankingTableSection/BadgeWithTooltip.tsx new file mode 100644 index 0000000000..57a4e77224 --- /dev/null +++ b/apps/testnet-leaderboard/components/RankingTableSection/BadgeWithTooltip.tsx @@ -0,0 +1,36 @@ +import { + Tooltip, + TooltipBody, + TooltipTrigger, +} from '@webb-tools/webb-ui-components/components/Tooltip'; +import { Typography } from '@webb-tools/webb-ui-components/typography/Typography'; +import cx from 'classnames'; +import capitalize from 'lodash/capitalize'; +import { FC } from 'react'; + +type Props = { + badge: string; + emoji: string; +}; + +const BadgeWithTooltip: FC = ({ badge, emoji }) => { + return ( + + +
+ {emoji} +
+
+ + {badge.split('_').map(capitalize).join(' ')} +
+ ); +}; + +export default BadgeWithTooltip; diff --git a/apps/testnet-leaderboard/components/RankingTableSection/BadgesCell.tsx b/apps/testnet-leaderboard/components/RankingTableSection/BadgesCell.tsx index af94508895..c675ed4814 100644 --- a/apps/testnet-leaderboard/components/RankingTableSection/BadgesCell.tsx +++ b/apps/testnet-leaderboard/components/RankingTableSection/BadgesCell.tsx @@ -1,37 +1,18 @@ -import { - Tooltip, - TooltipBody, - TooltipTrigger, -} from '@webb-tools/webb-ui-components'; -import { Typography } from '@webb-tools/webb-ui-components/typography/Typography'; -import cx from 'classnames'; -import capitalize from 'lodash/capitalize'; import type { FC } from 'react'; import { BADGE_ICON_RECORD } from '../../constants'; import { BadgeEnum } from '../../types'; +import BadgeWithTooltip from './BadgeWithTooltip'; const BadgesCell: FC<{ badges: BadgeEnum[] }> = ({ badges }) => { return (
{badges.map((badge, idx) => ( - - -
- - {BADGE_ICON_RECORD[badge]} - -
-
- - {capitalize(badge.toString())} -
+ ))}
); diff --git a/apps/testnet-leaderboard/components/RankingTableSection/IdentityCell.tsx b/apps/testnet-leaderboard/components/RankingTableSection/IdentityCell.tsx new file mode 100644 index 0000000000..efbb068ded --- /dev/null +++ b/apps/testnet-leaderboard/components/RankingTableSection/IdentityCell.tsx @@ -0,0 +1,65 @@ +'use client'; + +import { isEthereumAddress } from '@polkadot/util-crypto'; +import { FileCopyLine } from '@webb-tools/icons'; +import { Avatar } from '@webb-tools/webb-ui-components/components/Avatar'; +import { + Tooltip, + TooltipBody, + TooltipTrigger, +} from '@webb-tools/webb-ui-components/components/Tooltip'; +import { useCopyable } from '@webb-tools/webb-ui-components/hooks/useCopyable'; +import { Typography } from '@webb-tools/webb-ui-components/typography/Typography'; +import { shortenString } from '@webb-tools/webb-ui-components/utils/shortenString'; +import cx from 'classnames'; +import { type FC, useEffect, useState } from 'react'; + +import { IdentityType } from './types'; + +function handleClick() { + console.log('click'); +} + +const IdentityCell: FC<{ address: string; identity: IdentityType }> = ({ + address, + identity, +}) => { + const { isCopied, copy } = useCopyable(); + + return ( +
+ + + + {identity?.info.display || shortenString(address)} + + + + + + + + + {isCopied ? 'Copied' : address} + + +
+ ); +}; + +export default IdentityCell; diff --git a/apps/testnet-leaderboard/components/RankingTableSection/RankingTableView.tsx b/apps/testnet-leaderboard/components/RankingTableSection/RankingTableView.tsx index 65062d1050..b227f93174 100644 --- a/apps/testnet-leaderboard/components/RankingTableSection/RankingTableView.tsx +++ b/apps/testnet-leaderboard/components/RankingTableSection/RankingTableView.tsx @@ -7,6 +7,7 @@ import { PaginationState, useReactTable, } from '@tanstack/react-table'; +import { LoggerService } from '@webb-tools/browser-utils/logger'; import { Search, Spinner } from '@webb-tools/icons'; import { Input, Pagination, Typography } from '@webb-tools/webb-ui-components'; import cx from 'classnames'; @@ -14,38 +15,63 @@ import { type FC, useMemo, useState } from 'react'; import useSWR from 'swr'; import { BadgeEnum } from '../../types'; -import AddressCell from './AddressCell'; import BadgesCell from './BadgesCell'; import fetchLeaderboardData from './fetchLeaderboardData'; import HeaderCell from './HeaderCell'; +import IdentityCell from './IdentityCell'; import ParseReponseErrorView from './ParseReponseErrorView'; -import type { LeaderboardSuccessResponseType, ParticipantType } from './types'; +import SessionsCell from './SessionsCell'; +import SocialLinksCell from './SocialLinksCell'; +import type { + IdentityType, + LeaderboardSuccessResponseType, + ParticipantType, + SessionsType, +} from './types'; export type RankingItemType = { address: string; badges: BadgeEnum[]; points: number; + sessions: SessionsType; + identity: IdentityType; }; const columnHelper = createColumnHelper(); -const columns = [ +const getColumns = (pageIndex: number, pageSize: number) => [ columnHelper.accessor('points', { header: () => , - cell: (points) => ( - - #{points.row.index + 1} - - ), + cell: (points) => { + const globalRowIndex = points.row.index + pageIndex * pageSize; + return ( + + #{globalRowIndex + 1} + + ); + }, }), + columnHelper.accessor('address', { - header: () => , - cell: (address) => , + header: () => , + cell: (cellCtx) => ( + + ), }), + columnHelper.accessor('badges', { header: () => , cell: (badges) => , }), + + columnHelper.accessor('sessions', { + header: () => , + cell: (cellCtx) => , + }), + columnHelper.accessor('points', { header: () => , cell: (points) => ( @@ -54,6 +80,11 @@ const columns = [ ), }), + + columnHelper.accessor('identity', { + header: () => , + cell: (cellCtx) => , + }), ]; type Props = LeaderboardSuccessResponseType['data']; @@ -63,21 +94,27 @@ const participantToRankingItem = (participant: ParticipantType) => address: participant.addresses[0].address, badges: participant.badges, points: participant.points, + sessions: participant.sessions, + identity: participant.identity, } satisfies RankingItemType); +const logger = LoggerService.get('RankingTableView'); + const RankingTableView: FC = ({ participants, limit: defaultLimit, skip: defaultSkip, total: defaultTotal, }) => { + const [searchTerm, setSearchTerm] = useState(''); + const [{ pageIndex, pageSize }, setPagination] = useState({ pageIndex: defaultSkip, pageSize: defaultLimit, }); const { data, isLoading } = useSWR( - [fetchLeaderboardData.name, pageIndex * pageSize, pageSize], + [fetchLeaderboardData.name, pageIndex * pageSize, pageSize, searchTerm], ([, ...args]) => fetchLeaderboardData(...args), { keepPreviousData: true } ); @@ -96,12 +133,19 @@ const RankingTableView: FC = ({ } if (data && data.success && data.data.success) { - return data.data.data.participants.map(participantToRankingItem); + return data.data.data.participants + .filter((p) => p.addresses.length > 0) + .map(participantToRankingItem); } return []; }, [data, participants]); + const columns = useMemo( + () => getColumns(pageIndex, pageSize), + [pageIndex, pageSize] + ); + const { getHeaderGroups, getRowModel, @@ -132,6 +176,10 @@ const RankingTableView: FC = ({ }); if (!isLoading && data && !data.success) { + logger.error( + 'Error when parsing the response', + data.error.issues.map((issue) => issue.message).join('\n') + ); return ; } @@ -145,8 +193,7 @@ const RankingTableView: FC = ({ Latest ranking: - {/** TODO: Implement search by address with the server side data */} - {/*
+
Search: @@ -155,22 +202,19 @@ const RankingTableView: FC = ({ placeholder="Enter to search address" className="flex-[1]" rightIcon={} + value={searchTerm} + onChange={setSearchTerm} + debounceTime={500} /> -
*/} +
-
+
{getHeaderGroups().map((headerGroup) => ( {headerGroup.headers.map((header, idx) => ( - {row.getVisibleCells().map((cell, idx) => ( -
+ {header.isPlaceholder ? null : flexRender( @@ -187,7 +231,7 @@ const RankingTableView: FC = ({ getRowModel().rows.map((row) => (
+ {flexRender( cell.column.columnDef.cell, cell.getContext() diff --git a/apps/testnet-leaderboard/components/RankingTableSection/SessionsCell.tsx b/apps/testnet-leaderboard/components/RankingTableSection/SessionsCell.tsx new file mode 100644 index 0000000000..fbc93b0a58 --- /dev/null +++ b/apps/testnet-leaderboard/components/RankingTableSection/SessionsCell.tsx @@ -0,0 +1,42 @@ +import { Typography } from '@webb-tools/webb-ui-components/typography/Typography'; +import type { FC } from 'react'; + +import { BADGE_ICON_RECORD } from '../../constants'; +import BadgeWithTooltip from './BadgeWithTooltip'; +import type { SessionsType } from './types'; +import { isBadgeEnum } from './utils'; + +const SessionsCell: FC<{ sessions: SessionsType }> = ({ sessions }) => { + if (sessions == null) { + return ( + + - + + ); + } + + return ( +
+ {Object.entries(sessions).map(([badge, sessions], idx) => { + if (sessions.length === 0) { + return null; + } + + return ( +
+ + + + {sessions.length} + +
+ ); + })} +
+ ); +}; + +export default SessionsCell; diff --git a/apps/testnet-leaderboard/components/RankingTableSection/SocialLinksCell.tsx b/apps/testnet-leaderboard/components/RankingTableSection/SocialLinksCell.tsx new file mode 100644 index 0000000000..ad6767cba7 --- /dev/null +++ b/apps/testnet-leaderboard/components/RankingTableSection/SocialLinksCell.tsx @@ -0,0 +1,80 @@ +import { + Link as LinkIcon, + Mail as MailIcon, + TwitterFill, +} from '@webb-tools/icons'; +import { Typography } from '@webb-tools/webb-ui-components/typography/Typography'; +import type { ComponentProps, FC, PropsWithChildren } from 'react'; + +import type { IdentityType } from './types'; + +const SocialLinksCell: FC<{ identity: IdentityType }> = ({ identity }) => { + if (identity == null) { + return ( + + - + + ); + } + + const { + info: { twitter, web, email }, + } = identity; + + if (!twitter && !web && !email) { + return ( + + - + + ); + } + + return ( +
+ + + + + + + + + + + +
+ ); +}; + +export default SocialLinksCell; + +/** @internal */ + +type LinkProps = { + isDisabled: boolean; + href: ComponentProps<'a'>['href']; +}; + +const Link: FC> = ({ + href, + isDisabled, + children, +}) => { + if (isDisabled) { + return null; + } + + return ( + + {children} + + ); +}; diff --git a/apps/testnet-leaderboard/components/RankingTableSection/fetchLeaderboardData.ts b/apps/testnet-leaderboard/components/RankingTableSection/fetchLeaderboardData.ts index 4c0198e294..119850577e 100644 --- a/apps/testnet-leaderboard/components/RankingTableSection/fetchLeaderboardData.ts +++ b/apps/testnet-leaderboard/components/RankingTableSection/fetchLeaderboardData.ts @@ -3,13 +3,19 @@ import { LeaderboardResponseSchema } from './types'; const fetchLeaderboardData = async ( skip = DEFAULT_SKIP, - limit = DEFAULT_LIMIT + limit = DEFAULT_LIMIT, + query = '' ) => { const searchParams = new URLSearchParams({ skip: skip.toString(), limit: limit.toString(), }); + if (query) { + searchParams.append('q', query); + searchParams.set('skip', DEFAULT_SKIP.toString()); // reset skip when searching + } + const response = await fetch( `${BACKEND_URL}/leaderboard?${searchParams.toString()}` ); diff --git a/apps/testnet-leaderboard/components/RankingTableSection/index.tsx b/apps/testnet-leaderboard/components/RankingTableSection/index.tsx index a66aeb01f6..6b2f0182f1 100644 --- a/apps/testnet-leaderboard/components/RankingTableSection/index.tsx +++ b/apps/testnet-leaderboard/components/RankingTableSection/index.tsx @@ -1,3 +1,4 @@ +import { LoggerService } from '@webb-tools/browser-utils/logger'; import { unstable_serialize } from 'swr'; import { DEFAULT_LIMIT, DEFAULT_SKIP } from '../../constants'; @@ -6,10 +7,13 @@ import ParseReponseErrorView from './ParseReponseErrorView'; import RankingTableView from './RankingTableView'; import SWRProvider from './SWRProvider'; +const logger = LoggerService.get('RankingTableSection'); + const RankingTableSection = async () => { const result = await fetchLeaderboardData(); if (!result.success) { + logger.error('Failed to fetch leaderboard data', result.error.issues); return ; } diff --git a/apps/testnet-leaderboard/components/RankingTableSection/types.ts b/apps/testnet-leaderboard/components/RankingTableSection/types.ts index a726ad9436..3fe816efc2 100644 --- a/apps/testnet-leaderboard/components/RankingTableSection/types.ts +++ b/apps/testnet-leaderboard/components/RankingTableSection/types.ts @@ -10,14 +10,43 @@ const LeaderboardAddressResponseSchema = z.object({ export type AddressType = z.infer; +const LeaderboardSessionsResponseSchema = z + .object({ + [BadgeEnum.ACTIVE_VALIDATOR]: z.coerce.number().array(), + [BadgeEnum.AUTHORITY]: z.coerce.number().array(), + [BadgeEnum.VALIDATOR]: z.coerce.number().array(), + }) + .nullable() + .default(null); + +export type SessionsType = z.infer; + +const LeaderboardIdenityResponseSchema = z + .object({ + info: z.object({ + display: z.string(), + email: z.string(), + legal: z.string(), + pgpFingerprint: z.string(), + riot: z.string(), + twitter: z.string(), + web: z.string(), + }), + }) + .nullable() + .default(null); + +export type IdentityType = z.infer; + const LeaderboardParticipantResponseSchema = z.object({ id: z.number(), points: z.number(), - dateOfLastAction: z.string(), twitter: z.string().nullable(), email: z.string().nullable(), badges: z.array(z.nativeEnum(BadgeEnum)), addresses: z.array(LeaderboardAddressResponseSchema), + sessions: LeaderboardSessionsResponseSchema, + identity: LeaderboardIdenityResponseSchema, }); export type ParticipantType = z.infer< diff --git a/apps/testnet-leaderboard/components/RankingTableSection/utils.ts b/apps/testnet-leaderboard/components/RankingTableSection/utils.ts new file mode 100644 index 0000000000..e956da8574 --- /dev/null +++ b/apps/testnet-leaderboard/components/RankingTableSection/utils.ts @@ -0,0 +1,5 @@ +import { BadgeEnum } from '../../types'; + +export function isBadgeEnum(badge: string): badge is BadgeEnum { + return Object.values(BadgeEnum).includes(badge as BadgeEnum); +} diff --git a/apps/testnet-leaderboard/constants/index.ts b/apps/testnet-leaderboard/constants/index.ts index 75ab6453ba..3dd96763d0 100644 --- a/apps/testnet-leaderboard/constants/index.ts +++ b/apps/testnet-leaderboard/constants/index.ts @@ -16,7 +16,10 @@ export const BADGE_ICON_RECORD = { [BadgeEnum.VALIDATOR]: 'πŸ”', [BadgeEnum.SPECIALIST]: 'πŸ”', [BadgeEnum.USER]: 'πŸ‘€', -} as const satisfies Partial<{ [key in BadgeEnum]: string }>; + [BadgeEnum.ACTIVE_VALIDATOR]: '🟒', + [BadgeEnum.BUG_REPORTER]: 'πŸ”Ž', + [BadgeEnum.WRITER]: 'πŸ“', +} as const satisfies { [key in BadgeEnum]: string }; /** The second constant calculated in milliseconds. */ export const SECOND = 1000; diff --git a/apps/testnet-leaderboard/types/index.ts b/apps/testnet-leaderboard/types/index.ts index 0d5fdd9814..4554b5a84b 100644 --- a/apps/testnet-leaderboard/types/index.ts +++ b/apps/testnet-leaderboard/types/index.ts @@ -12,4 +12,7 @@ export enum BadgeEnum { SPECIALIST = 'specialist', USER = 'user', VALIDATOR = 'validator', + ACTIVE_VALIDATOR = 'active_validator', + BUG_REPORTER = 'bug_reporter', + WRITER = 'writer', } diff --git a/libs/webb-ui-components/src/hooks/useCopyable.ts b/libs/webb-ui-components/src/hooks/useCopyable.ts index 4ea60db477..788a024df0 100644 --- a/libs/webb-ui-components/src/hooks/useCopyable.ts +++ b/libs/webb-ui-components/src/hooks/useCopyable.ts @@ -1,8 +1,8 @@ +'use client'; + import copyToClipboard from 'copy-to-clipboard'; import { useEffect, useRef, useState } from 'react'; -type SetTimeoutReturnType = ReturnType; - /** * Object contains `isCopied`, `copiedText` and `copy` function */ @@ -33,7 +33,9 @@ export const useCopyable = (display = 3000): UseCopyableReturnType => { // Internal state to manage and reset the copy state const [isCopied, setIsCopied] = useState(false); - const [_timeout, _setTimeout] = useState(); + + // Timeout ref + const _timeoutRef = useRef>(); const copy = (value: string) => { if (isCopied) { @@ -45,16 +47,18 @@ export const useCopyable = (display = 3000): UseCopyableReturnType => { setIsCopied(true); const timeoutObj = setTimeout(() => setIsCopied(false), display); - _setTimeout(timeoutObj); + + if (_timeoutRef.current) { + clearTimeout(_timeoutRef.current); + } + + _timeoutRef.current = timeoutObj; }; // Clear the timeout if the component unmount useEffect(() => { - if (_timeout) { - return () => clearTimeout(_timeout); - } - return; - }, [_timeout]); + return () => clearTimeout(_timeoutRef.current); + }, []); return { isCopied, diff --git a/tools/scripts/fetchingOnChainConfig.ts b/tools/scripts/fetchingOnChainConfig.ts index a857c736f6..9c8f91a6dd 100644 --- a/tools/scripts/fetchingOnChainConfig.ts +++ b/tools/scripts/fetchingOnChainConfig.ts @@ -1,3 +1,5 @@ +#!/usr/bin/env -S ts-node --files + import { config } from 'dotenv'; import { workspaceRoot } from 'nx/src/utils/workspace-root'; import path from 'path'; diff --git a/yarn.lock b/yarn.lock index c79656ad64..ac8a6e6303 100644 --- a/yarn.lock +++ b/yarn.lock @@ -52,17 +52,16 @@ "@jridgewell/trace-mapping" "^0.3.9" "@apollo/client@^3.6.9": - version "3.8.7" - resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.8.7.tgz#090b1518f513503b9a6a690ee3eaec49529822e1" - integrity sha512-DnQtFkQrCyxHTSa9gR84YRLmU/al6HeXcLZazVe+VxKBmx/Hj4rV8xWtzfWYX5ijartsqDR7SJgV037MATEecA== + version "3.8.8" + resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.8.8.tgz#1a004b2e6de4af38668249a7d7790f6a3431e475" + integrity sha512-omjd9ryGDkadZrKW6l5ktUAdS4SNaFOccYQ4ZST0HLW83y8kQaSZOCTNlpkoBUK8cv6qP8+AxOKwLm2ho8qQ+Q== dependencies: "@graphql-typed-document-node/core" "^3.1.1" - "@wry/context" "^0.7.3" "@wry/equality" "^0.5.6" - "@wry/trie" "^0.4.3" + "@wry/trie" "^0.5.0" graphql-tag "^2.12.6" hoist-non-react-statics "^3.3.2" - optimism "^0.17.5" + optimism "^0.18.0" prop-types "^15.7.2" response-iterator "^0.2.6" symbol-observable "^4.0.0" @@ -148,20 +147,20 @@ "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" chokidar "^3.4.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.4.tgz#03ae5af150be94392cb5c7ccd97db5a19a5da6aa" - integrity sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== dependencies: "@babel/highlight" "^7.23.4" chalk "^2.4.2" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.3.tgz#3febd552541e62b5e883a25eb3effd7c7379db11" - integrity sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ== +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.3", "@babel/compat-data@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" + integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== -"@babel/core@7.23.3", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.20.12", "@babel/core@^7.21.3", "@babel/core@^7.22.0", "@babel/core@^7.22.9", "@babel/core@^7.7.5": +"@babel/core@7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.3.tgz#5ec09c8803b91f51cc887dedc2654a35852849c9" integrity sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew== @@ -182,12 +181,33 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.12.11", "@babel/generator@^7.14.0", "@babel/generator@^7.18.13", "@babel/generator@^7.22.9", "@babel/generator@^7.23.3", "@babel/generator@^7.23.4", "@babel/generator@^7.7.2": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.4.tgz#4a41377d8566ec18f807f42962a7f3551de83d1c" - integrity sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ== +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.14.0", "@babel/core@^7.20.12", "@babel/core@^7.21.3", "@babel/core@^7.22.0", "@babel/core@^7.22.9", "@babel/core@^7.23.0", "@babel/core@^7.23.2", "@babel/core@^7.7.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.5.tgz#6e23f2acbcb77ad283c5ed141f824fd9f70101c7" + integrity sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g== dependencies: - "@babel/types" "^7.23.4" + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.5" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.23.5" + "@babel/parser" "^7.23.5" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.5" + "@babel/types" "^7.23.5" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.12.11", "@babel/generator@^7.14.0", "@babel/generator@^7.18.13", "@babel/generator@^7.22.9", "@babel/generator@^7.23.0", "@babel/generator@^7.23.3", "@babel/generator@^7.23.5", "@babel/generator@^7.7.2": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.5.tgz#17d0a1ea6b62f351d281350a5f80b87a810c4755" + integrity sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA== + dependencies: + "@babel/types" "^7.23.5" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" @@ -217,17 +237,17 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" - integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.5.tgz#2a8792357008ae9ce8c0f2b78b9f646ac96b314b" + integrity sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-member-expression-to-functions" "^7.23.0" "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-replace-supers" "^7.22.20" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" semver "^6.3.1" @@ -264,7 +284,7 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": +"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== @@ -284,7 +304,7 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-member-expression-to-functions@^7.22.15": +"@babel/helper-member-expression-to-functions@^7.22.15", "@babel/helper-member-expression-to-functions@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== @@ -330,7 +350,7 @@ "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-wrap-function" "^7.22.20" -"@babel/helper-replace-supers@^7.22.20", "@babel/helper-replace-supers@^7.22.9": +"@babel/helper-replace-supers@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== @@ -370,10 +390,10 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== -"@babel/helper-validator-option@^7.18.6", "@babel/helper-validator-option@^7.21.0", "@babel/helper-validator-option@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" - integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== +"@babel/helper-validator-option@^7.18.6", "@babel/helper-validator-option@^7.21.0", "@babel/helper-validator-option@^7.22.15", "@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== "@babel/helper-wrap-function@^7.22.20": version "7.22.20" @@ -384,14 +404,14 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.22.19" -"@babel/helpers@^7.23.2": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.4.tgz#7d2cfb969aa43222032193accd7329851facf3c1" - integrity sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw== +"@babel/helpers@^7.23.2", "@babel/helpers@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.5.tgz#52f522840df8f1a848d06ea6a79b79eefa72401e" + integrity sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg== dependencies: "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.4" - "@babel/types" "^7.23.4" + "@babel/traverse" "^7.23.5" + "@babel/types" "^7.23.5" "@babel/highlight@^7.23.4": version "7.23.4" @@ -402,10 +422,10 @@ chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.8", "@babel/parser@^7.20.15", "@babel/parser@^7.20.7", "@babel/parser@^7.21.3", "@babel/parser@^7.21.4", "@babel/parser@^7.21.8", "@babel/parser@^7.22.15", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7", "@babel/parser@^7.23.3", "@babel/parser@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.4.tgz#409fbe690c333bb70187e2de4021e1e47a026661" - integrity sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.14.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.8", "@babel/parser@^7.20.15", "@babel/parser@^7.20.7", "@babel/parser@^7.21.3", "@babel/parser@^7.21.4", "@babel/parser@^7.21.8", "@babel/parser@^7.22.15", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.3", "@babel/parser@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.5.tgz#37dee97c4752af148e1d38c34b856b2507660563" + integrity sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": version "7.23.3" @@ -441,7 +461,7 @@ "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.18.6": +"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== @@ -459,11 +479,11 @@ "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-proposal-decorators@^7.22.7": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.3.tgz#c609ca70be908d187ee36ff49f1250c56cc98f15" - integrity sha512-u8SwzOcP0DYSsa++nHd/9exlHb0NAlHCb890qtZZbSwPX2bFv8LBEztxwN7Xg/dS8oAFFidhrI9PBcLBJSkGRQ== + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.5.tgz#eeaa49d0dc9229aec4d23378653738cdc5a3ea0a" + integrity sha512-6IsY8jOeWibsengGlWIezp7cuZEFzNlAghFpzh9wiZwhQ42/hRcPnY/QV9HJoKTlujupinSlnQPiEy/u2C1ZfQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-create-class-features-plugin" "^7.23.5" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-replace-supers" "^7.22.20" "@babel/helper-split-export-declaration" "^7.22.6" @@ -501,7 +521,7 @@ "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": +"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== @@ -536,7 +556,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.20.7", "@babel/plugin-proposal-optional-chaining@^7.21.0": +"@babel/plugin-proposal-optional-chaining@^7.20.7", "@babel/plugin-proposal-optional-chaining@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== @@ -745,7 +765,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-async-generator-functions@^7.23.3": +"@babel/plugin-transform-async-generator-functions@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz#93ac8e3531f347fba519b4703f9ff2a75c6ae27a" integrity sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw== @@ -771,7 +791,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.21.0", "@babel/plugin-transform-block-scoping@^7.23.3": +"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.21.0", "@babel/plugin-transform-block-scoping@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz#b2d38589531c6c80fbe25e6b58e763622d2d3cf5" integrity sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw== @@ -786,7 +806,7 @@ "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-class-static-block@^7.23.3": +"@babel/plugin-transform-class-static-block@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz#2a202c8787a8964dd11dfcedf994d36bfc844ab5" integrity sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ== @@ -795,10 +815,10 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.21.0", "@babel/plugin-transform-classes@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz#73380c632c095b03e8503c24fd38f95ad41ffacb" - integrity sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w== +"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.21.0", "@babel/plugin-transform-classes@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz#e7a75f815e0c534cc4c9a39c56636c84fc0d64f2" + integrity sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-compilation-targets" "^7.22.15" @@ -840,7 +860,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-dynamic-import@^7.23.3": +"@babel/plugin-transform-dynamic-import@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz#c7629e7254011ac3630d47d7f34ddd40ca535143" integrity sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ== @@ -856,7 +876,7 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-export-namespace-from@^7.23.3": +"@babel/plugin-transform-export-namespace-from@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz#084c7b25e9a5c8271e987a08cf85807b80283191" integrity sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ== @@ -888,7 +908,7 @@ "@babel/helper-function-name" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-json-strings@^7.23.3": +"@babel/plugin-transform-json-strings@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz#a871d9b6bd171976efad2e43e694c961ffa3714d" integrity sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg== @@ -903,7 +923,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-logical-assignment-operators@^7.23.3": +"@babel/plugin-transform-logical-assignment-operators@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz#e599f82c51d55fac725f62ce55d3a0886279ecb5" integrity sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg== @@ -926,7 +946,7 @@ "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.21.5", "@babel/plugin-transform-modules-commonjs@^7.23.3": +"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.21.5", "@babel/plugin-transform-modules-commonjs@^7.23.0", "@babel/plugin-transform-modules-commonjs@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4" integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== @@ -968,7 +988,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-nullish-coalescing-operator@^7.23.3": +"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11", "@babel/plugin-transform-nullish-coalescing-operator@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz#45556aad123fc6e52189ea749e33ce090637346e" integrity sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA== @@ -976,7 +996,7 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-numeric-separator@^7.23.3": +"@babel/plugin-transform-numeric-separator@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz#03d08e3691e405804ecdd19dd278a40cca531f29" integrity sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q== @@ -984,7 +1004,7 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-rest-spread@^7.23.3": +"@babel/plugin-transform-object-rest-spread@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz#2b9c2d26bf62710460bdc0d1730d4f1048361b83" integrity sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g== @@ -1003,7 +1023,7 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-replace-supers" "^7.22.20" -"@babel/plugin-transform-optional-catch-binding@^7.23.3": +"@babel/plugin-transform-optional-catch-binding@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz#318066de6dacce7d92fa244ae475aa8d91778017" integrity sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A== @@ -1011,7 +1031,7 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.23.3": +"@babel/plugin-transform-optional-chaining@^7.23.0", "@babel/plugin-transform-optional-chaining@^7.23.3", "@babel/plugin-transform-optional-chaining@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz#6acf61203bdfc4de9d4e52e64490aeb3e52bd017" integrity sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA== @@ -1027,7 +1047,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-private-methods@^7.23.3": +"@babel/plugin-transform-private-methods@^7.22.5", "@babel/plugin-transform-private-methods@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4" integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== @@ -1035,7 +1055,7 @@ "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-private-property-in-object@^7.23.3": +"@babel/plugin-transform-private-property-in-object@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz#3ec711d05d6608fd173d9b8de39872d8dbf68bf5" integrity sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A== @@ -1168,12 +1188,12 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-typescript@^7.21.3", "@babel/plugin-transform-typescript@^7.23.3": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.4.tgz#da12914d17b3c4b307f32c5fd91fbfdf17d56f86" - integrity sha512-39hCCOl+YUAyMOu6B9SmUTiHUU0t/CxJNUmY3qRdJujbqi+lrQcL11ysYUsAvFWPBdhihrv1z0oRG84Yr3dODQ== + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.5.tgz#83da13ef62a1ebddf2872487527094b31c9adb84" + integrity sha512-2fMkXEJkrmwgu2Bsv1Saxgj30IXZdJ+84lQcKKI7sm719oXs0BBw2ZENKdJdR1PjWndgLCEBNXJOri0fk7RYQA== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-create-class-features-plugin" "^7.23.5" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-typescript" "^7.23.3" @@ -1290,15 +1310,15 @@ core-js-compat "^3.25.1" semver "^6.3.0" -"@babel/preset-env@^7.20.2", "@babel/preset-env@^7.22.9": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.3.tgz#d299e0140a7650684b95c62be2db0ef8c975143e" - integrity sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q== +"@babel/preset-env@^7.20.2", "@babel/preset-env@^7.22.9", "@babel/preset-env@^7.23.2": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.5.tgz#350a3aedfa9f119ad045b068886457e895ba0ca1" + integrity sha512-0d/uxVD6tFGWXGDSfyMD1p2otoaKmu6+GD+NfAx0tMaH+dxORnp7T9TaVQ6mKyya7iBtCIVxHjWT7MuzzM9z+A== dependencies: - "@babel/compat-data" "^7.23.3" + "@babel/compat-data" "^7.23.5" "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" + "@babel/helper-validator-option" "^7.23.5" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3" "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.3" @@ -1322,25 +1342,25 @@ "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" "@babel/plugin-transform-arrow-functions" "^7.23.3" - "@babel/plugin-transform-async-generator-functions" "^7.23.3" + "@babel/plugin-transform-async-generator-functions" "^7.23.4" "@babel/plugin-transform-async-to-generator" "^7.23.3" "@babel/plugin-transform-block-scoped-functions" "^7.23.3" - "@babel/plugin-transform-block-scoping" "^7.23.3" + "@babel/plugin-transform-block-scoping" "^7.23.4" "@babel/plugin-transform-class-properties" "^7.23.3" - "@babel/plugin-transform-class-static-block" "^7.23.3" - "@babel/plugin-transform-classes" "^7.23.3" + "@babel/plugin-transform-class-static-block" "^7.23.4" + "@babel/plugin-transform-classes" "^7.23.5" "@babel/plugin-transform-computed-properties" "^7.23.3" "@babel/plugin-transform-destructuring" "^7.23.3" "@babel/plugin-transform-dotall-regex" "^7.23.3" "@babel/plugin-transform-duplicate-keys" "^7.23.3" - "@babel/plugin-transform-dynamic-import" "^7.23.3" + "@babel/plugin-transform-dynamic-import" "^7.23.4" "@babel/plugin-transform-exponentiation-operator" "^7.23.3" - "@babel/plugin-transform-export-namespace-from" "^7.23.3" + "@babel/plugin-transform-export-namespace-from" "^7.23.4" "@babel/plugin-transform-for-of" "^7.23.3" "@babel/plugin-transform-function-name" "^7.23.3" - "@babel/plugin-transform-json-strings" "^7.23.3" + "@babel/plugin-transform-json-strings" "^7.23.4" "@babel/plugin-transform-literals" "^7.23.3" - "@babel/plugin-transform-logical-assignment-operators" "^7.23.3" + "@babel/plugin-transform-logical-assignment-operators" "^7.23.4" "@babel/plugin-transform-member-expression-literals" "^7.23.3" "@babel/plugin-transform-modules-amd" "^7.23.3" "@babel/plugin-transform-modules-commonjs" "^7.23.3" @@ -1348,15 +1368,15 @@ "@babel/plugin-transform-modules-umd" "^7.23.3" "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" "@babel/plugin-transform-new-target" "^7.23.3" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.3" - "@babel/plugin-transform-numeric-separator" "^7.23.3" - "@babel/plugin-transform-object-rest-spread" "^7.23.3" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.4" + "@babel/plugin-transform-numeric-separator" "^7.23.4" + "@babel/plugin-transform-object-rest-spread" "^7.23.4" "@babel/plugin-transform-object-super" "^7.23.3" - "@babel/plugin-transform-optional-catch-binding" "^7.23.3" - "@babel/plugin-transform-optional-chaining" "^7.23.3" + "@babel/plugin-transform-optional-catch-binding" "^7.23.4" + "@babel/plugin-transform-optional-chaining" "^7.23.4" "@babel/plugin-transform-parameters" "^7.23.3" "@babel/plugin-transform-private-methods" "^7.23.3" - "@babel/plugin-transform-private-property-in-object" "^7.23.3" + "@babel/plugin-transform-private-property-in-object" "^7.23.4" "@babel/plugin-transform-property-literals" "^7.23.3" "@babel/plugin-transform-regenerator" "^7.23.3" "@babel/plugin-transform-reserved-words" "^7.23.3" @@ -1376,7 +1396,7 @@ core-js-compat "^3.31.0" semver "^6.3.1" -"@babel/preset-flow@^7.13.13", "@babel/preset-flow@^7.22.5": +"@babel/preset-flow@^7.22.15", "@babel/preset-flow@^7.22.5": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.23.3.tgz#8084e08b9ccec287bd077ab288b286fab96ffab1" integrity sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA== @@ -1440,7 +1460,7 @@ "@babel/plugin-transform-modules-commonjs" "^7.21.5" "@babel/plugin-transform-typescript" "^7.21.3" -"@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.18.6", "@babel/preset-typescript@^7.21.0", "@babel/preset-typescript@^7.22.5": +"@babel/preset-typescript@^7.18.6", "@babel/preset-typescript@^7.21.0", "@babel/preset-typescript@^7.22.5", "@babel/preset-typescript@^7.23.0": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz#14534b34ed5b6d435aa05f1ae1c5e7adcc01d913" integrity sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ== @@ -1451,7 +1471,7 @@ "@babel/plugin-transform-modules-commonjs" "^7.23.3" "@babel/plugin-transform-typescript" "^7.23.3" -"@babel/register@^7.13.16", "@babel/register@^7.18.9": +"@babel/register@^7.18.9", "@babel/register@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.22.15.tgz#c2c294a361d59f5fa7bcc8b97ef7319c32ecaec7" integrity sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg== @@ -1467,13 +1487,20 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@7.23.4", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.17.2", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.2.0", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.6", "@babel/runtime@^7.23.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4": +"@babel/runtime@7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.4.tgz#36fa1d2b36db873d25ec631dcc4923fdc1cf2e2e" integrity sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg== dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.17.2", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.2.0", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.6", "@babel/runtime@^7.23.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.5.tgz#11edb98f8aeec529b82b211028177679144242db" + integrity sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.22.15", "@babel/template@^7.3.3": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" @@ -1483,19 +1510,19 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" -"@babel/traverse@^7.1.6", "@babel/traverse@^7.14.0", "@babel/traverse@^7.16.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.22.8", "@babel/traverse@^7.23.3", "@babel/traverse@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.4.tgz#c2790f7edf106d059a0098770fe70801417f3f85" - integrity sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg== +"@babel/traverse@^7.1.6", "@babel/traverse@^7.14.0", "@babel/traverse@^7.16.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.22.8", "@babel/traverse@^7.23.2", "@babel/traverse@^7.23.3", "@babel/traverse@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.5.tgz#f546bf9aba9ef2b042c0e00d245990c15508e7ec" + integrity sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w== dependencies: - "@babel/code-frame" "^7.23.4" - "@babel/generator" "^7.23.4" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.5" "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.4" - "@babel/types" "^7.23.4" + "@babel/parser" "^7.23.5" + "@babel/types" "^7.23.5" debug "^4.1.0" globals "^11.1.0" @@ -1508,19 +1535,19 @@ "@babel/helper-validator-identifier" "^7.22.19" to-fast-properties "^2.0.0" -"@babel/types@7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.3.tgz#d5ea892c07f2ec371ac704420f4dcdb07b5f9598" - integrity sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw== +"@babel/types@7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.4.tgz#7206a1810fc512a7f7f7d4dace4cb4c1c9dbfb8e" + integrity sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ== dependencies: - "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-string-parser" "^7.23.4" "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" -"@babel/types@^7.0.0", "@babel/types@^7.16.8", "@babel/types@^7.18.13", "@babel/types@^7.2.0", "@babel/types@^7.20.7", "@babel/types@^7.21.3", "@babel/types@^7.21.5", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.3", "@babel/types@^7.23.4", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.4.tgz#7206a1810fc512a7f7f7d4dace4cb4c1c9dbfb8e" - integrity sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ== +"@babel/types@^7.0.0", "@babel/types@^7.16.8", "@babel/types@^7.18.13", "@babel/types@^7.2.0", "@babel/types@^7.20.7", "@babel/types@^7.21.3", "@babel/types@^7.21.5", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.3", "@babel/types@^7.23.4", "@babel/types@^7.23.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.5.tgz#48d730a00c95109fa4393352705954d74fb5b602" + integrity sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w== dependencies: "@babel/helper-string-parser" "^7.23.4" "@babel/helper-validator-identifier" "^7.22.20" @@ -3680,9 +3707,9 @@ ws "^8.12.0" "@graphql-tools/utils@^10.0.0": - version "10.0.9" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-10.0.9.tgz#1a85e577f6721a8adc9f2162aa2afa2c2efbf671" - integrity sha512-niXPj7y9w6nR6HGRWpskMPR2H17aZNa51Bh+/mh6lOGLaCZTz+y2azo/GNC8/5mUARDLcLH0qdS+yqx5Qad1eA== + version "10.0.11" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-10.0.11.tgz#1238fbe37e8d6c662c48ab2477c98269d6fd851a" + integrity sha512-vVjXgKn6zjXIlYBd7yJxCVMYGb5j18gE3hx3Qw3mNsSEsYQXbJbPdlwb7Fc9FogsJei5AaqiQerqH4kAosp1nQ== dependencies: "@graphql-typed-document-node/core" "^3.1.1" cross-inspect "1.0.0" @@ -3746,9 +3773,9 @@ tslib "^2.3.1" "@grpc/grpc-js@^1.7.1", "@grpc/grpc-js@^1.7.3": - version "1.9.11" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.9.11.tgz#7b21195c910a49c0bb5d0df21d28a30c4e174851" - integrity sha512-QDhMfbTROOXUhLHMroow8f3EHiCKUOh6UwxMP5S3EuXMnWMNSVIhatGZRwkpg9OUTYdZPsDUVH3cOAkWhGFUJw== + version "1.9.12" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.9.12.tgz#a45b23a7d9ee1eadc9fa8fe480e27edbc6544cdd" + integrity sha512-Um5MBuge32TS3lAKX02PGCnFM4xPT996yLgZNb5H03pn6NyJ4Iwn5YcPq6Jj9yxGRk7WOgaZFtVRH5iTdYBeUg== dependencies: "@grpc/proto-loader" "^0.7.8" "@types/node" ">=12.12.47" @@ -4176,9 +4203,9 @@ uuid "^9.0.0" "@lukeed/ms@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@lukeed/ms/-/ms-2.0.1.tgz#3c2bbc258affd9cc0e0cc7828477383c73afa6ee" - integrity sha512-Xs/4RZltsAL7pkvaNStUQt7netTkyxrS0K+RILcVr3TRMS/ToOg4I6uNfhB9SlGsnWBym4U+EaXq0f0cEMNkHA== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@lukeed/ms/-/ms-2.0.2.tgz#07f09e59a74c52f4d88c6db5c1054e819538e2a8" + integrity sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA== "@mapbox/node-pre-gyp@^1.0.5": version "1.0.11" @@ -4715,11 +4742,11 @@ semver "^7.3.8" "@netlify/functions-utils@^5.2.37": - version "5.2.41" - resolved "https://registry.yarnpkg.com/@netlify/functions-utils/-/functions-utils-5.2.41.tgz#88bd31d0e8754724c1fffd5f687b3e78215e0d09" - integrity sha512-rvp11NquyVQ4d5rK6W6cP4M3iKyuOATqfEGlC7jLUZjMeNp4bQ5gPb5RaqqG5MHPY0KmdELMGGGgUxmCbh+Qxw== + version "5.2.43" + resolved "https://registry.yarnpkg.com/@netlify/functions-utils/-/functions-utils-5.2.43.tgz#76e36f52b1ce147143876d6dc900ab219d949b98" + integrity sha512-AdPOExEvW84IngtENV96DdEef9IVUodUDVP8gynumIEmbjjnhczhiWv6DKY5thPaop+p1LEsZwsYcJseuGMNSA== dependencies: - "@netlify/zip-it-and-ship-it" "9.26.2" + "@netlify/zip-it-and-ship-it" "9.27.0" cpy "^9.0.0" path-exists "^5.0.0" @@ -4903,7 +4930,7 @@ "@netlify/node-cookies" "^0.1.0" urlpattern-polyfill "8.0.2" -"@netlify/serverless-functions-api@^1.10.1", "@netlify/serverless-functions-api@^1.12.0": +"@netlify/serverless-functions-api@^1.10.1", "@netlify/serverless-functions-api@^1.12.1": version "1.12.1" resolved "https://registry.yarnpkg.com/@netlify/serverless-functions-api/-/serverless-functions-api-1.12.1.tgz#fb926f62377d84719c70f9a4493f3d04d6f6e7dc" integrity sha512-+G9cTltqfH54dF4dLqoEOV2P4qTIY8dM9blUVqg+NtVTXyuadzgpHqtffhVeyeLytVnTx1238kWJUe+sV3bnlg== @@ -4949,15 +4976,15 @@ urlpattern-polyfill "8.0.2" yargs "^17.0.0" -"@netlify/zip-it-and-ship-it@9.26.2": - version "9.26.2" - resolved "https://registry.yarnpkg.com/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-9.26.2.tgz#e531499922ed4e46fc5af603c5db2528ac3f6452" - integrity sha512-tsQbSfgOTEfZmSnUbCJiHDVyYDRN1gQQEWjAmJ90YI60ZloT4j7B4HlBt0gshU9pPCiDxoHhQMCk5pHg7//CSw== +"@netlify/zip-it-and-ship-it@9.27.0": + version "9.27.0" + resolved "https://registry.yarnpkg.com/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-9.27.0.tgz#35479990e0e67570ad53b271252b0064552ca521" + integrity sha512-CPlHCKixB9zfaRne5LNiyu14ugyYUmhAfxQJd9h+4eLfAKV52Hd+h3J74Xd+y6sDDrCSMWPmBFmTUTeOUBKX3Q== dependencies: "@babel/parser" "^7.22.5" - "@babel/types" "7.23.3" + "@babel/types" "7.23.4" "@netlify/binary-info" "^1.0.0" - "@netlify/serverless-functions-api" "^1.12.0" + "@netlify/serverless-functions-api" "^1.12.1" "@vercel/nft" "^0.23.0" archiver "^6.0.0" common-path-prefix "^3.0.0" @@ -5863,12 +5890,11 @@ universal-user-agent "^6.0.0" "@octokit/endpoint@^9.0.0": - version "9.0.2" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-9.0.2.tgz#f9098bf15b893ac30c144c5e77da0322ad41b008" - integrity sha512-qhKW8YLIi+Kmc92FQUFGr++DYtkx/1fBv+Thua6baqnjnOsgBYJDCvWZR1YcINuHGOEQt416WOfE+A/oG60NBQ== + version "9.0.4" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-9.0.4.tgz#8afda5ad1ffc3073d08f2b450964c610b821d1ea" + integrity sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw== dependencies: "@octokit/types" "^12.0.0" - is-plain-object "^5.0.0" universal-user-agent "^6.0.0" "@octokit/graphql@^5.0.0": @@ -5886,9 +5912,9 @@ integrity sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw== "@octokit/openapi-types@^19.0.2": - version "19.0.2" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-19.0.2.tgz#d72778fe2f6151314b6f0201fbc771bb741276fc" - integrity sha512-8li32fUDUeml/ACRp/njCWTsk5t17cfTM1jp9n08pBrqs5cDFJubtjsSnuz56r5Tad6jdEPJld7LxNp9dNcyjQ== + version "19.1.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-19.1.0.tgz#75ec7e64743870fc73e1ab4bc6ec252ecdd624dc" + integrity sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw== "@octokit/plugin-paginate-rest@^6.1.2": version "6.1.2" @@ -7842,10 +7868,10 @@ dependencies: "@babel/runtime" "^7.13.10" -"@remix-run/router@1.12.0": - version "1.12.0" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.12.0.tgz#e89b64b6fa97a8a5b740a4c38c2904b80f1f229a" - integrity sha512-2hXv036Bux90e1GXTWSMfNzfDDK8LA8JYEWfyHxzvwdp6GyoWEovKc9cotb3KCKmkdwsIBuFGX7ScTWyiHv7Eg== +"@remix-run/router@1.13.0": + version "1.13.0" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.13.0.tgz#7e29c4ee85176d9c08cb0f4456bff74d092c5065" + integrity sha512-5dMOnVnefRsl4uRnAdoWjtVTdh8e6aZqgM4puy9nmEADH72ck+uXwzpJLEKE9Q6F8ZljNewLgmTfkxUrBdv4WA== "@repeaterjs/repeater@3.0.4": version "3.0.4" @@ -7858,9 +7884,9 @@ integrity sha512-l3YHBLAol6d/IKnB9LhpD0cEZWAoe3eFKUyTYWmFmCO2Q/WOckxLQAUyMZWwZV2M/m3+4vgRoaolFqaII82/TA== "@rollup/plugin-alias@^5.0.0": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-5.0.1.tgz#c84a43e021f5e0ebf1cc3c5af518c8371251bb77" - integrity sha512-JObvbWdOHoMy9W7SU0lvGhDtWq9PllP5mjpAy+TUslZG/WzOId9u80Hsqq1vCUn9pFJ0cxpdcnAv+QzU2zFH3Q== + version "5.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-5.1.0.tgz#99a94accc4ff9a3483be5baeedd5d7da3b597e93" + integrity sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ== dependencies: slash "^4.0.0" @@ -7910,9 +7936,9 @@ magic-string "^0.30.3" "@rollup/plugin-dynamic-import-vars@^2.0.3": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-dynamic-import-vars/-/plugin-dynamic-import-vars-2.1.0.tgz#5a233388ee8f7a48a50c82c363861ed2f611feb7" - integrity sha512-hv+gJohx8HLPByLcuNxzzZw1/Ioi96qBzyMf3DIh/Zz0AHr7W/mknRYjqQaW/SF9UcuM2iYueSI+R4orbraj2Q== + version "2.1.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-dynamic-import-vars/-/plugin-dynamic-import-vars-2.1.2.tgz#cf87cec47b00ab86badecaf39d234052d3be389b" + integrity sha512-4lr2oXxs9hcxtGGaK8s0i9evfjzDrAs7ngw28TqruWKTEm0+U4Eljb+F6HXGYdFv8xRojQlrQwV7M/yxeh3yzQ== dependencies: "@rollup/pluginutils" "^5.0.1" astring "^1.8.5" @@ -8009,9 +8035,9 @@ picomatch "^2.2.2" "@rollup/pluginutils@^5.0.1", "@rollup/pluginutils@^5.0.2": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.5.tgz#bbb4c175e19ebfeeb8c132c2eea0ecb89941a66c" - integrity sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q== + version "5.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" + integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== dependencies: "@types/estree" "^1.0.0" estree-walker "^2.0.2" @@ -8089,72 +8115,72 @@ "@noble/hashes" "~1.3.0" "@scure/base" "~1.1.0" -"@sentry-internal/tracing@7.81.1": - version "7.81.1" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.81.1.tgz#1180365cd8a9e18cb0f92e1ea970161840ec0e2e" - integrity sha512-E5xm27xrLXL10knH2EWDQsQYh5nb4SxxZzJ3sJwDGG9XGKzBdlp20UUhKqx00wixooVX9uCj3e4Jg8SvNB1hKg== +"@sentry-internal/tracing@7.83.0": + version "7.83.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.83.0.tgz#8f69d339569b020c495f8350a8ea527c369586e8" + integrity sha512-fY1ZyOiQaaUTuoq5rO+G4/5Ov3n8BnfNK7ck97yAGxy3w+E1CwhVZkXHEvTngNfdYV3ArxvlrtPRb9STFRqXvQ== dependencies: - "@sentry/core" "7.81.1" - "@sentry/types" "7.81.1" - "@sentry/utils" "7.81.1" + "@sentry/core" "7.83.0" + "@sentry/types" "7.83.0" + "@sentry/utils" "7.83.0" -"@sentry/browser@7.81.1": - version "7.81.1" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.81.1.tgz#5ee6ae3679ee80f444d2e8c5662430e7a734ae50" - integrity sha512-DNtS7bZEnFPKVoGazKs5wHoWC0FwsOFOOMNeDvEfouUqKKbjO7+RDHbr7H6Bo83zX4qmZWRBf8V+3n3YPIiJFw== +"@sentry/browser@7.83.0": + version "7.83.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.83.0.tgz#01e8ba0d3f4d4652e67c8b0d955d2f3903a19ab0" + integrity sha512-8v7QEaC/fVAHn8pi59ZlJznr7ZdOQIgtz8DAOJeJsC2vHTAxQ9nVkoMkJWjTp/qaDHUjSe5ob6eqaChuhi6t2g== dependencies: - "@sentry-internal/tracing" "7.81.1" - "@sentry/core" "7.81.1" - "@sentry/replay" "7.81.1" - "@sentry/types" "7.81.1" - "@sentry/utils" "7.81.1" + "@sentry-internal/tracing" "7.83.0" + "@sentry/core" "7.83.0" + "@sentry/replay" "7.83.0" + "@sentry/types" "7.83.0" + "@sentry/utils" "7.83.0" -"@sentry/core@7.81.1": - version "7.81.1" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.81.1.tgz#082fd9122bf9a488c8e05b1754724ddbc2d5cf30" - integrity sha512-tU37yAmckOGCw/moWKSwekSCWWJP15O6luIq+u7wal22hE88F3Vc5Avo8SeF3upnPR+4ejaOFH+BJTr6bgrs6Q== +"@sentry/core@7.83.0": + version "7.83.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.83.0.tgz#29bdd5aba40a6f25c01c68387b6a9aa13e27f20a" + integrity sha512-fglvpw8aWM6nWXzCjAVXIMTiTEAQ9G9b85IpDd/7L8fuwaFTPQAUSJXupF2PfbpQ3FUYbJt80dxshbERVJG8vQ== dependencies: - "@sentry/types" "7.81.1" - "@sentry/utils" "7.81.1" + "@sentry/types" "7.83.0" + "@sentry/utils" "7.83.0" "@sentry/react@^7.52.1": - version "7.81.1" - resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.81.1.tgz#6a94e8e373a5bf27330cea2eb1a603ae0eb0b8ba" - integrity sha512-kk0plP/mf8KgVLOiImIpp1liYysmh3Un8uXcVAToomSuHZPGanelFAdP0XhY+0HlWU9KIfxTjhMte1iSwQ8pYw== + version "7.83.0" + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.83.0.tgz#e3d5e4480d613e8c5b2e927f6f72a7b91896f721" + integrity sha512-8GjKRXkZH+FkmO0LaGEVOrTC9g6Csn7VnTVIqtnfX2hVxbdHnqyjhHDgnCbmW7JRb0X6//QK4CuLCWu8uApLBw== dependencies: - "@sentry/browser" "7.81.1" - "@sentry/types" "7.81.1" - "@sentry/utils" "7.81.1" + "@sentry/browser" "7.83.0" + "@sentry/types" "7.83.0" + "@sentry/utils" "7.83.0" hoist-non-react-statics "^3.3.2" -"@sentry/replay@7.81.1": - version "7.81.1" - resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.81.1.tgz#a656d55e2a00b34e42be6eeb79018d21efc223af" - integrity sha512-4ueT0C4bYjngN/9p0fEYH10dTMLovHyk9HxJ6zSTgePvGVexhg+cSEHXisoBDwHeRZVnbIvsVM0NA7rmEDXJJw== +"@sentry/replay@7.83.0": + version "7.83.0" + resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.83.0.tgz#14fd39a638911f60b780d232d2056f0d19ed478e" + integrity sha512-B/rzmjmQ3ZWE68m4Z9rHIN3Fa/wkfVVTK+iSQtqErFflyMETMNwtWRNd6P9FhXnphEINZEbcn/UZF5w5xu/DfA== dependencies: - "@sentry-internal/tracing" "7.81.1" - "@sentry/core" "7.81.1" - "@sentry/types" "7.81.1" - "@sentry/utils" "7.81.1" + "@sentry-internal/tracing" "7.83.0" + "@sentry/core" "7.83.0" + "@sentry/types" "7.83.0" + "@sentry/utils" "7.83.0" "@sentry/tracing@^7.52.1": - version "7.81.1" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.81.1.tgz#274f76119cdc3e58a4767ce8085cfc73cea13330" - integrity sha512-of9WMu0XgEBl9onTEk8SMaxj4BUadaUvHH96T1OpRMjdyuCM/3u2mjCkh3ekINr3Fu/uT2kJ/kO3goUxfcdXIQ== + version "7.83.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.83.0.tgz#816c99ca1c9dc0b04962da88d4728b6360f46ee7" + integrity sha512-0VqUOV/DTYdnkxMU28miybyxsRDjizFe+O5vBzShZNR2XfRHI70ozd8kI/Uni685QlCYirpcnS5evrEx1yLf+A== dependencies: - "@sentry-internal/tracing" "7.81.1" + "@sentry-internal/tracing" "7.83.0" -"@sentry/types@7.81.1": - version "7.81.1" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.81.1.tgz#2b2551fc291e1089651fd574a68f7c4175878bd5" - integrity sha512-dvJvGyctiaPMIQqa46k56Re5IODWMDxiHJ1UjBs/WYDLrmWFPGrEbyJ8w8CYLhYA+7qqrCyIZmHbWSTRIxstHw== +"@sentry/types@7.83.0": + version "7.83.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.83.0.tgz#117e45900603190c547e52bba35e1b3d539d47fb" + integrity sha512-Bd+zJcy8p1VgCfQqUprmUaw0QPWUV+GmCt6zJRHrHTb2pwLahXv6sHJvQ8F8Va6S7Keuy088U+kHzUFGQLMZMQ== -"@sentry/utils@7.81.1": - version "7.81.1" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.81.1.tgz#42f3e77baf90205cec1f8599eb8445a6918030bd" - integrity sha512-gq+MDXIirHKxNZ+c9/lVvCXd6y2zaZANujwlFggRH2u9SRiPaIXVilLpvMm4uJqmqBMEcY81ArujExtHvkbCqg== +"@sentry/utils@7.83.0": + version "7.83.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.83.0.tgz#ec0fc0a468ec35ab9623603f1ba218dd58233eda" + integrity sha512-7SrZtgAn3pHFBqSSvV/VL0CWTBQ7VenJjok4+WGWd6/FhP3fKrEEd9rjVTUb2Pzq9WLJJYzdvxAG8RlggG+H4g== dependencies: - "@sentry/types" "7.81.1" + "@sentry/types" "7.83.0" "@sinclair/typebox@^0.27.8": version "0.27.8" @@ -8635,12 +8661,12 @@ prop-types "^15.7.2" "@storybook/api@^7.0.12": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/api/-/api-7.5.3.tgz#cdf1890cf27936e754c0482a5f12d37c89a71f5e" - integrity sha512-NUW7rxATCaOSkMF/wDz8cseYzYy6rP5CgHaBNVpmfjmObMJVGk3lwxzWk43/jDrK5NC/kLoNDeKgwhSUAx3ZGA== + version "7.6.1" + resolved "https://registry.yarnpkg.com/@storybook/api/-/api-7.6.1.tgz#f56731194ed183851113af07e9122e2147c288af" + integrity sha512-NMPcWRzAKXA67J+d7+2tYb6GuLGPPQN9EgvdWeD52Oe/1RyLlYgsJWctrGoyfvQaRIfAKuDoGvrGQJbg8OzrLQ== dependencies: - "@storybook/client-logger" "7.5.3" - "@storybook/manager-api" "7.5.3" + "@storybook/client-logger" "7.6.1" + "@storybook/manager-api" "7.6.1" "@storybook/blocks@7.4.5": version "7.4.5" @@ -8693,15 +8719,15 @@ process "^0.11.10" util "^0.12.4" -"@storybook/builder-manager@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/builder-manager/-/builder-manager-7.5.3.tgz#dc667fd6d450988bc33c246686822a87c1b95558" - integrity sha512-uf4Vyj8ofHaq94m065SMvFKak1XrrxgI83VZAxc2QjiPcbRwcVOZd+wcKFdZydqqA6FlBDdJrU+k9INA4Qkfcw== +"@storybook/builder-manager@7.6.1": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@storybook/builder-manager/-/builder-manager-7.6.1.tgz#1799c52f27990083322decce9018b6de71ca8520" + integrity sha512-Hxp2y3XR5UgfsWWqVM7R4jb+4DZNe8LBb9ko3PzMRAySY0ED45/lPTK+zEEFhOX4mc1Ftqmj0RAJHmbwr0vQRg== dependencies: "@fal-works/esbuild-plugin-global-externals" "^2.1.2" - "@storybook/core-common" "7.5.3" - "@storybook/manager" "7.5.3" - "@storybook/node-logger" "7.5.3" + "@storybook/core-common" "7.6.1" + "@storybook/manager" "7.6.1" + "@storybook/node-logger" "7.6.1" "@types/ejs" "^3.1.1" "@types/find-cache-dir" "^3.2.1" "@yarnpkg/esbuild-plugin-pnp" "^3.0.0-rc.10" @@ -8781,23 +8807,35 @@ telejson "^7.2.0" tiny-invariant "^1.3.1" -"@storybook/cli@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/cli/-/cli-7.5.3.tgz#127ae3bcad169bf8c3eb3e1e6c9d587ad5f57e81" - integrity sha512-XysHSnknZTAcTbQ0bQsbfv5J8ifHpOBsmXjk1HCA05E9WGGrn9JrQRCfpDUQJ6O6UWq0bpMqzP8gFLWXFE7hug== +"@storybook/channels@7.6.1": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.6.1.tgz#00df76421901a7b1bdd63a21e5cdac4b07ff0215" + integrity sha512-wQBiY8gLRs6I3V8Cr5xHNx3OImDhzsYGOMM8tUnVKO4HpcxsJ7ipQ8UvIU88MNbk+gx3WCsM4FZBBPF4f1Ar/g== dependencies: - "@babel/core" "^7.22.9" - "@babel/preset-env" "^7.22.9" - "@babel/types" "^7.22.5" + "@storybook/client-logger" "7.6.1" + "@storybook/core-events" "7.6.1" + "@storybook/global" "^5.0.0" + qs "^6.10.0" + telejson "^7.2.0" + tiny-invariant "^1.3.1" + +"@storybook/cli@7.6.1": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@storybook/cli/-/cli-7.6.1.tgz#be66394896f86170cdc685e0d23f1ca8abe70885" + integrity sha512-o0KDj9E5VYVn55/l9j7YwncehlfIHX2CCBCp0opSmsv3ohw9ME9aTdl2q19j4SXV30UQFFbi/4Yn/FBWsShxRg== + dependencies: + "@babel/core" "^7.23.2" + "@babel/preset-env" "^7.23.2" + "@babel/types" "^7.23.0" "@ndelangen/get-tarball" "^3.0.7" - "@storybook/codemod" "7.5.3" - "@storybook/core-common" "7.5.3" - "@storybook/core-events" "7.5.3" - "@storybook/core-server" "7.5.3" - "@storybook/csf-tools" "7.5.3" - "@storybook/node-logger" "7.5.3" - "@storybook/telemetry" "7.5.3" - "@storybook/types" "7.5.3" + "@storybook/codemod" "7.6.1" + "@storybook/core-common" "7.6.1" + "@storybook/core-events" "7.6.1" + "@storybook/core-server" "7.6.1" + "@storybook/csf-tools" "7.6.1" + "@storybook/node-logger" "7.6.1" + "@storybook/telemetry" "7.6.1" + "@storybook/types" "7.6.1" "@types/semver" "^7.3.4" "@yarnpkg/fslib" "2.10.3" "@yarnpkg/libzip" "2.3.0" @@ -8814,7 +8852,7 @@ get-port "^5.1.1" giget "^1.0.0" globby "^11.0.2" - jscodeshift "^0.14.0" + jscodeshift "^0.15.1" leven "^3.1.0" ora "^5.4.1" prettier "^2.8.0" @@ -8842,22 +8880,29 @@ dependencies: "@storybook/global" "^5.0.0" -"@storybook/codemod@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/codemod/-/codemod-7.5.3.tgz#8a294b8d12f304a2a9db902848977147394d451c" - integrity sha512-gzycFdqnF4drUjfzMTrLNHqi2jkw1lDeACUzQdug5uWxynZKAvMTHAgU0q9wvoYRR9Xhq8PhfKtXtYCCj2Er4Q== +"@storybook/client-logger@7.6.1": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.6.1.tgz#c0910d8fe2aabc6729c185030958efd5dac15106" + integrity sha512-klaeDFGK2NAXoRDgp8+55Qn9mdVVNk16POb2/lbXYo8ydZDYaNjjLISO9+dLA65SL8NUEQw1m8YVhzyAQCE5bg== dependencies: - "@babel/core" "^7.22.9" - "@babel/preset-env" "^7.22.9" - "@babel/types" "^7.22.5" - "@storybook/csf" "^0.1.0" - "@storybook/csf-tools" "7.5.3" - "@storybook/node-logger" "7.5.3" - "@storybook/types" "7.5.3" + "@storybook/global" "^5.0.0" + +"@storybook/codemod@7.6.1": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@storybook/codemod/-/codemod-7.6.1.tgz#03258dfde9057895bcf581a83cef364b26c34c47" + integrity sha512-V9zzrNVfJZ3y7Y0MIL3PySDmMuxKM207wE+XYectOCTTyz7pObylwpp3UugNRptj2vvinLfCx1SjKVQ6RpYarQ== + dependencies: + "@babel/core" "^7.23.2" + "@babel/preset-env" "^7.23.2" + "@babel/types" "^7.23.0" + "@storybook/csf" "^0.1.2" + "@storybook/csf-tools" "7.6.1" + "@storybook/node-logger" "7.6.1" + "@storybook/types" "7.6.1" "@types/cross-spawn" "^6.0.2" cross-spawn "^7.0.3" globby "^11.0.2" - jscodeshift "^0.14.0" + jscodeshift "^0.15.1" lodash "^4.17.21" prettier "^2.8.0" recast "^0.23.1" @@ -8879,17 +8924,17 @@ util-deprecate "^1.0.2" "@storybook/components@^7.0.12": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-7.5.3.tgz#3fa282252e02973ead9f537f5ae3b5aeee5be4c4" - integrity sha512-M3+cjvEsDGLUx8RvK5wyF6/13LNlUnKbMgiDE8Sxk/v/WPpyhOAIh/B8VmrU1psahS61Jd4MTkFmLf1cWau1vw== + version "7.6.1" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-7.6.1.tgz#6f5a04a2a2158e87d8a687b3f2a63f70ac1e5d32" + integrity sha512-jZNGVepmn/iwZ/WSwchZfBo8r4knUpHLwrffMc8FSltmzyKxlEmtZwzlTbBCi48mBc0CqucI1GYtnhzzgX6N8w== dependencies: "@radix-ui/react-select" "^1.2.2" "@radix-ui/react-toolbar" "^1.0.4" - "@storybook/client-logger" "7.5.3" - "@storybook/csf" "^0.1.0" + "@storybook/client-logger" "7.6.1" + "@storybook/csf" "^0.1.2" "@storybook/global" "^5.0.0" - "@storybook/theming" "7.5.3" - "@storybook/types" "7.5.3" + "@storybook/theming" "7.6.1" + "@storybook/types" "7.6.1" memoizerific "^1.11.3" use-resize-observer "^9.1.0" util-deprecate "^1.0.2" @@ -8939,7 +8984,7 @@ resolve-from "^5.0.0" ts-dedent "^2.0.0" -"@storybook/core-common@7.5.3", "@storybook/core-common@^7.0.12": +"@storybook/core-common@7.5.3": version "7.5.3" resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-7.5.3.tgz#baaf4cb8e2e29ebd74626ee8cd5971f337ac4e23" integrity sha512-WGMwjtVUxUzFwQz7Mgs0gLuNebIGNV55dCdZgurx2/y6QOkJ2v8D0b3iL+xKMV4B5Nwoc2DsM418Y+Hy3UQd+w== @@ -8968,6 +9013,35 @@ resolve-from "^5.0.0" ts-dedent "^2.0.0" +"@storybook/core-common@7.6.1", "@storybook/core-common@^7.0.12": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-7.6.1.tgz#9253fffc3d2a3aeabf75125cc0a52115923e28e9" + integrity sha512-6K9UXUxO708T0H29Z2QDrLHU5nFL3VEWuS1vzbC/naJVt/yg+w1jzgknP7IFmmDf2e02tLQS886cE+M23249Tg== + dependencies: + "@storybook/core-events" "7.6.1" + "@storybook/node-logger" "7.6.1" + "@storybook/types" "7.6.1" + "@types/find-cache-dir" "^3.2.1" + "@types/node" "^18.0.0" + "@types/node-fetch" "^2.6.4" + "@types/pretty-hrtime" "^1.0.0" + chalk "^4.1.0" + esbuild "^0.18.0" + esbuild-register "^3.5.0" + file-system-cache "2.3.0" + find-cache-dir "^3.0.0" + find-up "^5.0.0" + fs-extra "^11.1.0" + glob "^10.0.0" + handlebars "^4.7.7" + lazy-universal-dotenv "^4.0.0" + node-fetch "^2.0.0" + picomatch "^2.3.0" + pkg-dir "^5.0.0" + pretty-hrtime "^1.0.3" + resolve-from "^5.0.0" + ts-dedent "^2.0.0" + "@storybook/core-events@7.4.5": version "7.4.5" resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.4.5.tgz#993b3afba83a0de55e02b55daf9e9c6830a11392" @@ -8975,13 +9049,20 @@ dependencies: ts-dedent "^2.0.0" -"@storybook/core-events@7.5.3", "@storybook/core-events@^7.0.12": +"@storybook/core-events@7.5.3": version "7.5.3" resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.5.3.tgz#210089576844569a914cc0cd1e07119bac6eb0e4" integrity sha512-DFOpyQ22JD5C1oeOFzL8wlqSWZzrqgDfDbUGP8xdO4wJu+FVTxnnWN6ZYLdTPB1u27DOhd7TzjQMfLDHLu7kbQ== dependencies: ts-dedent "^2.0.0" +"@storybook/core-events@7.6.1", "@storybook/core-events@^7.0.12": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.6.1.tgz#4d284a4e7e125ef7b7236c55fad25139f33172b3" + integrity sha512-4B55//oGyvdiKQUCMRHLlA6v7HW69tf4mqjHdPbwETyj9PzFTpo4S8tsYxkba/azCxvqncotPDsMkxycritGbA== + dependencies: + ts-dedent "^2.0.0" + "@storybook/core-server@7.4.5": version "7.4.5" resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-7.4.5.tgz#df6bba0178b2470789103463450461d39de54279" @@ -9030,26 +9111,26 @@ watchpack "^2.2.0" ws "^8.2.3" -"@storybook/core-server@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-7.5.3.tgz#23ea0757d6ffc0e9acc269b58efd7f75f5d781f6" - integrity sha512-Gmq1w7ulN/VIeTDboNcb6GNM+S8T0SqhJUqeoHzn0vLGnzxeuYRJ0V3ZJhGZiJfSmCNqYAjC8QUBf6uU1gLipw== +"@storybook/core-server@7.6.1": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-7.6.1.tgz#cfd61872b3c1c65c5dc64e11333befa3403c770f" + integrity sha512-WqiNpcyS8j+AgrJSqF4FLKvgXKVYpvk0kouNzLHyXmknjfqcGPySKpEP/MYD9tALdAnZhA80M5suuLFSAWlXxw== dependencies: "@aw-web-design/x-default-browser" "1.4.126" "@discoveryjs/json-ext" "^0.5.3" - "@storybook/builder-manager" "7.5.3" - "@storybook/channels" "7.5.3" - "@storybook/core-common" "7.5.3" - "@storybook/core-events" "7.5.3" - "@storybook/csf" "^0.1.0" - "@storybook/csf-tools" "7.5.3" + "@storybook/builder-manager" "7.6.1" + "@storybook/channels" "7.6.1" + "@storybook/core-common" "7.6.1" + "@storybook/core-events" "7.6.1" + "@storybook/csf" "^0.1.2" + "@storybook/csf-tools" "7.6.1" "@storybook/docs-mdx" "^0.1.0" "@storybook/global" "^5.0.0" - "@storybook/manager" "7.5.3" - "@storybook/node-logger" "7.5.3" - "@storybook/preview-api" "7.5.3" - "@storybook/telemetry" "7.5.3" - "@storybook/types" "7.5.3" + "@storybook/manager" "7.6.1" + "@storybook/node-logger" "7.6.1" + "@storybook/preview-api" "7.6.1" + "@storybook/telemetry" "7.6.1" + "@storybook/types" "7.6.1" "@types/detect-port" "^1.3.0" "@types/node" "^18.0.0" "@types/pretty-hrtime" "^1.0.0" @@ -9111,17 +9192,17 @@ recast "^0.23.1" ts-dedent "^2.0.0" -"@storybook/csf-tools@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-7.5.3.tgz#1b2a393b3402a4c2fdfb2eb4eb90c63463c106ae" - integrity sha512-676C3ISn7FQJKjb3DBWXhjGN2OQEv4s71dx+5D0TlmswDCOOGS8dYFjP8wVx51+mAIE8CROAw7vLHLtVKU7SwQ== +"@storybook/csf-tools@7.6.1": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-7.6.1.tgz#a92ad74d6d156c8a407a5da26900fae9bd9cbaab" + integrity sha512-+fkVma/Qbm5Lips9jwlN/wZybikYHJNGiAyjT1qjtfis9115XSUKXJtGhnAUtB6sbYtoFBNvBJ9QrFKa1lEZ/A== dependencies: - "@babel/generator" "^7.22.9" - "@babel/parser" "^7.22.7" - "@babel/traverse" "^7.22.8" - "@babel/types" "^7.22.5" - "@storybook/csf" "^0.1.0" - "@storybook/types" "7.5.3" + "@babel/generator" "^7.23.0" + "@babel/parser" "^7.23.0" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + "@storybook/csf" "^0.1.2" + "@storybook/types" "7.6.1" fs-extra "^11.1.0" recast "^0.23.1" ts-dedent "^2.0.0" @@ -9133,10 +9214,10 @@ dependencies: lodash "^4.17.15" -"@storybook/csf@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.1.1.tgz#abccc8c3e49aed0a6a7e87beb0d1c262b1921c06" - integrity sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg== +"@storybook/csf@^0.1.0", "@storybook/csf@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.1.2.tgz#8e7452f0097507f5841b5ade3f5da1525bc9afb2" + integrity sha512-ePrvE/pS1vsKR9Xr+o+YwdqNgHUyXvg+1Xjx0h9LrVx7Zq4zNe06pd63F5EvzTbCbJsHj7GHr9tkiaqm7U8WRA== dependencies: type-fest "^2.19.0" @@ -9206,19 +9287,19 @@ telejson "^7.2.0" ts-dedent "^2.0.0" -"@storybook/manager-api@7.5.3", "@storybook/manager-api@^7.0.12": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-7.5.3.tgz#6e9e791a8996631dc77f3a0cecc34ce4f4869647" - integrity sha512-d8mVLr/5BEG4bAS2ZeqYTy/aX4jPEpZHdcLaWoB4mAM+PAL9wcWsirUyApKtDVYLITJf/hd8bb2Dm2ok6E45gA== +"@storybook/manager-api@7.6.1", "@storybook/manager-api@^7.0.12": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-7.6.1.tgz#95d4f956468a211ba79422cb45d98d8726f95dfe" + integrity sha512-Fo+sM5ExbZ3UWWVMd5A3+Mee9/YGtLAla3yActaemcWmR2r/THjoFtL4GU2qmUnUvTvSYLYir6s1+90cUyfSvA== dependencies: - "@storybook/channels" "7.5.3" - "@storybook/client-logger" "7.5.3" - "@storybook/core-events" "7.5.3" - "@storybook/csf" "^0.1.0" + "@storybook/channels" "7.6.1" + "@storybook/client-logger" "7.6.1" + "@storybook/core-events" "7.6.1" + "@storybook/csf" "^0.1.2" "@storybook/global" "^5.0.0" - "@storybook/router" "7.5.3" - "@storybook/theming" "7.5.3" - "@storybook/types" "7.5.3" + "@storybook/router" "7.6.1" + "@storybook/theming" "7.6.1" + "@storybook/types" "7.6.1" dequal "^2.0.2" lodash "^4.17.21" memoizerific "^1.11.3" @@ -9232,10 +9313,10 @@ resolved "https://registry.yarnpkg.com/@storybook/manager/-/manager-7.4.5.tgz#efd7c44eac0dc309ee96ab8c4eed54ffabde76d8" integrity sha512-yoqVktWzzC0f8cXsxErOEUfT+VFfWV/W7soytIPQuJFqNaq+BqR5A7WCeoY7BIv3mdpRjo4GKwerCsgoHYeHhg== -"@storybook/manager@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/manager/-/manager-7.5.3.tgz#e185fc056546c19d255cdc26b6f2698e04d3f8ab" - integrity sha512-3ZZrHYcXWAQXpDQZBvKyScGgQaAaBc63i+KC2mXqzTdXuJhVDUiylvqLRprBnrEprgePQLFrxGC2JSHUwH7dqg== +"@storybook/manager@7.6.1": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@storybook/manager/-/manager-7.6.1.tgz#d43f9314e88737e9f1772ff20f84629c11bd7506" + integrity sha512-e2cYvMl01TZj+s++aqlCkeyvZoIFAUaRyG8d6rj2S1mIfzSl41NL2e76cdm5nIdrgkZFv4fMNaWpXyJp1p3wfg== "@storybook/mdx2-csf@^1.0.0": version "1.1.0" @@ -9247,11 +9328,16 @@ resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-7.4.5.tgz#910581defe4063395c50b1d43f6bb8ea6a945e4d" integrity sha512-fJSykphbryuEYj1qihbaTH5oOzD4NkptRxyf2uyBrpgkr5tCTq9d7GHheqaBuIdi513dsjlcIR7z5iHxW7ZD+Q== -"@storybook/node-logger@7.5.3", "@storybook/node-logger@^7.0.12": +"@storybook/node-logger@7.5.3": version "7.5.3" resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-7.5.3.tgz#23133787f5b3427cef7301e10c6caf9132969fc1" integrity sha512-7ZZDw/q3hakBj1FngsBjaHNIBguYAWojp7R1fFTvwkeunCi21EUzZjRBcqp10kB6BP3/NLX32bIQknsCWD76rQ== +"@storybook/node-logger@7.6.1", "@storybook/node-logger@^7.0.12": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-7.6.1.tgz#57eea244b63670b9908b077d1e7f72d78b438637" + integrity sha512-aHQUfWJBJBBof4WfNN552I76QZmMwLHeerI+98NE3IphRHlM+OW96crKXKvX7DWaN5otgxdXroZFpEABKhHIwQ== + "@storybook/postinstall@7.4.5": version "7.4.5" resolved "https://registry.yarnpkg.com/@storybook/postinstall/-/postinstall-7.4.5.tgz#3258ae9831436df295aa04d4260ed4e54051da4b" @@ -9299,7 +9385,7 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/preview-api@7.5.3", "@storybook/preview-api@^7.0.12": +"@storybook/preview-api@7.5.3": version "7.5.3" resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-7.5.3.tgz#eaf70f9b6888d0dac42ce39a296afd6acacf6156" integrity sha512-LNmEf7oBRnZ1wG3bQ+P+TO29+NN5pSDJiAA6FabZBrtIVm+psc2lxBCDQvFYyAFzQSlt60toGKNW8+RfFNdR5Q== @@ -9319,6 +9405,26 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" +"@storybook/preview-api@7.6.1", "@storybook/preview-api@^7.0.12": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-7.6.1.tgz#710abeaa86040f9f2f8ebeb19ef662a86d8d564e" + integrity sha512-lhuwkDHBZCq3UtQXRkGKTBntINkXPXyAA7fSYWrwfQBr/3NhaCoj859b+71Ax8sYcSFF4+U3S6+o8XE3dz+kwA== + dependencies: + "@storybook/channels" "7.6.1" + "@storybook/client-logger" "7.6.1" + "@storybook/core-events" "7.6.1" + "@storybook/csf" "^0.1.2" + "@storybook/global" "^5.0.0" + "@storybook/types" "7.6.1" + "@types/qs" "^6.9.5" + dequal "^2.0.2" + lodash "^4.17.21" + memoizerific "^1.11.3" + qs "^6.10.0" + synchronous-promise "^2.0.15" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + "@storybook/preview@7.5.3": version "7.5.3" resolved "https://registry.yarnpkg.com/@storybook/preview/-/preview-7.5.3.tgz#9abe434ea9fb280a7d2141b72be2958f7eb9cc5b" @@ -9420,12 +9526,12 @@ memoizerific "^1.11.3" qs "^6.10.0" -"@storybook/router@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-7.5.3.tgz#e024ad96bc4bbf7250239921a251e828729e4747" - integrity sha512-/iNYCFore7R5n6eFHbBYoB0P2/sybTVpA+uXTNUd3UEt7Ro6CEslTaFTEiH2RVQwOkceBp/NpyWon74xZuXhMg== +"@storybook/router@7.6.1": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@storybook/router/-/router-7.6.1.tgz#8fe94ddbef506864343d73a65e182a2af64a50f3" + integrity sha512-zoIRDhes/4R9jsJ6c48xqmhcGYrSoPBzxEWnIaeSv0rEZFLhkTgruyAG0/rJ0FrCsSwFxVSI6ecYfCPVYMVr7w== dependencies: - "@storybook/client-logger" "7.5.3" + "@storybook/client-logger" "7.6.1" memoizerific "^1.11.3" qs "^6.10.0" @@ -9443,14 +9549,14 @@ fs-extra "^11.1.0" read-pkg-up "^7.0.1" -"@storybook/telemetry@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/telemetry/-/telemetry-7.5.3.tgz#67d77c5cb33360c6f483a7cc89897fea160ca446" - integrity sha512-X6alII3o0jCb5xALuw+qcWmvyrbhlkmPeNZ6ZQXknOfB4DkwponFdWN5y6W7yGvr01xa5QBepJRV79isl97d8g== +"@storybook/telemetry@7.6.1": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@storybook/telemetry/-/telemetry-7.6.1.tgz#750a22ad879d8aa3bc32e5b3145aa1a873bbc881" + integrity sha512-xR2OUqoANSjHReu4RONXNAkoy9WPwZfk3IfajtqgMsYlwXY/yvLZqDkp/eZNhI6gps8IsP7gMx9E1WDqS3ghcA== dependencies: - "@storybook/client-logger" "7.5.3" - "@storybook/core-common" "7.5.3" - "@storybook/csf-tools" "7.5.3" + "@storybook/client-logger" "7.6.1" + "@storybook/core-common" "7.6.1" + "@storybook/csf-tools" "7.6.1" chalk "^4.1.0" detect-package-manager "^2.0.1" fetch-retry "^5.0.2" @@ -9476,13 +9582,13 @@ "@storybook/global" "^5.0.0" memoizerific "^1.11.3" -"@storybook/theming@7.5.3", "@storybook/theming@^7.0.12", "@storybook/theming@^7.2.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-7.5.3.tgz#bbcf547c8b3ec1e59e641c58155a44781d5f310d" - integrity sha512-Cjmthe1MAk0z4RKCZ7m72gAD8YD0zTAH97z5ryM1Qv84QXjiCQ143fGOmYz1xEQdNFpOThPcwW6FEccLHTkVcg== +"@storybook/theming@7.6.1", "@storybook/theming@^7.0.12", "@storybook/theming@^7.2.3": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-7.6.1.tgz#97c7aa09842af2c11f5d04b0afe39b234aebcb23" + integrity sha512-e6S5jRn90etnvlJKIJ4wlFauFn9tNQ2YJ/Uyo8yUUGrA665yc7zdBZPUwD6oHYXP6znEfXMJ2dbx/hs1I/V7Gw== dependencies: "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" - "@storybook/client-logger" "7.5.3" + "@storybook/client-logger" "7.6.1" "@storybook/global" "^5.0.0" memoizerific "^1.11.3" @@ -9496,7 +9602,7 @@ "@types/express" "^4.7.0" file-system-cache "2.3.0" -"@storybook/types@7.5.3", "@storybook/types@^7.0.12": +"@storybook/types@7.5.3": version "7.5.3" resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.5.3.tgz#be956805dafc09fa9a7a3dd4e0e5097ef08e4fd4" integrity sha512-iu5W0Kdd6nysN5CPkY4GRl+0BpxRTdSfBIJak7mb6xCIHSB5t1tw4BOuqMQ5EgpikRY3MWJ4gY647QkWBX3MNQ== @@ -9506,6 +9612,16 @@ "@types/express" "^4.7.0" file-system-cache "2.3.0" +"@storybook/types@7.6.1", "@storybook/types@^7.0.12": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.6.1.tgz#3bb7f5e8ee39af53fb5aaf6ed713f8ad656151cf" + integrity sha512-xwEdMHbms7nnyPugqrxjz62n1CoAZ6I+m6y7Rfk/2C0nsgpS0Go1UXUNmcWNxx2ZYX7bEgSPZtcYZa9buPSY3g== + dependencies: + "@storybook/channels" "7.6.1" + "@types/babel__core" "^7.0.0" + "@types/express" "^4.7.0" + file-system-cache "2.3.0" + "@subsocial/definitions@0.8.13": version "0.8.13" resolved "https://registry.yarnpkg.com/@subsocial/definitions/-/definitions-0.8.13.tgz#5470fc503d574f8c85655202ba5fe1dbfbb0b43d" @@ -10325,9 +10441,9 @@ "@types/node" "*" "@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0": - version "20.9.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.9.4.tgz#cc8f970e869c26834bdb7ed480b30ede622d74c7" - integrity sha512-wmyg8HUhcn6ACjsn8oKYjkN/zUzQeNtMy44weTJSM6p4MMzEOuKbA3OjJ267uPCOW7Xex9dyrNTful8XTQYoDA== + version "20.10.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.1.tgz#d2c96f356c3125fedc983d74c424910c3767141c" + integrity sha512-T2qwhjWwGH81vUEx4EXmBKsTJRXFXNZTL4v0gi01+zyBmCwzE6TyHszqX01m+QHTEq+EZNo13NeJIdEqf+Myrg== dependencies: undici-types "~5.26.4" @@ -10349,14 +10465,14 @@ integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== "@types/node@^16.0.0", "@types/node@^16.10.2": - version "16.18.64" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.64.tgz#cd4e41420b77b346695def5a342f6dea0f9d9329" - integrity sha512-TiY2gIDob8+QOPIcVpS0ZY+H1DVTfplBW6UgL2b4gOYbigIlKVIh6Lcv+7YDUciUTqhVLG91PrZBXW10IoBhtw== + version "16.18.66" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.66.tgz#f59cc2ff96cc47f972a11a458a9b29bf0a209c34" + integrity sha512-sePmD/imfKvC4re/Wwos1NEcXYm6O96CAG5gQVY53nmDb8ePQ4qPku6uruN7n6TJ0t5FhcoUc2+yvE2/UZVDZw== "@types/node@^18.0.0", "@types/node@^18.17.5": - version "18.18.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.12.tgz#0c40e52e5ff2569386b160f6f6bb019ff1361cb4" - integrity sha512-G7slVfkwOm7g8VqcEF1/5SXiMjP3Tbt+pXDU3r/qhlM2KkGm786DUD4xyMA2QzEElFrv/KZV9gjygv4LnkpbMQ== + version "18.18.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.14.tgz#26771c647f2842af57eb96191cd615d845164295" + integrity sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ== dependencies: undici-types "~5.26.4" @@ -10429,9 +10545,9 @@ "@types/react" "*" "@types/react@*", "@types/react@>=16": - version "18.2.38" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.38.tgz#3605ca41d3daff2c434e0b98d79a2469d4c2dd52" - integrity sha512-cBBXHzuPtQK6wNthuVMV6IjHAFkdl/FOPFIlkd81/Cd1+IqkHu/A+w4g43kaQQoYHik/ruaQBDL72HyCy1vuMw== + version "18.2.39" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.39.tgz#744bee99e053ad61fe74eb8b897f3ab5b19a7e25" + integrity sha512-Oiw+ppED6IremMInLV4HXGbfbG6GyziY3kqAwJYOR0PNbkYDmLWQA3a95EhdSmamsvbkJN96ZNN+YD+fGjzSBA== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -10647,13 +10763,13 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@6.12.0": - version "6.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.12.0.tgz#5833a16dbe19cfbad639d4d33bcca5e755c7044b" - integrity sha512-5gUvjg+XdSj8pcetdL9eXJzQNTl3RD7LgUiYTl8Aabdi8hFkaGSYnaS6BLc0BGNaDH+tVzVwmKtWvu0jLgWVbw== +"@typescript-eslint/scope-manager@6.13.1": + version "6.13.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.13.1.tgz#58c7c37c6a957d3d9f59bc4f64c2888e0cac1d70" + integrity sha512-BW0kJ7ceiKi56GbT2KKzZzN+nDxzQK2DS6x0PiSMPjciPgd/JRQGMibyaN2cPt2cAvuoH0oNvn2fwonHI+4QUQ== dependencies: - "@typescript-eslint/types" "6.12.0" - "@typescript-eslint/visitor-keys" "6.12.0" + "@typescript-eslint/types" "6.13.1" + "@typescript-eslint/visitor-keys" "6.13.1" "@typescript-eslint/type-utils@5.62.0", "@typescript-eslint/type-utils@^5.60.1": version "5.62.0" @@ -10666,12 +10782,12 @@ tsutils "^3.21.0" "@typescript-eslint/type-utils@^6.9.1": - version "6.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.12.0.tgz#968f7c95162808d69950ab5dff710ad730e58287" - integrity sha512-WWmRXxhm1X8Wlquj+MhsAG4dU/Blvf1xDgGaYCzfvStP2NwPQh6KBvCDbiOEvaE0filhranjIlK/2fSTVwtBng== + version "6.13.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.13.1.tgz#e6e5885e387841cae9c38fc0638fd8b7561973d6" + integrity sha512-A2qPlgpxx2v//3meMqQyB1qqTg1h1dJvzca7TugM3Yc2USDY+fsRBiojAEo92HO7f5hW5mjAUF6qobOPzlBCBQ== dependencies: - "@typescript-eslint/typescript-estree" "6.12.0" - "@typescript-eslint/utils" "6.12.0" + "@typescript-eslint/typescript-estree" "6.13.1" + "@typescript-eslint/utils" "6.13.1" debug "^4.3.4" ts-api-utils "^1.0.1" @@ -10685,10 +10801,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@6.12.0": - version "6.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.12.0.tgz#ffc5297bcfe77003c8b7b545b51c2505748314ac" - integrity sha512-MA16p/+WxM5JG/F3RTpRIcuOghWO30//VEOvzubM8zuOOBYXsP+IfjoCXXiIfy2Ta8FRh9+IO9QLlaFQUU+10Q== +"@typescript-eslint/types@6.13.1": + version "6.13.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.13.1.tgz#b56f26130e7eb8fa1e429c75fb969cae6ad7bb5c" + integrity sha512-gjeEskSmiEKKFIbnhDXUyiqVma1gRCQNbVZ1C8q7Zjcxh3WZMbzWVfGE9rHfWd1msQtPS0BVD9Jz9jded44eKg== "@typescript-eslint/typescript-estree@5.62.0", "@typescript-eslint/typescript-estree@^5.55.0", "@typescript-eslint/typescript-estree@^5.59.5": version "5.62.0" @@ -10703,13 +10819,13 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@6.12.0": - version "6.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.12.0.tgz#764ccc32598549e5b48ec99e3b85f89b1385310c" - integrity sha512-vw9E2P9+3UUWzhgjyyVczLWxZ3GuQNT7QpnIY3o5OMeLO/c8oHljGc8ZpryBMIyympiAAaKgw9e5Hl9dCWFOYw== +"@typescript-eslint/typescript-estree@6.13.1": + version "6.13.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.1.tgz#d01dda78d2487434d1c503853fa00291c566efa4" + integrity sha512-sBLQsvOC0Q7LGcUHO5qpG1HxRgePbT6wwqOiGLpR8uOJvPJbfs0mW3jPA3ujsDvfiVwVlWUDESNXv44KtINkUQ== dependencies: - "@typescript-eslint/types" "6.12.0" - "@typescript-eslint/visitor-keys" "6.12.0" + "@typescript-eslint/types" "6.13.1" + "@typescript-eslint/visitor-keys" "6.13.1" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -10743,17 +10859,17 @@ eslint-scope "^5.1.1" semver "^7.3.7" -"@typescript-eslint/utils@6.12.0", "@typescript-eslint/utils@^6.0.0", "@typescript-eslint/utils@^6.9.1": - version "6.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.12.0.tgz#c6ce8c06fe9b0212620e5674a2036f6f8f611754" - integrity sha512-LywPm8h3tGEbgfyjYnu3dauZ0U7R60m+miXgKcZS8c7QALO9uWJdvNoP+duKTk2XMWc7/Q3d/QiCuLN9X6SWyQ== +"@typescript-eslint/utils@6.13.1", "@typescript-eslint/utils@^6.0.0", "@typescript-eslint/utils@^6.9.1": + version "6.13.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.13.1.tgz#925b3a2453a71ada914ae329b7bb7e7d96634b2f" + integrity sha512-ouPn/zVoan92JgAegesTXDB/oUp6BP1v8WpfYcqh649ejNc9Qv+B4FF2Ff626kO1xg0wWwwG48lAJ4JuesgdOw== dependencies: "@eslint-community/eslint-utils" "^4.4.0" "@types/json-schema" "^7.0.12" "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.12.0" - "@typescript-eslint/types" "6.12.0" - "@typescript-eslint/typescript-estree" "6.12.0" + "@typescript-eslint/scope-manager" "6.13.1" + "@typescript-eslint/types" "6.13.1" + "@typescript-eslint/typescript-estree" "6.13.1" semver "^7.5.4" "@typescript-eslint/visitor-keys@4.33.0": @@ -10772,12 +10888,12 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@6.12.0": - version "6.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.12.0.tgz#5877950de42a0f3344261b7a1eee15417306d7e9" - integrity sha512-rg3BizTZHF1k3ipn8gfrzDXXSFKyOEB5zxYXInQ6z0hUvmQlhaZQzK+YmHmNViMA9HzW5Q9+bPPt90bU6GQwyw== +"@typescript-eslint/visitor-keys@6.13.1": + version "6.13.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.1.tgz#c4b692dcc23a4fc60685b718f10fde789d65a540" + integrity sha512-NDhQUy2tg6XGNBGDRm1XybOHSia8mcXmlbKWoQP+nm1BIIMxa55shyJfZkHpEBN62KNPLrocSM2PdPcaLgDKMQ== dependencies: - "@typescript-eslint/types" "6.12.0" + "@typescript-eslint/types" "6.13.1" eslint-visitor-keys "^3.4.1" "@ungap/structured-clone@^1.2.0": @@ -11770,7 +11886,14 @@ "@whatwg-node/fetch" "^0.8.3" tslib "^2.3.1" -"@wry/context@^0.7.0", "@wry/context@^0.7.3": +"@wry/caches@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@wry/caches/-/caches-1.0.1.tgz#8641fd3b6e09230b86ce8b93558d44cf1ece7e52" + integrity sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA== + dependencies: + tslib "^2.3.0" + +"@wry/context@^0.7.0": version "0.7.4" resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.7.4.tgz#e32d750fa075955c4ab2cfb8c48095e1d42d5990" integrity sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ== @@ -11791,6 +11914,13 @@ dependencies: tslib "^2.3.0" +"@wry/trie@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.5.0.tgz#11e783f3a53f6e4cd1d42d2d1323f5bc3fa99c94" + integrity sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA== + dependencies: + tslib "^2.3.0" + "@xhmikosr/archive-type@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/@xhmikosr/archive-type/-/archive-type-6.0.1.tgz#684e9e5369bfa93223d7aeb2c84fe0780d6d5e24" @@ -12629,13 +12759,6 @@ ast-types-flow@^0.0.8: resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== -ast-types@0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.15.2.tgz#39ae4809393c4b16df751ee563411423e85fb49d" - integrity sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg== - dependencies: - tslib "^2.0.1" - ast-types@^0.14.2: version "0.14.2" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" @@ -13921,9 +14044,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541: - version "1.0.30001564" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001564.tgz#eaa8bbc58c0cbccdcb7b41186df39dd2ba591889" - integrity sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg== + version "1.0.30001565" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001565.tgz#a528b253c8a2d95d2b415e11d8b9942acc100c4f" + integrity sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w== canvas-renderer@~2.2.0: version "2.2.1" @@ -14325,9 +14448,9 @@ cli-spinners@2.6.1: integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== cli-spinners@^2.2.0, cli-spinners@^2.5.0, cli-spinners@^2.6.1: - version "2.9.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.1.tgz#9c0b9dad69a6d47cbb4333c14319b060ed395a35" - integrity sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ== + version "2.9.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== cli-table3@^0.6.1, cli-table3@~0.6.1: version "0.6.3" @@ -14999,9 +15122,9 @@ cosmiconfig@^8.1.3, cosmiconfig@^8.2.0: path-type "^4.0.0" country-flag-icons@^1.5.5: - version "1.5.7" - resolved "https://registry.yarnpkg.com/country-flag-icons/-/country-flag-icons-1.5.7.tgz#f1f2ddf14f3cbf01cba6746374aeba94db35d4b4" - integrity sha512-AdvXhMcmSp7nBSkpGfW4qR/luAdRUutJqya9PuwRbsBzuoknThfultbv7Ib6fWsHXC43Es/4QJ8gzQQdBNm75A== + version "1.5.9" + resolved "https://registry.yarnpkg.com/country-flag-icons/-/country-flag-icons-1.5.9.tgz#5ee10d9c8c1dcfb031724121b2adecdf166996cd" + integrity sha512-9jrjv2w7kRbqNtdtMdK2j3gmDIZzd5l9L2pZiQjF9J0mUcB+NKIGDNADTDHBEp8EQtjOkCOcciJGGSOpERdXPQ== cp-file@^10.0.0: version "10.0.0" @@ -16520,9 +16643,9 @@ ejs@^3.1.6, ejs@^3.1.7, ejs@^3.1.8: jake "^10.8.5" electron-to-chromium@^1.4.535: - version "1.4.590" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.590.tgz#85a428fbabb77265a4804040837ed4f2538e3300" - integrity sha512-hohItzsQcG7/FBsviCYMtQwUSWvVF7NVqPOnJCErWsAshsP/CR2LAXdmq276RbESNdhxiAq5/vRo1g2pxGXVww== + version "1.4.597" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.597.tgz#9848b9aa52749bf35be88013bab52be232889d94" + integrity sha512-0XOQNqHhg2YgRVRUrS4M4vWjFCFIP2ETXcXe/0KIQBjXE9Cpy+tgzzYfuq6HGai3hWq0YywtG+5XK8fyG08EjA== elegant-spinner@^1.0.1: version "1.0.1" @@ -18748,9 +18871,9 @@ fragment-cache@^0.2.1: map-cache "^0.2.2" framer-motion@^10.12.11: - version "10.16.5" - resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-10.16.5.tgz#f1ad625adf213a8906f1ea52a31a4ef222f056d5" - integrity sha512-GEzVjOYP2MIpV9bT/GbhcsBNoImG3/2X3O/xVNWmktkv9MdJ7P/44zELm/7Fjb+O3v39SmKFnoDQB32giThzpg== + version "10.16.7" + resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-10.16.7.tgz#79f7d47e896d39b63312e0edfa865dac3b6f0b04" + integrity sha512-iJrX0RXxbRI3qSvDjMIp0hj+Rq6eAx+GotpX8fnZhI88Texkhlj5QHifY4BdokCh4C0oYKPsyf0wL+kwM6/taw== dependencies: tslib "^2.4.0" optionalDependencies: @@ -18781,7 +18904,7 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@11.1.1, fs-extra@^11.0.0, fs-extra@^11.1.0, fs-extra@^11.1.1: +fs-extra@11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== @@ -18799,6 +18922,15 @@ fs-extra@^10.0.0: jsonfile "^6.0.1" universalify "^2.0.0" +fs-extra@^11.0.0, fs-extra@^11.1.0, fs-extra@^11.1.1: + version "11.2.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" @@ -21748,20 +21880,21 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== -jscodeshift@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.14.0.tgz#7542e6715d6d2e8bde0b4e883f0ccea358b46881" - integrity sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA== - dependencies: - "@babel/core" "^7.13.16" - "@babel/parser" "^7.13.16" - "@babel/plugin-proposal-class-properties" "^7.13.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" - "@babel/plugin-proposal-optional-chaining" "^7.13.12" - "@babel/plugin-transform-modules-commonjs" "^7.13.8" - "@babel/preset-flow" "^7.13.13" - "@babel/preset-typescript" "^7.13.0" - "@babel/register" "^7.13.16" +jscodeshift@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.15.1.tgz#6c7a9572acdfa4f54098e958f71a05716a4e546b" + integrity sha512-hIJfxUy8Rt4HkJn/zZPU9ChKfKZM1342waJ1QC2e2YsPcWhM+3BJ4dcfQCzArTrk1jJeNLB341H+qOcEHRxJZg== + dependencies: + "@babel/core" "^7.23.0" + "@babel/parser" "^7.23.0" + "@babel/plugin-transform-class-properties" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.23.0" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" + "@babel/plugin-transform-optional-chaining" "^7.23.0" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/preset-flow" "^7.22.15" + "@babel/preset-typescript" "^7.23.0" + "@babel/register" "^7.22.15" babel-core "^7.0.0-bridge.0" chalk "^4.1.2" flow-parser "0.*" @@ -21769,7 +21902,7 @@ jscodeshift@^0.14.0: micromatch "^4.0.4" neo-async "^2.5.0" node-dir "^0.1.17" - recast "^0.21.0" + recast "^0.23.3" temp "^0.8.4" write-file-atomic "^2.3.0" @@ -22813,9 +22946,9 @@ lowercase-keys@^3.0.0: integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== lru-cache@^10.0.0, lru-cache@^10.0.1, lru-cache@^10.0.2, "lru-cache@^9.1.1 || ^10.0.0": - version "10.0.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.3.tgz#b40014d7d2d16d94130b87297a04a1f24874ae7c" - integrity sha512-B7gr+F6MkqB3uzINHXNctGieGsRTMwIBgxkp0yq/5BwcuDzD4A8wQpHQW6vDAm1uKSLQghmRdD9sKqf2vJ1cEg== + version "10.1.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.1.0.tgz#2098d41c2dc56500e6c88584aa656c84de7d0484" + integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag== lru-cache@^5.1.1: version "5.1.1" @@ -24038,10 +24171,10 @@ nan@^2.16.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.18.0.tgz#26a6faae7ffbeb293a39660e88a76b82e30b7554" integrity sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w== -nano-css@^5.3.1: - version "5.6.0" - resolved "https://registry.yarnpkg.com/nano-css/-/nano-css-5.6.0.tgz#b370802b0bb96e57be450734aa7ca5fa9be047f6" - integrity sha512-jNikscxQv93wwhmXN4w6XC1HVllqo3UvK2u7PRqjOfMJaD5gGkGvECgLxtILndQrWMUr4Mn8I4VurUyxMOipFw== +nano-css@^5.6.1: + version "5.6.1" + resolved "https://registry.yarnpkg.com/nano-css/-/nano-css-5.6.1.tgz#964120cb1af6cccaa6d0717a473ccd876b34c197" + integrity sha512-T2Mhc//CepkTa3X4pUhKgbEheJHYAxD0VptuqFhDbGMUWVV2m+lkNiW/Ieuj35wrfC8Zm0l7HvssQh7zcEttSw== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" css-tree "^1.1.2" @@ -24306,9 +24439,9 @@ neverthrow@^6.0.0: integrity sha512-xNbNjp/6M5vUV+mststgneJN9eJeJCDSYSBTaf3vxgvcKooP+8L0ATFpM8DGfmH7UWKJeoa24Qi33tBP9Ya3zA== next-query-params@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/next-query-params/-/next-query-params-4.3.0.tgz#62cf9297005a66ebc5b0823c3c66d77971ec87b5" - integrity sha512-8w8AXfPJ8vnYvSFBCByT5ZR8ItNSJ6lAbVer8aRZZRUpADZAR6hQ4dh7fLDs/6383DU0Ve7WvNHqswMR8S98zg== + version "4.3.1" + resolved "https://registry.yarnpkg.com/next-query-params/-/next-query-params-4.3.1.tgz#1b015379c59b484029e0cfe55a5c1cdb16e1586b" + integrity sha512-gcmWfHGlidvStLQZ6AWzaUB6/wEAX11Uu8ig7iWRoIH9vjFW2ZYT8runHLGLN3inGy+m+/axNHQah0jeNeMI+Q== dependencies: tslib "^2.0.3" @@ -24365,9 +24498,9 @@ no-case@^3.0.4: tslib "^2.0.3" nock@^13.3.8: - version "13.3.8" - resolved "https://registry.yarnpkg.com/nock/-/nock-13.3.8.tgz#7adf3c66f678b02ef0a78d5697ae8bc2ebde0142" - integrity sha512-96yVFal0c/W1lG7mmfRe7eO+hovrhJYd2obzzOZ90f6fjpeU/XNvd9cYHZKZAQJumDfhXgoTpkpJ9pvMj+hqHw== + version "13.4.0" + resolved "https://registry.yarnpkg.com/nock/-/nock-13.4.0.tgz#60aa3f7a4afa9c12052e74d8fb7550f682ef0115" + integrity sha512-W8NVHjO/LCTNA64yxAPHV/K47LpGYcVzgKd3Q0n6owhwvD0Dgoterc25R4rnZbckJEb6Loxz1f5QMuJpJnbSyQ== dependencies: debug "^4.1.0" json-stringify-safe "^5.0.1" @@ -25045,11 +25178,12 @@ opentracing@^0.14.4: resolved "https://registry.yarnpkg.com/opentracing/-/opentracing-0.14.7.tgz#25d472bd0296dc0b64d7b94cbc995219031428f5" integrity sha512-vz9iS7MJ5+Bp1URw8Khvdyw1H/hGvzHWlKQ7eRrQojSCDL1/SrWfrY9QebLw97n2deyRtzHRC3MkQfVNUCo91Q== -optimism@^0.17.5: - version "0.17.5" - resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.17.5.tgz#a4c78b3ad12c58623abedbebb4f2f2c19b8e8816" - integrity sha512-TEcp8ZwK1RczmvMnvktxHSF2tKgMWjJ71xEFGX5ApLh67VsMSTy1ZUlipJw8W+KaqgOmQ+4pqwkeivY89j+4Vw== +optimism@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.18.0.tgz#e7bb38b24715f3fdad8a9a7fc18e999144bbfa63" + integrity sha512-tGn8+REwLRNFnb9WmcY5IfpOqeX2kpaYJ1s6Ae3mn12AeydLkR3j+jSCmVQFoXqU8D41PAJ1RG1rCRNWmNZVmQ== dependencies: + "@wry/caches" "^1.0.0" "@wry/context" "^0.7.0" "@wry/trie" "^0.4.3" tslib "^2.3.0" @@ -27526,19 +27660,19 @@ react-resize-detector@^7.1.2: lodash "^4.17.21" react-router-dom@^6.16.0: - version "6.19.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.19.0.tgz#ee807e36ae7dd954db7a3f770e38b7cc026c66a8" - integrity sha512-N6dWlcgL2w0U5HZUUqU2wlmOrSb3ighJmtQ438SWbhB1yuLTXQ8yyTBMK3BSvVjp7gBtKurT554nCtMOgxCZmQ== + version "6.20.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.20.0.tgz#7b9527a1e29c7fb90736a5f89d54ca01f40e264b" + integrity sha512-CbcKjEyiSVpA6UtCHOIYLUYn/UJfwzp55va4yEfpk7JBN3GPqWfHrdLkAvNCcpXr8QoihcDMuk0dzWZxtlB/mQ== dependencies: - "@remix-run/router" "1.12.0" - react-router "6.19.0" + "@remix-run/router" "1.13.0" + react-router "6.20.0" -react-router@6.19.0, react-router@^6.16.0: - version "6.19.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.19.0.tgz#6d5062fa33495859daca98d86292ab03b037a9ca" - integrity sha512-0W63PKCZ7+OuQd7Tm+RbkI8kCLmn4GPjDbX61tWljPxWgqTKlEpeQUwPkT1DRjYhF8KSihK0hQpmhU4uxVMcdw== +react-router@6.20.0, react-router@^6.16.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.20.0.tgz#4275a3567ecc55f7703073158048db10096bb539" + integrity sha512-pVvzsSsgUxxtuNfTHC4IxjATs10UaAtvLGVSA1tbUE4GDaOSU1Esu2xF5nWLz7KPiMuW8BJWuPFdlGYJ7/rW0w== dependencies: - "@remix-run/router" "1.12.0" + "@remix-run/router" "1.13.0" react-smooth@^2.0.5: version "2.0.5" @@ -27573,9 +27707,9 @@ react-universal-interface@^0.6.2: integrity sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw== react-use@^17.3.1: - version "17.4.0" - resolved "https://registry.yarnpkg.com/react-use/-/react-use-17.4.0.tgz#cefef258b0a6c534a5c8021c2528ac6e1a4cdc6d" - integrity sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q== + version "17.4.1" + resolved "https://registry.yarnpkg.com/react-use/-/react-use-17.4.1.tgz#e486f14892c96fe2c3764270dfb2df922a69c5aa" + integrity sha512-f3EdGM5ea+2EEIkfgggE+Jhza7uEek8aEMTpd1TQnyqGAD4wew3CMVshiXEP6kstjBE4XUGoKVxttqio76ijNw== dependencies: "@types/js-cookie" "^2.2.6" "@xobotyi/scrollbar-width" "^1.9.5" @@ -27583,7 +27717,7 @@ react-use@^17.3.1: fast-deep-equal "^3.1.3" fast-shallow-equal "^1.0.0" js-cookie "^2.2.1" - nano-css "^5.3.1" + nano-css "^5.6.1" react-universal-interface "^0.6.2" resize-observer-polyfill "^1.5.1" screenfull "^5.1.0" @@ -27729,17 +27863,7 @@ real-require@^0.2.0: resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg== -recast@^0.21.0: - version "0.21.5" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.21.5.tgz#e8cd22bb51bcd6130e54f87955d33a2b2e57b495" - integrity sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg== - dependencies: - ast-types "0.15.2" - esprima "~4.0.0" - source-map "~0.6.1" - tslib "^2.0.1" - -recast@^0.23.1: +recast@^0.23.1, recast@^0.23.3: version "0.23.4" resolved "https://registry.yarnpkg.com/recast/-/recast-0.23.4.tgz#ca1bac7bfd3011ea5a28dfecb5df678559fb1ddf" integrity sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw== @@ -27758,9 +27882,9 @@ recharts-scale@^0.4.4: decimal.js-light "^2.4.1" recharts@^2.6.2: - version "2.10.1" - resolved "https://registry.yarnpkg.com/recharts/-/recharts-2.10.1.tgz#c28c7451ed83d31072013446104ec07b3062893c" - integrity sha512-9bi0jIzxOTfEda+oYqgimKuYfApmBr0zKnAX8r4Iw56k3Saz/IQyBD4zohZL0eyzfz0oGFRH7alpJBgH1eC57g== + version "2.10.2" + resolved "https://registry.yarnpkg.com/recharts/-/recharts-2.10.2.tgz#919e9ccba463c7face91438c807340f300435e55" + integrity sha512-goasBqGqpH8SLty+a24xG1KkZWowo793mgoNVrOkBRXZCG2xX+BUbCgaWrB/G+DGIpN2AX/arCttLuHdg/A6LQ== dependencies: clsx "^2.0.0" eventemitter3 "^4.0.1" @@ -28410,9 +28534,9 @@ rollup@^3.20.7, rollup@^3.21.8: fsevents "~2.3.2" rpc-websockets@^7.5.1: - version "7.7.0" - resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.7.0.tgz#3f2eb1ce91a0a4a63200f3f78957d3f8ced17714" - integrity sha512-XYMzjxbDI0A9A2wwrx5/RswnZC53Av3bp5IOV9QnUdTuJ7Tstv4+V7vIe37pYYOn2wKYkbzkaeB8+I9oLztLOA== + version "7.8.0" + resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.8.0.tgz#1bcf571f65c51803e81f0824e9540a0da35a5287" + integrity sha512-AStkq6KDvSAmA4WiwlK1pDvj/33BWmExTATUokC0v+NhWekXSTNzXS5OGXeYwq501/pj6lBZMofg/h4dx4/tCg== dependencies: "@babel/runtime" "^7.17.2" eventemitter3 "^4.0.7" @@ -29480,11 +29604,11 @@ storybook-addon-react-router-v6@^2.0.4: react-inspector "6.0.2" storybook@^7.2.3: - version "7.5.3" - resolved "https://registry.yarnpkg.com/storybook/-/storybook-7.5.3.tgz#0003b072736b8b15c3b7205e9775d0c5ec898b4d" - integrity sha512-lkn9hcedNmSNCzbDIrky2LpZJqlpS7Fy1KpGBZmLY34g5Mb0+KnXaUqzY0dxsd7aFm8Oa7Du/emceMYNNL4DMA== + version "7.6.1" + resolved "https://registry.yarnpkg.com/storybook/-/storybook-7.6.1.tgz#ecbc09b66532d1bdfaa22dc34b7bc928d3183578" + integrity sha512-JarHWZ7PLnGFPvapcSTdmneckGi1nCez18JozXsFXunDLZWUEn8kui0FLUhc579glZ8yDaSr9zsxWG8ZIFUm+A== dependencies: - "@storybook/cli" "7.5.3" + "@storybook/cli" "7.6.1" stream-browserify@^3.0.0: version "3.0.0" @@ -30480,9 +30604,9 @@ to-regex@^3.0.1, to-regex@^3.0.2: safe-regex "^1.1.0" tocbot@^4.20.1: - version "4.22.0" - resolved "https://registry.yarnpkg.com/tocbot/-/tocbot-4.22.0.tgz#10bb34c011c1baa93d2a0e91d25d820856ba4103" - integrity sha512-YHCs00HCNiHxUhksloa36fTfMEXEWV+vdPn3ARQfmj2u3PcUYIjJkfc+ABUfCF9Eb+LSy/QzuLl256fbsRnpHQ== + version "4.23.0" + resolved "https://registry.yarnpkg.com/tocbot/-/tocbot-4.23.0.tgz#5d3788ccf5a8b0ae2c00819b1ed0c127013e2e34" + integrity sha512-5DWuSZXsqG894mkGb8ZsQt9myyQyVxE50AiGRZ0obV0BVUTVkaZmc9jbgpknaAAPUm4FIrzGkEseD6FuQJYJDQ== toggle-selection@^1.0.6: version "1.0.6" @@ -30992,21 +31116,21 @@ undici-types@~5.26.4: integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== undici@^5.25.4: - version "5.27.2" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.27.2.tgz#a270c563aea5b46cc0df2550523638c95c5d4411" - integrity sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ== + version "5.28.1" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.1.tgz#1052d37bd1a2e8cf3e188d7caebff833fdc06fa7" + integrity sha512-xcIIvj1LOQH9zAL54iWFkuDEaIVEjLrru7qRpa3GrEEHk6OBhb/LycuUY2m7VCcTuDeLziXCxobQVyKExyGeIA== dependencies: "@fastify/busboy" "^2.0.0" unenv@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/unenv/-/unenv-1.7.4.tgz#a0e5a78de2c7c3c4563c06ba9763c96c59db3333" - integrity sha512-fjYsXYi30It0YCQYqLOcT6fHfMXsBr2hw9XC7ycf8rTG7Xxpe3ZssiqUnD0khrjiZEmkBXWLwm42yCSCH46fMw== + version "1.8.0" + resolved "https://registry.yarnpkg.com/unenv/-/unenv-1.8.0.tgz#0f860d5278405700bd95d47b23bc01f3a735d68c" + integrity sha512-uIGbdCWZfhRRmyKj1UioCepQ0jpq638j/Cf0xFTn4zD1nGJ2lSdzYHLzfdXN791oo/0juUiSWW1fBklXMTsuqg== dependencies: consola "^3.2.3" - defu "^6.1.2" + defu "^6.1.3" mime "^3.0.0" - node-fetch-native "^1.4.0" + node-fetch-native "^1.4.1" pathe "^1.1.1" unicode-canonical-property-names-ecmascript@^2.0.0: @@ -31604,9 +31728,9 @@ vfile@^5.0.0: vfile-message "^3.0.0" victory-vendor@^36.6.8: - version "36.6.12" - resolved "https://registry.yarnpkg.com/victory-vendor/-/victory-vendor-36.6.12.tgz#17fa4d79d266a6e2bde0291c60c5002c55008164" - integrity sha512-pJrTkNHln+D83vDCCSUf0ZfxBvIaVrFHmrBOsnnLAbdqfudRACAj51He2zU94/IWq9464oTADcPVkmWAfNMwgA== + version "36.7.0" + resolved "https://registry.yarnpkg.com/victory-vendor/-/victory-vendor-36.7.0.tgz#e02af33e249e74e659fa65c6d5936042c42e7aa8" + integrity sha512-nqYuTkLSdTTeACyXcCLbL7rl0y6jpzLPtTNGOtSnajdR+xxMxBdjMxDjfNJNlhR+ZU8vbXz+QejntcbY7h9/ZA== dependencies: "@types/d3-array" "^3.0.3" "@types/d3-ease" "^3.0.0" @@ -31624,9 +31748,9 @@ victory-vendor@^36.6.8: d3-timer "^3.0.1" viem@^1.0.0, viem@^1.18.3: - version "1.19.6" - resolved "https://registry.yarnpkg.com/viem/-/viem-1.19.6.tgz#daf1ebf4774a5bb9e87822ab25fcc67420471847" - integrity sha512-WSBHBMurWIWQk2yisOD8hqSA5S56cZu6onty3hzauVjiHMildtVWujF7YT0xjoU40GpFODvJASRR2RFdzgvUUg== + version "1.19.9" + resolved "https://registry.yarnpkg.com/viem/-/viem-1.19.9.tgz#a11f3ad4a3323994ebd2010dbc659d1a2b12e583" + integrity sha512-Sf9U2x4jU0S/FALqYypcspWOGene0NZyD470oUripNhE0Ta6uOE/OgE4toTDVfRxov8qw0JFinr/wPGxYE3+HQ== dependencies: "@adraffy/ens-normalize" "1.10.0" "@noble/curves" "1.2.0" @@ -32740,9 +32864,9 @@ zip-stream@^5.0.1: readable-stream "^3.6.0" zod-to-json-schema@^3.20.5: - version "3.22.0" - resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.22.0.tgz#b3d8553d64032300742b7a0b37ae416345bacef5" - integrity sha512-XQr8EwxPMzJGhoR+d/nRFWdi15VaZ+R5Uhssm+Xx5yS30xCpuutfKRm4rerE0SK9j2dWB5Z3FvDD0w8WMVGzkA== + version "3.22.1" + resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.22.1.tgz#30bec8fb92eabbc1f8caf978a0eabfa447b261b7" + integrity sha512-bVSWQ2JF3ZglQefafkM+Kk9KQ2fqqSi4VhxWaup1NJX9FS5jDg0EkEioVCWui0PiIQvcXJUjmN71bg672+a+tA== zod@3.21.4: version "3.21.4" @@ -32755,9 +32879,9 @@ zod@^3.21.4, zod@^3.22.4: integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg== zustand@^4.3.1: - version "4.4.6" - resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.4.6.tgz#03c78e3e2686c47095c93714c0c600b72a6512bd" - integrity sha512-Rb16eW55gqL4W2XZpJh0fnrATxYEG3Apl2gfHTyDSE965x/zxslTikpNch0JgNjJA9zK6gEFW8Fl6d1rTZaqgg== + version "4.4.7" + resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.4.7.tgz#355406be6b11ab335f59a66d2cf9815e8f24038c" + integrity sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw== dependencies: use-sync-external-store "1.2.0"