fix: Migrate easy stuff to react-hookz/web

This commit is contained in:
Myzel394 2023-05-06 22:40:52 +02:00
parent 0395bce5dd
commit ed73897519
No known key found for this signature in database
GPG Key ID: 79CC92F37B3E1A2B
23 changed files with 160 additions and 101 deletions

View File

@ -22,6 +22,7 @@
"@mui/material": "^5.10.9", "@mui/material": "^5.10.9",
"@mui/x-date-pickers": "^6.0.1", "@mui/x-date-pickers": "^6.0.1",
"@originjs/vite-plugin-commonjs": "^1.0.3", "@originjs/vite-plugin-commonjs": "^1.0.3",
"@react-hookz/web": "^23.0.0",
"@tanstack/react-query": "^4.12.0", "@tanstack/react-query": "^4.12.0",
"axios": "^1.1.2", "axios": "^1.1.2",
"axios-case-converter": "^0.11.1", "axios-case-converter": "^0.11.1",

View File

@ -1,5 +1,4 @@
import {ReactElement, useMemo} from "react" import {ReactElement, useMemo} from "react"
import {useAsyncFn} from "react-use"
import AppLoadingScreenContext, {AppLoadingScreenContextType} from "./AppLoadingScreenContext" import AppLoadingScreenContext, {AppLoadingScreenContextType} from "./AppLoadingScreenContext"

View File

