fix: layout

This commit is contained in:
aldhigandia 2024-04-16 19:21:44 +07:00
parent dee23d3880
commit a244399e0f
32 changed files with 165 additions and 343 deletions

View File

@ -1,161 +0,0 @@
// ** React Imports
import { ReactNode } from 'react'
// ** Next Imports
import Head from 'next/head'
import { Router } from 'next/router'
import type { NextPage } from 'next'
import type { AppProps } from 'next/app'
// ** Loader Import
import NProgress from 'nprogress'
// ** Emotion Imports
import { CacheProvider } from '@emotion/react'
import type { EmotionCache } from '@emotion/cache'
// ** Config Imports
import { defaultACLObj } from 'src/configs/acl'
import themeConfig from 'src/configs/themeConfig'
// ** Fake-DB Import
import 'src/@fake-db'
// ** Third Party Import
import { Toaster } from 'react-hot-toast'
// ** Component Imports
import UserLayout from 'app/layouts/UserLayout'
import AclGuard from 'src/@core/components/auth/AclGuard'
import ThemeComponent from 'src/@core/theme/ThemeComponent'
import AuthGuard from 'src/@core/components/auth/AuthGuard'
import GuestGuard from 'src/@core/components/auth/GuestGuard'
import WindowWrapper from 'src/@core/components/window-wrapper'
// ** Spinner Import
import Spinner from 'src/@core/components/spinner'
// ** Contexts
import { AuthProvider } from 'src/context/AuthContext'
import { SettingsConsumer, SettingsProvider } from 'src/@core/context/settingsContext'
// ** Styled Components
import ReactHotToast from 'src/@core/styles/libs/react-hot-toast'
// ** Utils Imports
import { createEmotionCache } from 'src/@core/utils/create-emotion-cache'
// ** Prismjs Styles
import 'prismjs'
import 'prismjs/themes/prism-tomorrow.css'
import 'prismjs/components/prism-jsx'
import 'prismjs/components/prism-tsx'
// ** React Perfect Scrollbar Style
import 'react-perfect-scrollbar/dist/css/styles.css'
import 'src/iconify-bundle/icons-bundle-react'
// ** Global css styles
import '../../styles/globals.css'
// ** Extend App Props with Emotion
type ExtendedAppProps = AppProps & {
Component: NextPage
emotionCache: EmotionCache
}
type GuardProps = {
authGuard: boolean
guestGuard: boolean
children: ReactNode
}
const clientSideEmotionCache = createEmotionCache()
// ** Pace Loader
if (themeConfig.routingLoader) {
Router.events.on('routeChangeStart', () => {
NProgress.start()
})
Router.events.on('routeChangeError', () => {
NProgress.done()
})
Router.events.on('routeChangeComplete', () => {
NProgress.done()
})
}
const Guard = ({ children, authGuard, guestGuard }: GuardProps) => {
if (guestGuard) {
return <GuestGuard fallback={<Spinner />}>{children}</GuestGuard>
} else if (!guestGuard && !authGuard) {
return <>{children}</>
} else {
return <AuthGuard fallback={<Spinner />}>{children}</AuthGuard>
}
}
// ** Configure JSS & ClassName
const App = (props: ExtendedAppProps) => {
const { Component, emotionCache = clientSideEmotionCache, pageProps } = props
// Variables
const contentHeightFixed = Component.contentHeightFixed ?? false
const getLayout =
Component.getLayout ?? (page => <UserLayout contentHeightFixed={contentHeightFixed}>{page}</UserLayout>)
const setConfig = Component.setConfig ?? undefined
const authGuard = Component.authGuard ?? true
const guestGuard = Component.guestGuard ?? false
const aclAbilities = Component.acl ?? defaultACLObj
return (
<CacheProvider value={emotionCache}>
<Head>
<title>{`${themeConfig.templateName} - Material Design React Admin Template`}</title>
<meta
name='description'
content={`${themeConfig.templateName} Material Design React Admin Dashboard Template is the most developer friendly & highly customizable Admin Dashboard Template based on MUI v5.`}
/>
<meta name='keywords' content='Material Design, MUI, Admin Template, React Admin Template' />
<meta name='viewport' content='initial-scale=1, width=device-width' />
</Head>
<AuthProvider>
<SettingsProvider {...(setConfig ? { pageSettings: setConfig() } : {})}>
<SettingsConsumer>
{({ settings }) => {
return (
<ThemeComponent settings={settings}>
<WindowWrapper>
<Guard authGuard={authGuard} guestGuard={guestGuard}>
<AclGuard aclAbilities={aclAbilities} guestGuard={guestGuard}>
{getLayout(<Component {...pageProps} />)}
</AclGuard>
</Guard>
</WindowWrapper>
<ReactHotToast>
<Toaster position={settings.toastPosition} toastOptions={{ className: 'react-hot-toast' }} />
</ReactHotToast>
</ThemeComponent>
)
}}
</SettingsConsumer>
</SettingsProvider>
</AuthProvider>
</CacheProvider>
)
}
export default App