@ -1,7 +1,8 @@
import {ReactElement, ReactNode, useCallback} from "react" import {ReactElement, ReactNode, useCallback} from "react"
import {useLocalStorage} from "react-use"
import fastHashCode from "fast-hash-code" import fastHashCode from "fast-hash-code"
import {useLocalStorageValue} from "@react-hookz/web"
import {ServerUser, User} from "~/server-types" import {ServerUser, User} from "~/server-types"
import AuthContext from "./AuthContext" import AuthContext from "./AuthContext"
@ -16,10 +17,13 @@ export interface AuthContextProviderProps {
} }
export default function AuthContextProvider({children}: AuthContextProviderProps): ReactElement { export default function AuthContextProvider({children}: AuthContextProviderProps): ReactElement {
const [user, setUser] = useLocalStorage<ServerUser | User | null>( const {
"_global-context-auth-user", value: user,
null, set: setUser,
) remove: removeUser,
} = useLocalStorageValue<ServerUser | User | null>("_global-context-auth-user", {
defaultValue: null,
})
const { const {
encryptUsingMasterPassword, encryptUsingMasterPassword,
decryptUsingMasterPassword, decryptUsingMasterPassword,
@ -37,8 +41,8 @@ export default function AuthContextProvider({children}: AuthContextProviderProps
const logout = useCallback(() => { const logout = useCallback(() => {
localStorage.removeItem("signup-form-state-email") localStorage.removeItem("signup-form-state-email")
logoutMasterPassword() logoutMasterPassword()
setUser(null) removeUser()
}, [logoutMasterPassword]) }, [logoutMasterPassword, removeUser])
const contextValue = useContextValue({ const contextValue = useContextValue({
_decryptUsingPrivateKey: decryptUsingPrivateKey, _decryptUsingPrivateKey: decryptUsingPrivateKey,
@ -55,6 +59,7 @@ export default function AuthContextProvider({children}: AuthContextProviderProps
logout, logout,
decryptUsingMasterPassword, decryptUsingMasterPassword,
user: user || null, user: user || null,
// @ts-ignore: `undefined` should not be passed
updateUser: setUser, updateUser: setUser,
masterPasswordHash: passwordHash, masterPasswordHash: passwordHash,
}) })

View File

@ -1,5 +1,6 @@
import {Dispatch, SetStateAction, useMemo, useRef} from "react" import {Dispatch, SetStateAction, useMemo, useRef} from "react"
import {useUpdateEffect} from "react-use"
import {useUpdateEffect} from "@react-hookz/web"
import {ServerUser, User} from "~/server-types" import {ServerUser, User} from "~/server-types"
import {AuthContextType, EncryptionStatus} from "~/components" import {AuthContextType, EncryptionStatus} from "~/components"

View File

@ -1,6 +1,7 @@
import {useCallback, useRef, useState} from "react" import {useCallback, useRef, useState} from "react"
import {useNavigate} from "react-router-dom" import {useNavigate} from "react-router-dom"
import {useEvent} from "react-use"
import {useEventListener} from "@react-hookz/web"
import {ExtensionKleckEvent} from "~/extension-types" import {ExtensionKleckEvent} from "~/extension-types"
import {User} from "~/server-types" import {User} from "~/server-types"
@ -102,7 +103,9 @@ export default function useExtensionHandler(
[dispatchPasswordStatus], [dispatchPasswordStatus],
) )
useEvent("kleckrelay-kleck", handleExtensionEvent) useEventListener(window, "kleckrelay-kleck", handleExtensionEvent, {
passive: true,
})
return { return {
sharePassword: () => { sharePassword: () => {

View File

@ -1,8 +1,9 @@
import {useLocalStorage} from "react-use"
import {Dispatch, SetStateAction, useCallback} from "react" import {Dispatch, SetStateAction, useCallback} from "react"
import {decrypt, readMessage, readPrivateKey} from "openpgp" import {decrypt, readMessage, readPrivateKey} from "openpgp"
import fastHashCode from "fast-hash-code" import fastHashCode from "fast-hash-code"
import {useLocalStorageValue} from "@react-hookz/web"
import {decryptString, encryptString} from "~/utils" import {decryptString, encryptString} from "~/utils"
import {ServerUser, User} from "~/server-types" import {ServerUser, User} from "~/server-types"
@ -19,10 +20,13 @@ export interface UseMasterPasswordResult {
} }
export default function useMasterPassword(user: User | ServerUser | null): UseMasterPasswordResult { export default function useMasterPassword(user: User | ServerUser | null): UseMasterPasswordResult {
const [encryptionPassword, setEncryptionPassword] = useLocalStorage<string | null>( const {
"_global-context-auth-encryption-password", value: encryptionPassword,
null, remove: removeEncryptionPassword,
) set: setEncryptionPassword,
} = useLocalStorageValue<string | null>("_global-context-auth-encryption-password", {
defaultValue: null,
})
const encryptUsingMasterPassword = useCallback( const encryptUsingMasterPassword = useCallback(
(content: string) => { (content: string) => {
@ -70,9 +74,7 @@ export default function useMasterPassword(user: User | ServerUser | null): UseMa
[user], [user],
) )
const logout = useCallback(() => { const logout = removeEncryptionPassword
setEncryptionPassword(null)
}, [])
return { return {
encryptUsingMasterPassword, encryptUsingMasterPassword,

View File

@ -1,8 +1,9 @@
import {FormikContextType} from "formik" import {FormikContextType} from "formik"
import {useContext} from "react" import {useContext} from "react"
import {useShallowCompareEffect} from "react-use"
import deepEqual from "deep-equal" import deepEqual from "deep-equal"
import {useUpdateEffect} from "@react-hookz/web"
import LockNavigationContext from "./LockNavigationContext" import LockNavigationContext from "./LockNavigationContext"
export interface LockNavigationContextProviderProps { export interface LockNavigationContextProviderProps {
@ -17,7 +18,7 @@ export default function FormikAutoLockNavigation({
}: LockNavigationContextProviderProps): null { }: LockNavigationContextProviderProps): null {
const {lock, release} = useContext(LockNavigationContext) const {lock, release} = useContext(LockNavigationContext)
useShallowCompareEffect(() => { useUpdateEffect(() => {
if (!deepEqual(formik.values, formik.initialValues) && active) { if (!deepEqual(formik.values, formik.initialValues) && active) {
lock() lock()
} else { } else {

View File

@ -1,6 +1,6 @@
import {usePrevious} from "react-use"
import React, {ReactElement, useEffect, useState} from "react" import React, {ReactElement, useEffect, useState} from "react"
import {usePrevious} from "@react-hookz/web"
import {Alert, Snackbar} from "@mui/material" import {Alert, Snackbar} from "@mui/material"
export interface ErrorSnackProps { export interface ErrorSnackProps {

View File

@ -1,6 +1,6 @@
import {usePrevious} from "react-use"
import React, {ReactElement, useEffect, useState} from "react" import React, {ReactElement, useEffect, useState} from "react"
import {usePrevious} from "@react-hookz/web"
import {Alert, Snackbar} from "@mui/material" import {Alert, Snackbar} from "@mui/material"
export interface SuccessSnackProps { export interface SuccessSnackProps {

View File

@ -1,5 +1,6 @@
import {useCallback} from "react" import {useCallback} from "react"
import {useEvent} from "react-use"
import {useEventListener} from "@react-hookz/web"
import {ExtensionKleckEvent, ExtensionKleckMessageLatestAlias} from "~/extension-types" import {ExtensionKleckEvent, ExtensionKleckMessageLatestAlias} from "~/extension-types"
@ -30,5 +31,7 @@ export default function useExtensionHandler({
[onEnterPassword, onRefetchAliases, onLatestAliasChange], [onEnterPassword, onRefetchAliases, onLatestAliasChange],
) )
useEvent("kleckrelay-kleck", handleExtensionEvent) useEventListener(window, "kleckrelay-kleck", handleExtensionEvent, {
passive: true,
})
} }

View File

@ -1,5 +1,6 @@
import {useCallback, useState} from "react" import {useCallback, useState} from "react"
import {useEvent} from "react-use"
import {useEventListener} from "@react-hookz/web"
export default function useIsAnyInputFocused(): boolean { export default function useIsAnyInputFocused(): boolean {
const [isFocused, setIsFocused] = useState<boolean>(false) const [isFocused, setIsFocused] = useState<boolean>(false)
@ -14,8 +15,8 @@ export default function useIsAnyInputFocused(): boolean {
setIsFocused(false) setIsFocused(false)
}, []) }, [])
useEvent("focus", focusHandler, window, {capture: true}) useEventListener(window, "focus", focusHandler, {capture: true})
useEvent("blur", blurHandler, window, {capture: true}) useEventListener(window, "blur", blurHandler, {capture: true})
return isFocused return isFocused
} }

View File

@ -1,5 +1,6 @@
import {Dispatch, SetStateAction, useState} from "react" import {Dispatch, SetStateAction, useState} from "react"
import {useUpdateEffect} from "react-use"
import {useUpdateEffect} from "@react-hookz/web"
export default function useUIState<T>(outerValue: T): [T, Dispatch<SetStateAction<T>>] { export default function useUIState<T>(outerValue: T): [T, Dispatch<SetStateAction<T>>] {
const [value, setValue] = useState<T>(outerValue) const [value, setValue] = useState<T>(outerValue)

View File

@ -1,5 +1,5 @@
import {useCallback, useState} from "react" import {useCallback, useState} from "react"
import {useEvent} from "react-use" import {useEventListener} from "@react-hookz/web"
export default function useWindowVisible(isVisibleByDefault = true): boolean { export default function useWindowVisible(isVisibleByDefault = true): boolean {
const [isVisible, setIsVisible] = useState<boolean>(isVisibleByDefault) const [isVisible, setIsVisible] = useState<boolean>(isVisibleByDefault)
@ -8,7 +8,7 @@ export default function useWindowVisible(isVisibleByDefault = true): boolean {
setIsVisible(document.visibilityState === "visible") setIsVisible(document.visibilityState === "visible")
}, []) }, [])
useEvent("visibilitychange", handleVisibilityChange, document) useEventListener(document, "visibilitychange", handleVisibilityChange)
return isVisible return isVisible
} }

View File

@ -1,9 +1,9 @@
import {useLoaderData} from "react-router-dom" import {useLoaderData} from "react-router-dom"
import {ReactElement, useCallback, useState} from "react" import {ReactElement, useCallback, useState} from "react"
import {useUpdateEffect} from "react-use"
import {BiRefresh} from "react-icons/bi" import {BiRefresh} from "react-icons/bi"
import {useTranslation} from "react-i18next" import {useTranslation} from "react-i18next"
import {useUpdateEffect} from "@react-hookz/web"
import {Alert, FormHelperText, Grid, IconButton, Typography, useTheme} from "@mui/material" import {Alert, FormHelperText, Grid, IconButton, Typography, useTheme} from "@mui/material"
import {ServerSettings} from "~/server-types" import {ServerSettings} from "~/server-types"

View File

@ -6,10 +6,10 @@ import {FaHashtag} from "react-icons/fa"
import {MdChevronRight, MdMail} from "react-icons/md" import {MdChevronRight, MdMail} from "react-icons/md"
import {useLoaderData} from "react-router-dom" import {useLoaderData} from "react-router-dom"
import {useTranslation} from "react-i18next" import {useTranslation} from "react-i18next"
import {useEffectOnce} from "react-use"
import differenceInSeconds from "date-fns/differenceInSeconds" import differenceInSeconds from "date-fns/differenceInSeconds"
import inMilliseconds from "in-milliseconds" import inMilliseconds from "in-milliseconds"
import {useMountEffect} from "@react-hookz/web"
import {useMutation} from "@tanstack/react-query" import {useMutation} from "@tanstack/react-query"
import { import {
Alert, Alert,
@ -142,7 +142,7 @@ export default function ConfirmCodeForm({
} }
}, [requestDate]) }, [requestDate])
useEffectOnce(() => { useMountEffect(() => {
const preCheck = setInterval(checkExpiration, inMilliseconds.seconds(isDev ? 1 : 20)) const preCheck = setInterval(checkExpiration, inMilliseconds.seconds(isDev ? 1 : 20))
const finalCheck = setTimeout(checkExpiration, inMilliseconds.seconds(expirationTime)) const finalCheck = setTimeout(checkExpiration, inMilliseconds.seconds(expirationTime))

View File

@ -1,8 +1,8 @@
import {ReactElement} from "react" import {ReactElement} from "react"
import {AxiosError} from "axios" import {AxiosError} from "axios"
import {useMount} from "react-use"
import {useTranslation} from "react-i18next" import {useTranslation} from "react-i18next"
import {useMountEffect} from "@react-hookz/web"
import {useMutation} from "@tanstack/react-query" import {useMutation} from "@tanstack/react-query"
import {Box, Grid, Paper, Typography} from "@mui/material" import {Box, Grid, Paper, Typography} from "@mui/material"
@ -34,7 +34,7 @@ export default function ConfirmFromDifferentDevice({
}, },
) )
useMount(mutate) useMountEffect(mutate)
if (isLoading) { if (isLoading) {
return ( return (

View File

@ -1,7 +1,8 @@
import {MdCheck} from "react-icons/md" import {MdCheck} from "react-icons/md"
import {useSessionStorage} from "react-use" import {useTranslation} from "react-i18next"
import React, {ReactElement, useCallback, useEffect, useRef, useState} from "react" import React, {ReactElement, useCallback, useEffect, useRef, useState} from "react"
import {useSessionStorageValue} from "@react-hookz/web"
import { import {
Alert, Alert,
Button, Button,
@ -12,7 +13,6 @@ import {
DialogTitle, DialogTitle,
Grid, Grid,
} from "@mui/material" } from "@mui/material"
import {useTranslation} from "react-i18next"
export interface DetectEmailAutofillServiceProps { export interface DetectEmailAutofillServiceProps {
domains: string[] domains: string[]
@ -38,7 +38,12 @@ export default function DetectEmailAutofillService({
const $hasDetected = useRef<boolean>(false) const $hasDetected = useRef<boolean>(false)
const [type, setType] = useState<AliasType | null>(null) const [type, setType] = useState<AliasType | null>(null)
const [hasShownModal, setHasShownModal] = useSessionStorage<boolean>(STORAGE_KEY, false) const {value: hasShownModal, set: setHasShownModal} = useSessionStorageValue<boolean>(
STORAGE_KEY,
{
defaultValue: false,
},
)
const handleFound = useCallback( const handleFound = useCallback(
(type: AliasType) => { (type: AliasType) => {
@ -50,7 +55,7 @@ export default function DetectEmailAutofillService({
} }
} }
}, },
[domains.length, hasShownModal], [domains.length, hasShownModal, setHasShownModal],
) )
useEffect(() => { useEffect(() => {

View File

@ -2,7 +2,8 @@ import {ReactElement, useCallback, useState, useTransition} from "react"
import {AxiosError} from "axios" import {AxiosError} from "axios"
import {MdSearch} from "react-icons/md" import {MdSearch} from "react-icons/md"
import {useTranslation} from "react-i18next" import {useTranslation} from "react-i18next"
import {useCopyToClipboard, useEffectOnce, useKeyPress, useUpdateEffect} from "react-use" import {useMountEffect, useUpdateEffect} from "@react-hookz/web"
import {useCopyToClipboard, useKeyPress} from "react-use"
import {useQuery} from "@tanstack/react-query" import {useQuery} from "@tanstack/react-query"
import {Alert, Chip, Grid, InputAdornment, List, Snackbar, TextField} from "@mui/material" import {Alert, Chip, Grid, InputAdornment, List, Snackbar, TextField} from "@mui/material"
@ -119,7 +120,7 @@ export default function AliasesRoute(): ReactElement {
}, [latestAliasId]) }, [latestAliasId])
// Fetch the latest alias // Fetch the latest alias
useEffectOnce(() => { useMountEffect(() => {
window.dispatchEvent( window.dispatchEvent(
new CustomEvent("kleckrelay-blob", { new CustomEvent("kleckrelay-blob", {
detail: { detail: {

View File

@ -1,6 +1,7 @@
import {ReactElement, useContext, useState} from "react" import {ReactElement, useContext, useState} from "react"
import {useNavigate} from "react-router-dom" import {useNavigate} from "react-router-dom"
import {useUpdateEffect} from "react-use"
import {useUpdateEffect} from "@react-hookz/web"
import {AuthContext, MultiStepForm} from "~/components" import {AuthContext, MultiStepForm} from "~/components"
import {useQueryParams} from "~/hooks" import {useQueryParams} from "~/hooks"

View File

@ -1,7 +1,7 @@
import {ReactElement, useContext} from "react" import {ReactElement, useContext} from "react"
import {useTranslation} from "react-i18next" import {useTranslation} from "react-i18next"
import {useEffectOnce} from "react-use"
import {useMountEffect} from "@react-hookz/web"
import {Box, CircularProgress, Grid, Paper, Typography} from "@mui/material" import {Box, CircularProgress, Grid, Paper, Typography} from "@mui/material"
import {useNavigateToNext} from "~/hooks" import {useNavigateToNext} from "~/hooks"
@ -12,7 +12,7 @@ export default function LogoutRoute(): ReactElement {
const navigateToNext = useNavigateToNext("/auth/login") const navigateToNext = useNavigateToNext("/auth/login")
const {logout} = useContext(AuthContext) const {logout} = useContext(AuthContext)
useEffectOnce(() => { useMountEffect(() => {
logout() logout()
navigateToNext() navigateToNext()
}) })

View File

@ -1,7 +1,8 @@
import {ReactElement} from "react" import {ReactElement} from "react"
import {useLocalStorage} from "react-use"
import {useLoaderData} from "react-router-dom" import {useLoaderData} from "react-router-dom"
import {useLocalStorageValue} from "@react-hookz/web"
import {MultiStepForm} from "~/components" import {MultiStepForm} from "~/components"
import {ServerSettings} from "~/server-types" import {ServerSettings} from "~/server-types"
import EmailForm from "~/route-widgets/SignupRoute/EmailForm" import EmailForm from "~/route-widgets/SignupRoute/EmailForm"
@ -10,7 +11,13 @@ import YouGotMail from "~/route-widgets/SignupRoute/YouGotMail"
export default function SignupRoute(): ReactElement { export default function SignupRoute(): ReactElement {
const serverSettings = useLoaderData() as ServerSettings const serverSettings = useLoaderData() as ServerSettings
const [email, setEmail] = useLocalStorage<string>("signup-form-state-email", "") const {
value: email,
set: setEmail,
remove: removeEmail,
} = useLocalStorageValue<string>("signup-form-state-email", {
defaultValue: "",
})
const index = email ? 1 : 0 const index = email ? 1 : 0
@ -22,7 +29,7 @@ export default function SignupRoute(): ReactElement {
<MultiStepForm <MultiStepForm
steps={[ steps={[
<EmailForm serverSettings={serverSettings} onSignUp={setEmail} key="email" />, <EmailForm serverSettings={serverSettings} onSignUp={setEmail} key="email" />,
<YouGotMail onGoBack={() => setEmail("")} email={email || ""} key="you_got_mail" />, <YouGotMail onGoBack={() => removeEmail} email={email!} key="you_got_mail" />,
]} ]}
index={index} index={index}
/> />

View File

@ -1,6 +1,6 @@
import * as yup from "yup" import * as yup from "yup"
import {useLoaderData, useNavigate} from "react-router-dom" import {useLoaderData, useNavigate} from "react-router-dom"
import {useAsync, useLocalStorage} from "react-use" import {useAsync} from "react-use"
import {MdCancel} from "react-icons/md" import {MdCancel} from "react-icons/md"
import {AxiosError} from "axios" import {AxiosError} from "axios"
import {useTranslation} from "react-i18next" import {useTranslation} from "react-i18next"
@ -22,7 +22,6 @@ export default function VerifyEmailRoute(): ReactElement {
const navigate = useNavigate() const navigate = useNavigate()
const {login} = useContext(AuthContext) const {login} = useContext(AuthContext)
const [_, setEmail] = useLocalStorage<string>("signup-form-state-email", "")
const {email, token} = useQueryParams<{ const {email, token} = useQueryParams<{
email: string email: string
token: string token: string

131
yarn.lock
View File

@ -450,7 +450,14 @@
"@babel/plugin-syntax-jsx" "^7.18.6" "@babel/plugin-syntax-jsx" "^7.18.6"
"@babel/types" "^7.19.0" "@babel/types" "^7.19.0"
"@babel/runtime@^7.1.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.19.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": "@babel/runtime@^7.1.2":
version "7.21.5"
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200"
integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==
dependencies:
regenerator-runtime "^0.13.11"
"@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.19.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7":
version "7.19.4" version "7.19.4"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.4.tgz#a42f814502ee467d55b38dd1c256f53a7b885c78" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.4.tgz#a42f814502ee467d55b38dd1c256f53a7b885c78"
integrity sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA== integrity sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA==
@ -1229,6 +1236,18 @@
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45"
integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==
"@react-hookz/deep-equal@^1.0.4":
version "1.0.4"
resolved "https://registry.npmjs.org/@react-hookz/deep-equal/-/deep-equal-1.0.4.tgz#68a71f36cbc88724b3ce6f4036183778b6e7f282"
integrity sha512-N56fTrAPUDz/R423pag+n6TXWbvlBZDtTehaGFjK0InmN+V2OFWLE/WmORhmn6Ce7dlwH5+tQN1LJFw3ngTJVg==
"@react-hookz/web@^23.0.0":
version "23.0.0"
resolved "https://registry.npmjs.org/@react-hookz/web/-/web-23.0.0.tgz#d0470de7f9ec4f6eaedd2c13b9fb474d8f3a0d09"
integrity sha512-diBtlo17CJtZJ/Yb8veri7hZL7QPnqNZ+IAMHWWSb//nq+Z3XDHaXcozH7cyvMZj4gYwQeY/L/H4298etHxu1Q==
dependencies:
"@react-hookz/deep-equal" "^1.0.4"
"@remix-run/router@1.0.2": "@remix-run/router@1.0.2":
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.0.2.tgz#1c17eadb2fa77f80a796ad5ea9bf108e6993ef06" resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.0.2.tgz#1c17eadb2fa77f80a796ad5ea9bf108e6993ef06"
@ -1466,7 +1485,7 @@
"@types/js-cookie@^2.2.6": "@types/js-cookie@^2.2.6":
version "2.2.7" version "2.2.7"
resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-2.2.7.tgz#226a9e31680835a6188e887f3988e60c04d3f6a3" resolved "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz#226a9e31680835a6188e887f3988e60c04d3f6a3"
integrity sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA== integrity sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==
"@types/jsdom@^20.0.0": "@types/jsdom@^20.0.0":
@ -1712,7 +1731,7 @@
"@xobotyi/scrollbar-width@^1.9.5": "@xobotyi/scrollbar-width@^1.9.5":
version "1.9.5" version "1.9.5"
resolved "https://registry.yarnpkg.com/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz#80224a6919272f405b87913ca13b92929bdf3c4d" resolved "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz#80224a6919272f405b87913ca13b92929bdf3c4d"
integrity sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ== integrity sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==
abab@^2.0.6: abab@^2.0.6:
@ -2188,9 +2207,9 @@ convert-source-map@^2.0.0:
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
copy-to-clipboard@^3.3.1: copy-to-clipboard@^3.3.1:
version "3.3.2" version "3.3.3"
resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.2.tgz#5b263ec2366224b100181dded7ce0579b340c107" resolved "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0"
integrity sha512-Vme1Z6RUDzrb6xAI7EZlVZ5uvOk2F//GaxKUxajDqm9LhOVM1inxNAD2vy+UZDYsd0uyA9s7b3/FVZPSxqrCfg== integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==
dependencies: dependencies:
toggle-selection "^1.0.6" toggle-selection "^1.0.6"
@ -2242,17 +2261,16 @@ crypto-js@^4.1.1:
resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf" resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf"
integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==
css-in-js-utils@^2.0.0: css-in-js-utils@^3.1.0:
version "2.0.1" version "3.1.0"
resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz#3b472b398787291b47cfe3e44fecfdd9e914ba99" resolved "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz#640ae6a33646d401fc720c54fc61c42cd76ae2bb"
integrity sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA== integrity sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==
dependencies: dependencies:
hyphenate-style-name "^1.0.2" hyphenate-style-name "^1.0.3"
isobject "^3.0.1"
css-tree@^1.1.2: css-tree@^1.1.2:
version "1.1.3" version "1.1.3"
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
dependencies: dependencies:
mdn-data "2.0.14" mdn-data "2.0.14"
@ -2275,11 +2293,16 @@ cssstyle@^2.3.0:
dependencies: dependencies:
cssom "~0.3.6" cssom "~0.3.6"
csstype@^3.0.2, csstype@^3.0.6, csstype@^3.1.1: csstype@^3.0.2, csstype@^3.1.1:
version "3.1.1" version "3.1.1"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9"
integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==
csstype@^3.0.6:
version "3.1.2"
resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b"
integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==
data-urls@^3.0.2: data-urls@^3.0.2:
version "3.0.2" version "3.0.2"
resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143"
@ -2443,7 +2466,7 @@ error-ex@^1.3.1:
error-stack-parser@^2.0.6: error-stack-parser@^2.0.6:
version "2.1.4" version "2.1.4"
resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286"
integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==
dependencies: dependencies:
stackframe "^1.3.4" stackframe "^1.3.4"
@ -3032,14 +3055,19 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
fast-loops@^1.1.3:
version "1.1.3"
resolved "https://registry.npmjs.org/fast-loops/-/fast-loops-1.1.3.tgz#ce96adb86d07e7bf9b4822ab9c6fac9964981f75"
integrity sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==
fast-shallow-equal@^1.0.0: fast-shallow-equal@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz#d4dcaf6472440dcefa6f88b98e3251e27f25628b" resolved "https://registry.npmjs.org/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz#d4dcaf6472440dcefa6f88b98e3251e27f25628b"
integrity sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw== integrity sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==
fastest-stable-stringify@^2.0.2: fastest-stable-stringify@^2.0.2:
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz#3757a6774f6ec8de40c4e86ec28ea02417214c76" resolved "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz#3757a6774f6ec8de40c4e86ec28ea02417214c76"
integrity sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q== integrity sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==
fastq@^1.6.0: fastq@^1.6.0:
@ -3367,9 +3395,9 @@ human-signals@^2.1.0:
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
hyphenate-style-name@^1.0.2: hyphenate-style-name@^1.0.3:
version "1.0.4" version "1.0.4"
resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d"
integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==
i18next-browser-languagedetector@^7.0.0: i18next-browser-languagedetector@^7.0.0:
@ -3460,11 +3488,12 @@ inherits@2, inherits@^2.0.1:
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
inline-style-prefixer@^6.0.0: inline-style-prefixer@^6.0.0:
version "6.0.1" version "6.0.4"
resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-6.0.1.tgz#c5c0e43ba8831707afc5f5bbfd97edf45c1fa7ae" resolved "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-6.0.4.tgz#4290ed453ab0e4441583284ad86e41ad88384f44"
integrity sha512-AsqazZ8KcRzJ9YPN1wMH2aNM7lkWQ8tSPrW5uDk1ziYwiAPWSZnUsC7lfZq+BDqLqz0B4Pho5wscWcJzVvRzDQ== integrity sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==
dependencies: dependencies:
css-in-js-utils "^2.0.0" css-in-js-utils "^3.1.0"
fast-loops "^1.1.3"
internal-slot@^1.0.3: internal-slot@^1.0.3:
version "1.0.3" version "1.0.3"
@ -3651,11 +3680,6 @@ isexe@^2.0.0:
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
isobject@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0:
version "3.2.0" version "3.2.0"
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3"
@ -4075,7 +4099,7 @@ jest@^29.3.1:
js-cookie@^2.2.1: js-cookie@^2.2.1:
version "2.2.1" version "2.2.1"
resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" resolved "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8"
integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
@ -4289,7 +4313,7 @@ map-obj@^4.3.0:
mdn-data@2.0.14: mdn-data@2.0.14:
version "2.0.14" version "2.0.14"
resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
merge-stream@^2.0.0: merge-stream@^2.0.0:
@ -4346,7 +4370,7 @@ ms@2.1.2:
nano-css@^5.3.1: nano-css@^5.3.1:
version "5.3.5" version "5.3.5"
resolved "https://registry.yarnpkg.com/nano-css/-/nano-css-5.3.5.tgz#3075ea29ffdeb0c7cb6d25edb21d8f7fa8e8fe8e" resolved "https://registry.npmjs.org/nano-css/-/nano-css-5.3.5.tgz#3075ea29ffdeb0c7cb6d25edb21d8f7fa8e8fe8e"
integrity sha512-vSB9X12bbNu4ALBu7nigJgRViZ6ja3OU7CeuiV1zMIbXOdmkLahgtPmh3GBOlDxbKY0CitqlPdOReGlBLSp+yg== integrity sha512-vSB9X12bbNu4ALBu7nigJgRViZ6ja3OU7CeuiV1zMIbXOdmkLahgtPmh3GBOlDxbKY0CitqlPdOReGlBLSp+yg==
dependencies: dependencies:
css-tree "^1.1.2" css-tree "^1.1.2"
@ -4831,12 +4855,12 @@ react-transition-group@^4.4.5:
react-universal-interface@^0.6.2: react-universal-interface@^0.6.2:
version "0.6.2" version "0.6.2"
resolved "https://registry.yarnpkg.com/react-universal-interface/-/react-universal-interface-0.6.2.tgz#5e8d438a01729a4dbbcbeeceb0b86be146fe2b3b" resolved "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.2.tgz#5e8d438a01729a4dbbcbeeceb0b86be146fe2b3b"
integrity sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw== integrity sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==
react-use@^17.4.0: react-use@^17.4.0:
version "17.4.0" version "17.4.0"
resolved "https://registry.yarnpkg.com/react-use/-/react-use-17.4.0.tgz#cefef258b0a6c534a5c8021c2528ac6e1a4cdc6d" resolved "https://registry.npmjs.org/react-use/-/react-use-17.4.0.tgz#cefef258b0a6c534a5c8021c2528ac6e1a4cdc6d"
integrity sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q== integrity sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q==
dependencies: dependencies:
"@types/js-cookie" "^2.2.6" "@types/js-cookie" "^2.2.6"
@ -4897,7 +4921,7 @@ requires-port@^1.0.0:
resize-observer-polyfill@^1.5.1: resize-observer-polyfill@^1.5.1:
version "1.5.1" version "1.5.1"
resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" resolved "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
resolve-cwd@^3.0.0: resolve-cwd@^3.0.0:
@ -4960,9 +4984,9 @@ rollup@~2.78.0:
fsevents "~2.3.2" fsevents "~2.3.2"
rtl-css-js@^1.14.0: rtl-css-js@^1.14.0:
version "1.16.0" version "1.16.1"
resolved "https://registry.yarnpkg.com/rtl-css-js/-/rtl-css-js-1.16.0.tgz#e8d682982441aadb63cabcb2f7385f3fb78ff26e" resolved "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz#4b48b4354b0ff917a30488d95100fbf7219a3e80"
integrity sha512-Oc7PnzwIEU4M0K1J4h/7qUUaljXhQ0kCObRsZjxs2HjkpKsnoTMvSmvJ4sqgJZd0zBoEfAyTdnK/jMIYvrjySQ== integrity sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==
dependencies: dependencies:
"@babel/runtime" "^7.1.2" "@babel/runtime" "^7.1.2"
@ -5003,7 +5027,7 @@ scheduler@^0.23.0:
screenfull@^5.1.0: screenfull@^5.1.0:
version "5.2.0" version "5.2.0"
resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-5.2.0.tgz#6533d524d30621fc1283b9692146f3f13a93d1ba" resolved "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz#6533d524d30621fc1283b9692146f3f13a93d1ba"
integrity sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA== integrity sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==
secure-random-password@^0.2.3: secure-random-password@^0.2.3:
@ -5039,7 +5063,7 @@ semver@^6.0.0, semver@^6.3.0:
set-harmonic-interval@^1.0.1: set-harmonic-interval@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz#e1773705539cdfb80ce1c3d99e7f298bb3995249" resolved "https://registry.npmjs.org/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz#e1773705539cdfb80ce1c3d99e7f298bb3995249"
integrity sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g== integrity sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==
shebang-command@^2.0.0: shebang-command@^2.0.0:
@ -5109,7 +5133,7 @@ source-map-support@0.5.13:
source-map@0.5.6: source-map@0.5.6:
version "0.5.6" version "0.5.6"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
integrity sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA== integrity sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==
source-map@^0.5.7: source-map@^0.5.7:
@ -5134,7 +5158,7 @@ sprintf-js@~1.0.2:
stack-generator@^2.0.5: stack-generator@^2.0.5:
version "2.0.10" version "2.0.10"
resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.10.tgz#8ae171e985ed62287d4f1ed55a1633b3fb53bb4d" resolved "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz#8ae171e985ed62287d4f1ed55a1633b3fb53bb4d"
integrity sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ== integrity sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==
dependencies: dependencies:
stackframe "^1.3.4" stackframe "^1.3.4"
@ -5148,12 +5172,12 @@ stack-utils@^2.0.3:
stackframe@^1.3.4: stackframe@^1.3.4:
version "1.3.4" version "1.3.4"
resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310"
integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==
stacktrace-gps@^3.0.4: stacktrace-gps@^3.0.4:
version "3.1.2" version "3.1.2"
resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz#0c40b24a9b119b20da4525c398795338966a2fb0" resolved "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz#0c40b24a9b119b20da4525c398795338966a2fb0"
integrity sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ== integrity sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==
dependencies: dependencies:
source-map "0.5.6" source-map "0.5.6"
@ -5161,7 +5185,7 @@ stacktrace-gps@^3.0.4:
stacktrace-js@^2.0.2: stacktrace-js@^2.0.2:
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.2.tgz#4ca93ea9f494752d55709a081d400fdaebee897b" resolved "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz#4ca93ea9f494752d55709a081d400fdaebee897b"
integrity sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg== integrity sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==
dependencies: dependencies:
error-stack-parser "^2.0.6" error-stack-parser "^2.0.6"
@ -5245,9 +5269,9 @@ stylis@4.0.13:
integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag== integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==
stylis@^4.0.6: stylis@^4.0.6:
version "4.1.2" version "4.2.0"
resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.2.tgz#870b3c1c2275f51b702bb3da9e94eedad87bba41" resolved "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51"
integrity sha512-Nn2CCrG2ZaFziDxaZPN43CXqn+j7tcdjPFCkRBkFue8QYXC2HdEwnw5TCBo4yQZ2WxKYeSi0fdoOrtEqgDrXbA== integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==
supports-color@^5.3.0: supports-color@^5.3.0:
version "5.5.0" version "5.5.0"
@ -5301,7 +5325,7 @@ text-table@^0.2.0:
throttle-debounce@^3.0.1: throttle-debounce@^3.0.1:
version "3.0.1" version "3.0.1"
resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb" resolved "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb"
integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg== integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==
tiny-warning@^1.0.2: tiny-warning@^1.0.2:
@ -5328,7 +5352,7 @@ to-regex-range@^5.0.1:
toggle-selection@^1.0.6: toggle-selection@^1.0.6:
version "1.0.6" version "1.0.6"
resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" resolved "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32"
integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==
toposort@^2.0.2: toposort@^2.0.2:
@ -5360,7 +5384,7 @@ tr46@~0.0.3:
ts-easing@^0.2.0: ts-easing@^0.2.0:
version "0.2.0" version "0.2.0"
resolved "https://registry.yarnpkg.com/ts-easing/-/ts-easing-0.2.0.tgz#c8a8a35025105566588d87dbda05dd7fbfa5a4ec" resolved "https://registry.npmjs.org/ts-easing/-/ts-easing-0.2.0.tgz#c8a8a35025105566588d87dbda05dd7fbfa5a4ec"
integrity sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ== integrity sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==
ts-jest@^29.0.3: ts-jest@^29.0.3:
@ -5387,11 +5411,16 @@ tslib@^2.0.0, tslib@^2.4.0, tslib@^2.4.1:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e"
integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==
tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0: tslib@^2.0.3, tslib@^2.3.0:
version "2.4.0" version "2.4.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
tslib@^2.1.0:
version "2.5.0"
resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
tsutils@^3.21.0: tsutils@^3.21.0:
version "3.21.0" version "3.21.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"