View File

@ -2,7 +2,7 @@
import { useContext } from 'react'
// ** Context Imports
import { AbilityContext } from 'app/layouts/components/acl/Can'
import { AbilityContext } from 'src/layouts/components/acl/Can'
// ** MUI Imports
import Grid from '@mui/material/Grid'

20
app/error.tsx Normal file
View File

@ -0,0 +1,20 @@
'use client' // Error components must be Client Components
import { useEffect } from 'react'
export default function Error({
error,
}: {
error: Error & { digest?: string }
}) {
useEffect(() => {
// Log the error to an error reporting service
console.error(error)
}, [error])
return (
<div>
<h2>Something went wrong!</h2>
</div>
)
}

View File

@ -4,38 +4,27 @@
import { useEffect } from 'react'
// ** Next Imports
import { useRouter } from 'next/router'
import { useRouter } from 'next/navigation'
// ** Spinner Import
import Spinner from 'src/@core/components/spinner'
// ** Hook Imports
import { useAuth } from 'src/hooks/useAuth'
/**
* Set Home URL based on User Roles
*/
export const getHomeRoute = (role: string) => {
if (role === 'client') return '/acl'
else return '/home'
export const getHomeRoute = () => {
return '/home'
}
const Home = () => {
// ** Hooks
const auth = useAuth()
const router = useRouter()
useEffect(() => {
if (!router.isReady) {
return
}
const homeRoute = getHomeRoute()
if (auth.user && auth.user.role) {
const homeRoute = getHomeRoute(auth.user.role)
// Redirect user to Home URL
router.replace(homeRoute)
}
// Redirect user to Home URL
router.replace(homeRoute)
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [])

View File

@ -1,6 +1,7 @@
import type { Metadata } from "next";
import { Inter } from "next/font/google";
import "./globals.css";
import { MainLayout } from "src/layouts/MainLayout";
const inter = Inter({ subsets: ["latin"] });
@ -16,7 +17,9 @@ export default function RootLayout({
}>) {
return (
<html lang="en">
<body className={inter.className}>{children}</body>
</html>
<body className={inter.className}>
<MainLayout>{children}</MainLayout>
</body>
</html >
);
}

View File

@ -87,8 +87,8 @@
"@types/react-dom": "^18",
"@types/react-draft-wysiwyg": "1.13.4",
"@types/react-redux": "7.1.25",
"@typescript-eslint/eslint-plugin": "5.48.0",
"@typescript-eslint/parser": "5.48.0",
"@typescript-eslint/eslint-plugin": "6.1.0",
"@typescript-eslint/parser": "6.1.0",
"eslint": "^8",
"eslint-config-next": "14.2.1",
"eslint-config-prettier": "8.6.0",

View File

@ -2,13 +2,13 @@
import { ReactNode, useState } from 'react'
// ** Next Import
import { useRouter } from 'next/router'
import { usePathname } from 'next/navigation'
// ** Types
import type { ACLObj, AppAbility } from 'src/configs/acl'
// ** Context Imports
import { AbilityContext } from 'app/layouts/components/acl/Can'
import { AbilityContext } from 'src/layouts/components/acl/Can'
// ** Config Import
import { buildAbilityFor } from 'src/configs/acl'
@ -34,10 +34,12 @@ const AclGuard = (props: AclGuardProps) => {
// ** Hooks
const auth = useAuth()
const router = useRouter()
const pathname = usePathname()
console.log(pathname);
// If guestGuard is true and user is not logged in or its an error page, render the page without checking access
if (guestGuard || router.route === '/404' || router.route === '/500' || router.route === '/') {
if (guestGuard || pathname === '/404' || pathname === '/500' || pathname === '/') {
return <>{children}</>
}

View File

@ -1,8 +1,10 @@
'use client';
// ** React Imports
import { useState, useEffect, ReactNode } from 'react'
// ** Next Import
import { useRouter } from 'next/router'
import { useRouter } from 'next/navigation'
interface Props {
children: ReactNode
@ -20,9 +22,8 @@ const WindowWrapper = ({ children }: Props) => {
setWindowReadyFlag(true)
}
},
// eslint-disable-next-line react-hooks/exhaustive-deps
[router.route]
[router]
)
if (windowReadyFlag) {

View File

@ -1,3 +1,5 @@
'use client';
// ** React Imports
import { createContext, useState, ReactNode, useEffect } from 'react'

View File

@ -32,9 +32,9 @@ import { Settings } from 'src/@core/context/settingsContext'
// ** Custom Components Imports
import HorizontalNavItems from './HorizontalNavItems'
import UserIcon from 'app/layouts/components/UserIcon'
import Translations from 'app/layouts/components/Translations'
import CanViewNavGroup from 'app/layouts/components/acl/CanViewNavGroup'
import UserIcon from 'src/layouts/components/UserIcon'
import Translations from 'src/layouts/components/Translations'
import CanViewNavGroup from 'src/layouts/components/acl/CanViewNavGroup'
// ** Utils
import { hexToRGBA } from 'src/@core/utils/hex-to-rgba'

View File

@ -25,9 +25,9 @@ import { NavLink } from 'src/@core/layouts/types'
import { Settings } from 'src/@core/context/settingsContext'
// ** Custom Components Imports
import UserIcon from 'app/layouts/components/UserIcon'
import Translations from 'app/layouts/components/Translations'
import CanViewNavLink from 'app/layouts/components/acl/CanViewNavLink'
import UserIcon from 'src/layouts/components/UserIcon'
import Translations from 'src/layouts/components/Translations'
import CanViewNavLink from 'src/layouts/components/acl/CanViewNavLink'
// ** Util Imports
import { hexToRGBA } from 'src/@core/utils/hex-to-rgba'

View File

@ -2,7 +2,7 @@
import { useState, SyntheticEvent, Fragment } from 'react'
// ** Next Import
import { useRouter } from 'next/router'
import { useRouter } from 'next/navigation'
// ** MUI Imports
import Box from '@mui/material/Box'

View File

@ -31,9 +31,9 @@ import { NavGroup, LayoutProps } from 'src/@core/layouts/types'
// ** Custom Components Imports
import VerticalNavItems from './VerticalNavItems'
import UserIcon from 'app/layouts/components/UserIcon'
import Translations from 'app/layouts/components/Translations'
import CanViewNavGroup from 'app/layouts/components/acl/CanViewNavGroup'
import UserIcon from 'src/layouts/components/UserIcon'
import Translations from 'src/layouts/components/Translations'
import CanViewNavGroup from 'src/layouts/components/acl/CanViewNavGroup'
interface Props {
item: NavGroup

View File

@ -3,7 +3,7 @@ import { ElementType } from 'react'
// ** Next Imports
import Link from 'next/link'
import { useRouter } from 'next/router'
import { usePathname } from 'next/navigation'
// ** MUI Imports
import Chip from '@mui/material/Chip'
@ -22,13 +22,12 @@ import { NavLink, NavGroup } from 'src/@core/layouts/types'
import { Settings } from 'src/@core/context/settingsContext'
// ** Custom Components Imports
import UserIcon from 'app/layouts/components/UserIcon'
import Translations from 'app/layouts/components/Translations'
import CanViewNavLink from 'app/layouts/components/acl/CanViewNavLink'
import UserIcon from 'src/layouts/components/UserIcon'
import Translations from 'src/layouts/components/Translations'
import CanViewNavLink from 'src/layouts/components/acl/CanViewNavLink'
// ** Util Imports
import { hexToRGBA } from 'src/@core/utils/hex-to-rgba'
import { handleURLQueries } from 'src/@core/layouts/utils'
interface Props {
parent?: boolean
@ -95,7 +94,7 @@ const VerticalNavLink = ({
}: Props) => {
// ** Hooks
const theme = useTheme()
const router = useRouter()
const pathname = usePathname()
// ** Vars
const { mode, navCollapsed } = settings
@ -121,7 +120,7 @@ const VerticalNavLink = ({
}
const isNavLinkActive = () => {
if (router.pathname === item.path || handleURLQueries(router, item.path)) {
if (pathname === item.path) {
return true
} else {
return false

View File

@ -11,8 +11,8 @@ import { NavSectionTitle } from 'src/@core/layouts/types'
import { Settings } from 'src/@core/context/settingsContext'
// ** Custom Components Imports
import Translations from 'app/layouts/components/Translations'
import CanViewNavSectionTitle from 'app/layouts/components/acl/CanViewNavSectionTitle'
import Translations from 'src/layouts/components/Translations'
import CanViewNavSectionTitle from 'src/layouts/components/acl/CanViewNavSectionTitle'
interface Props {
navHover: boolean

View File

@ -15,7 +15,7 @@ import { Settings } from 'src/@core/context/settingsContext'
import themeConfig from 'src/configs/themeConfig'
// ** Direction component for LTR or RTL
import Direction from 'app/layouts/components/Direction'
import Direction from 'src/layouts/components/Direction'
// ** Theme Override Imports
import overrides from './overrides'
@ -23,7 +23,7 @@ import typography from './typography'
// ** Theme
import themeOptions from './ThemeOptions'
import UserThemeOptions from 'app/layouts/UserThemeOptions'
import UserThemeOptions from 'src/layouts/UserThemeOptions'
// ** Global Styles
import GlobalStyling from './globalStyles'

View File

@ -3,7 +3,7 @@ import { deepmerge } from '@mui/utils'
import { ThemeOptions } from '@mui/material'
// ** User Theme Options
import UserThemeOptions from 'app/layouts/UserThemeOptions'
import UserThemeOptions from 'src/layouts/UserThemeOptions'
// ** Type Import
import { Settings } from 'src/@core/context/settingsContext'

View File

@ -0,0 +1,18 @@
'use client';
import { FC, PropsWithChildren, useContext } from "react";
import UserLayout from "src/layouts/UserLayout";
import ThemeComponent from "src/@core/theme/ThemeComponent";
import { SettingsContext, SettingsProvider } from "src/@core/context/settingsContext";
export const MainLayout: FC<PropsWithChildren> = ({ children }) => {
const { settings } = useContext(SettingsContext);
return (
<SettingsProvider>
<ThemeComponent settings={settings}>
<UserLayout>{children}</UserLayout>
</ThemeComponent>
</SettingsProvider>
)
}

View File

@ -1,3 +1,5 @@
"use client"
// ** React Imports
import { ReactNode } from 'react'
@ -45,7 +47,7 @@ const UserLayout = ({ children, contentHeightFixed }: Props) => {
* to know more about what values can be passed to this hook.
* ! Do not change this value unless you know what you are doing. It can break the template.
*/
const hidden = useMediaQuery((theme: Theme) => theme.breakpoints.down('lg'))
const hidden = useMediaQuery((theme: Theme) => theme?.breakpoints.down('lg'))
if (hidden && settings.layout === 'horizontal') {
settings.layout = 'vertical'
@ -90,7 +92,6 @@ const UserLayout = ({ children, contentHeightFixed }: Props) => {
})}
>
{children}
</Layout>
)
}

View File

@ -1,3 +1,5 @@
'use client';
// ** React Imports
import { useEffect, ReactNode } from 'react'

View File

@ -2,7 +2,7 @@
import { ReactNode, useContext } from 'react'
// ** Component Imports
import { AbilityContext } from 'app/layouts/components/acl/Can'
import { AbilityContext } from 'src/layouts/components/acl/Can'
// ** Types
import { NavGroup, NavLink } from 'src/@core/layouts/types'

View File

@ -2,7 +2,7 @@
import { ReactNode, useContext } from 'react'
// ** Component Imports
import { AbilityContext } from 'app/layouts/components/acl/Can'
import { AbilityContext } from 'src/layouts/components/acl/Can'
// ** Types
import { NavLink } from 'src/@core/layouts/types'

View File

@ -2,7 +2,7 @@
import { ReactNode, useContext } from 'react'
// ** Component Imports
import { AbilityContext } from 'app/layouts/components/acl/Can'
import { AbilityContext } from 'src/layouts/components/acl/Can'
// ** Types
import { NavSectionTitle } from 'src/@core/layouts/types'

198
yarn.lock
View File

@ -312,14 +312,14 @@
resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6"
integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==
"@eslint-community/eslint-utils@^4.2.0":
"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
version "4.4.0"
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
dependencies:
eslint-visitor-keys "^3.3.0"
"@eslint-community/regexpp@^4.6.1":
"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1":
version "4.10.0"
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63"
integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==
@ -867,7 +867,7 @@
"@types/react" "*"
hoist-non-react-statics "^3.3.0"
"@types/json-schema@^7.0.9":
"@types/json-schema@^7.0.12":
version "7.0.15"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
@ -986,7 +986,7 @@
"@types/prop-types" "*"
csstype "^3.0.2"
"@types/semver@^7.3.12":
"@types/semver@^7.5.0":
version "7.5.8"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e"
integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==
@ -1011,29 +1011,33 @@
dependencies:
"@types/node" "*"
"@typescript-eslint/eslint-plugin@5.48.0":
version "5.48.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.0.tgz#54f8368d080eb384a455f60c2ee044e948a8ce67"
integrity sha512-SVLafp0NXpoJY7ut6VFVUU9I+YeFsDzeQwtK0WZ+xbRN3mtxJ08je+6Oi2N89qDn087COdO0u3blKZNv9VetRQ==
"@typescript-eslint/eslint-plugin@6.1.0":
version "6.1.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.1.0.tgz#96f3ca6615717659d06c9f7161a1d14ab0c49c66"
integrity sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==
dependencies:
"@typescript-eslint/scope-manager" "5.48.0"
"@typescript-eslint/type-utils" "5.48.0"
"@typescript-eslint/utils" "5.48.0"
"@eslint-community/regexpp" "^4.5.1"
"@typescript-eslint/scope-manager" "6.1.0"
"@typescript-eslint/type-utils" "6.1.0"
"@typescript-eslint/utils" "6.1.0"
"@typescript-eslint/visitor-keys" "6.1.0"
debug "^4.3.4"
ignore "^5.2.0"
graphemer "^1.4.0"
ignore "^5.2.4"
natural-compare "^1.4.0"
natural-compare-lite "^1.4.0"
regexpp "^3.2.0"
semver "^7.3.7"
tsutils "^3.21.0"
semver "^7.5.4"
ts-api-utils "^1.0.1"
"@typescript-eslint/parser@5.48.0":
version "5.48.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.48.0.tgz#02803355b23884a83e543755349809a50b7ed9ba"
integrity sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==
"@typescript-eslint/parser@6.1.0":
version "6.1.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.1.0.tgz#3135bf65dca5340d8650703eb8cb83113e156ee5"
integrity sha512-hIzCPvX4vDs4qL07SYzyomamcs2/tQYXg5DtdAfj35AyJ5PIUqhsLf4YrEIFzZcND7R2E8tpQIZKayxg8/6Wbw==
dependencies:
"@typescript-eslint/scope-manager" "5.48.0"
"@typescript-eslint/types" "5.48.0"
"@typescript-eslint/typescript-estree" "5.48.0"
"@typescript-eslint/scope-manager" "6.1.0"
"@typescript-eslint/types" "6.1.0"
"@typescript-eslint/typescript-estree" "6.1.0"
"@typescript-eslint/visitor-keys" "6.1.0"
debug "^4.3.4"
"@typescript-eslint/parser@^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0":
@ -1047,13 +1051,13 @@
"@typescript-eslint/visitor-keys" "7.2.0"
debug "^4.3.4"
"@typescript-eslint/scope-manager@5.48.0":
version "5.48.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.48.0.tgz#607731cb0957fbc52fd754fd79507d1b6659cecf"
integrity sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow==
"@typescript-eslint/scope-manager@6.1.0":
version "6.1.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.1.0.tgz#a6cdbe11630614f8c04867858a42dd56590796ed"
integrity sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==
dependencies:
"@typescript-eslint/types" "5.48.0"
"@typescript-eslint/visitor-keys" "5.48.0"
"@typescript-eslint/types" "6.1.0"
"@typescript-eslint/visitor-keys" "6.1.0"
"@typescript-eslint/scope-manager@7.2.0":
version "7.2.0"
@ -1063,38 +1067,38 @@
"@typescript-eslint/types" "7.2.0"
"@typescript-eslint/visitor-keys" "7.2.0"
"@typescript-eslint/type-utils@5.48.0":
version "5.48.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.48.0.tgz#40496dccfdc2daa14a565f8be80ad1ae3882d6d6"
integrity sha512-vbtPO5sJyFjtHkGlGK4Sthmta0Bbls4Onv0bEqOGm7hP9h8UpRsHJwsrCiWtCUndTRNQO/qe6Ijz9rnT/DB+7g==
"@typescript-eslint/type-utils@6.1.0":
version "6.1.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.1.0.tgz#21cc6c3bc1980b03f9eb4e64580d0c5be6f08215"
integrity sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==
dependencies:
"@typescript-eslint/typescript-estree" "5.48.0"
"@typescript-eslint/utils" "5.48.0"
"@typescript-eslint/typescript-estree" "6.1.0"
"@typescript-eslint/utils" "6.1.0"
debug "^4.3.4"
tsutils "^3.21.0"
ts-api-utils "^1.0.1"
"@typescript-eslint/types@5.48.0":
version "5.48.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.48.0.tgz#d725da8dfcff320aab2ac6f65c97b0df30058449"
integrity sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==
"@typescript-eslint/types@6.1.0":
version "6.1.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.1.0.tgz#2d607c62827bb416ada5c96ebfa2ef84e45a8dfa"
integrity sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==
"@typescript-eslint/types@7.2.0":
version "7.2.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.2.0.tgz#0feb685f16de320e8520f13cca30779c8b7c403f"
integrity sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==
"@typescript-eslint/typescript-estree@5.48.0":
version "5.48.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.0.tgz#a7f04bccb001003405bb5452d43953a382c2fac2"
integrity sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==
"@typescript-eslint/typescript-estree@6.1.0":
version "6.1.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.1.0.tgz#ea382f6482ba698d7e993a88ce5391ea7a66c33d"
integrity sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==
dependencies:
"@typescript-eslint/types" "5.48.0"
"@typescript-eslint/visitor-keys" "5.48.0"
"@typescript-eslint/types" "6.1.0"
"@typescript-eslint/visitor-keys" "6.1.0"
debug "^4.3.4"
globby "^11.1.0"
is-glob "^4.0.3"
semver "^7.3.7"
tsutils "^3.21.0"
semver "^7.5.4"
ts-api-utils "^1.0.1"
"@typescript-eslint/typescript-estree@7.2.0":
version "7.2.0"
@ -1110,27 +1114,26 @@
semver "^7.5.4"
ts-api-utils "^1.0.1"
"@typescript-eslint/utils@5.48.0":
version "5.48.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.48.0.tgz#eee926af2733f7156ad8d15e51791e42ce300273"
integrity sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==
"@typescript-eslint/utils@6.1.0":
version "6.1.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.1.0.tgz#1641843792b4e3451cc692e2c73055df8b26f453"
integrity sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==
dependencies:
"@types/json-schema" "^7.0.9"
"@types/semver" "^7.3.12"
"@typescript-eslint/scope-manager" "5.48.0"
"@typescript-eslint/types" "5.48.0"
"@typescript-eslint/typescript-estree" "5.48.0"
eslint-scope "^5.1.1"
eslint-utils "^3.0.0"
semver "^7.3.7"
"@eslint-community/eslint-utils" "^4.4.0"
"@types/json-schema" "^7.0.12"
"@types/semver" "^7.5.0"
"@typescript-eslint/scope-manager" "6.1.0"
"@typescript-eslint/types" "6.1.0"
"@typescript-eslint/typescript-estree" "6.1.0"
semver "^7.5.4"
"@typescript-eslint/visitor-keys@5.48.0":
version "5.48.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz#4446d5e7f6cadde7140390c0e284c8702d944904"
integrity sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==
"@typescript-eslint/visitor-keys@6.1.0":
version "6.1.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.1.0.tgz#d2b84dff6b58944d3257ea03687e269a788c73be"
integrity sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==
dependencies:
"@typescript-eslint/types" "5.48.0"
eslint-visitor-keys "^3.3.0"
"@typescript-eslint/types" "6.1.0"
eslint-visitor-keys "^3.4.1"
"@typescript-eslint/visitor-keys@7.2.0":
version "7.2.0"
@ -2389,14 +2392,6 @@ eslint-plugin-react@^7.33.2:
semver "^6.3.1"
string.prototype.matchall "^4.0.10"
eslint-scope@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
dependencies:
esrecurse "^4.3.0"
estraverse "^4.1.1"
eslint-scope@^7.2.2:
version "7.2.2"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f"
@ -2405,18 +2400,6 @@ eslint-scope@^7.2.2:
esrecurse "^4.3.0"
estraverse "^5.2.0"
eslint-utils@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
dependencies:
eslint-visitor-keys "^2.0.0"
eslint-visitor-keys@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
version "3.4.3"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
@ -2489,11 +2472,6 @@ esrecurse@^4.3.0:
dependencies:
estraverse "^5.2.0"
estraverse@^4.1.1:
version "4.3.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
@ -4471,11 +4449,6 @@ regexp.prototype.flags@^1.5.2:
es-errors "^1.3.0"
set-function-name "^2.0.1"
regexpp@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
reselect@^4.1.6, reselect@^4.1.7:
version "4.1.8"
resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524"
@ -4579,7 +4552,7 @@ semver@^6.3.1:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
semver@^7.3.7, semver@^7.5.4:
semver@^7.5.4:
version "7.6.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d"
integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==
@ -4670,16 +4643,8 @@ streamsearch@^1.1.0:
resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764"
integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==
"string-width-cjs@npm:string-width@^4.2.0":
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
dependencies:
emoji-regex "^8.0.0"
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1"
string-width@^4.1.0:
"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0:
name string-width-cjs
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@ -4755,14 +4720,7 @@ string_decoder@~1.1.1:
dependencies:
safe-buffer "~5.1.0"
"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
dependencies:
ansi-regex "^5.0.1"
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@ -5042,23 +5000,11 @@ tsconfig-paths@^3.14.1, tsconfig-paths@^3.15.0:
minimist "^1.2.6"
strip-bom "^3.0.0"
tslib@^1.8.1:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
tslib@^2.1.0, tslib@^2.4.0, tslib@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
tsutils@^3.21.0:
version "3.21.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
dependencies:
tslib "^1.8.1"
type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"