├── .eslintrc.json ├── src ├── app │ ├── favicon.ico │ ├── server-example │ │ ├── loading.tsx │ │ ├── code │ │ │ ├── page.tsx │ │ │ └── ServerExampleCodeView.tsx │ │ ├── page.tsx │ │ └── ServerExampleView.tsx │ ├── client-example │ │ ├── page.tsx │ │ └── ClientExampleView.tsx │ ├── globals.css │ ├── Header.tsx │ ├── page.tsx │ └── layout.tsx ├── components │ ├── FullScreenLoader.tsx │ ├── DisableBodyScroll.tsx │ ├── Link.tsx │ ├── Logo.tsx │ ├── GitHubButton.tsx │ ├── BoxLoader.tsx │ ├── Spotify.tsx │ ├── Players │ │ ├── SoundCloud.tsx │ │ ├── AmazonMusic.tsx │ │ ├── Deezer.tsx │ │ ├── Spotify.tsx │ │ ├── YouTubeVideo.tsx │ │ └── AppleMusic.tsx │ ├── GistView.tsx │ ├── SongPlayer.tsx │ ├── SongCard.tsx │ └── modals │ │ └── ModalRoot.tsx ├── lib │ └── server │ │ ├── fetchSong.tsx │ │ ├── fetchSongs.tsx │ │ └── contentful.tsx ├── interfaces │ └── contentful.interfaces.tsx └── assets │ └── svg │ ├── github.svg │ └── designly-logo-trans.svg ├── postcss.config.js ├── next.config.js ├── .prettierrc ├── .gitignore ├── public ├── vercel.svg └── next.svg ├── tailwind.config.ts ├── tsconfig.json ├── package.json ├── README.md └── pnpm-lock.yaml /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/designly1/nextjs14-data-fetching-examples/HEAD/src/app/favicon.ico -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | images: { 4 | domains: ['localhost', 'cdn.designly.biz'], 5 | }, 6 | 7 | } 8 | 9 | module.exports = nextConfig 10 | -------------------------------------------------------------------------------- /src/app/server-example/loading.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import BoxLoader from '@/components/BoxLoader'; 3 | 4 | export default function LoadingDeployments() { 5 | return ; 6 | } 7 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 120, 3 | "tabWidth": 4, 4 | "useTabs": true, 5 | "semi": true, 6 | "singleQuote": true, 7 | "trailingComma": "all", 8 | "bracketSpacing": true, 9 | "jsxBracketSameLine": false, 10 | "arrowParens": "avoid", 11 | "quoteProps": "as-needed" 12 | } 13 | -------------------------------------------------------------------------------- /src/components/FullScreenLoader.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | export default function FullScreenLoader() { 4 | return ( 5 |
6 |
7 |
8 | ); 9 | } 10 | -------------------------------------------------------------------------------- /src/app/client-example/page.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import BoxLoader from '@/components/BoxLoader'; 3 | 4 | import dynamic from 'next/dynamic'; 5 | const ClientExampleView = dynamic(() => import('./ClientExampleView'), { 6 | loading: () => , 7 | ssr: false, 8 | }); 9 | 10 | export default function ClientExamplePage() { 11 | return ; 12 | } 13 | -------------------------------------------------------------------------------- /src/app/server-example/code/page.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import BoxLoader from '@/components/BoxLoader'; 3 | 4 | import dynamic from 'next/dynamic'; 5 | const ServerExampleCodeView = dynamic(() => import('./ServerExampleCodeView'), { 6 | loading: () => , 7 | ssr: false, 8 | }); 9 | 10 | export default function ServerExampleCodePage() { 11 | return ; 12 | } 13 | -------------------------------------------------------------------------------- /src/components/DisableBodyScroll.tsx: -------------------------------------------------------------------------------- 1 | // @/components/DisableBodyScroll.js 2 | import React, { Component } from 'react'; 3 | class DisableBodyScroll extends Component { 4 | componentDidMount() { 5 | document.body.classList.add('scroll-locked'); 6 | } 7 | componentWillUnmount() { 8 | document.body.classList.remove('scroll-locked'); 9 | } 10 | render() { 11 | return false; 12 | } 13 | } 14 | export default DisableBodyScroll; 15 | -------------------------------------------------------------------------------- /src/app/server-example/code/ServerExampleCodeView.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import React from 'react'; 4 | import GistView from '@/components/GistView'; 5 | 6 | import { useRouter } from 'nextjs13-progress'; 7 | 8 | export default function ServerExampleCodeView() { 9 | const router = useRouter(); 10 | 11 | const handleClose = () => { 12 | router.push('/server-example'); 13 | }; 14 | 15 | return ; 16 | } 17 | -------------------------------------------------------------------------------- /src/app/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | .angled-div { 6 | position: fixed; 7 | width: 200px; 8 | height: 200px; 9 | top: -100px; 10 | right: -100px; 11 | background-color: #3498db; 12 | color: white; 13 | text-align: center; 14 | box-sizing: border-box; 15 | transform: rotate(-45deg); 16 | cursor: pointer; 17 | } 18 | 19 | .angled-div > div { 20 | transform: rotate(45deg); 21 | position: absolute; 22 | padding: 5px; 23 | top: 32%; 24 | } 25 | -------------------------------------------------------------------------------- /src/components/Link.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Link as L } from 'nextjs13-progress'; 3 | 4 | /** 5 | * 6 | * This is a wrapper around the Next.js Link component. 7 | * temporary hack until nextjs13-progress is updated to support TypeScript 5 8 | */ 9 | 10 | interface LinkProps { 11 | href: string; 12 | className?: string; 13 | target?: string; 14 | children: React.ReactNode; 15 | } 16 | 17 | export default function Link(props: LinkProps) { 18 | return ; 19 | } 20 | -------------------------------------------------------------------------------- /src/components/Logo.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Image from 'next/image'; 3 | 4 | import logo from '@/assets/svg/designly-logo-trans.svg'; 5 | 6 | interface Props { 7 | width?: number; 8 | } 9 | 10 | const origWidth = 300; 11 | const origHeight = 100; 12 | 13 | export default function Logo(props: Props) { 14 | const { width = origWidth } = props; 15 | const height = (origHeight / origWidth) * width; 16 | 17 | return Designly; 18 | } 19 | -------------------------------------------------------------------------------- /src/app/server-example/page.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import BoxLoader from '@/components/BoxLoader'; 3 | 4 | import dynamic from 'next/dynamic'; 5 | const ServerExampleView = dynamic(() => import('./ServerExampleView'), { 6 | loading: () => , 7 | }); 8 | 9 | import fetchSongs from '@/lib/server/fetchSongs'; 10 | 11 | export default async function ServerExamplePage() { 12 | const songs = await fetchSongs(); 13 | 14 | return ; 15 | } 16 | -------------------------------------------------------------------------------- /src/components/GitHubButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Link from './Link'; 3 | import Image from 'next/image'; 4 | 5 | import githubIcon from '@/assets/svg/github.svg'; 6 | 7 | export default function GitHubButton() { 8 | return ( 9 | 14 |
15 | Github Icon 16 |
17 | 18 | ); 19 | } 20 | -------------------------------------------------------------------------------- /src/lib/server/fetchSong.tsx: -------------------------------------------------------------------------------- 1 | 'use server'; 2 | 3 | import { getSong, mapSongDetails } from './contentful'; 4 | 5 | export default async function fetchSong(slug: string) { 6 | try { 7 | // simulate network delay 8 | await new Promise(resolve => setTimeout(resolve, 2000)); 9 | const song = await getSong(slug); 10 | if (!song) throw new Error('Failed to fetch song'); 11 | 12 | return mapSongDetails(song); 13 | } catch (err: any) { 14 | console.error(err); 15 | throw new Error('Failed to fetch song'); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .yarn/install-state.gz 8 | 9 | # testing 10 | /coverage 11 | 12 | # next.js 13 | /.next/ 14 | /out/ 15 | 16 | # production 17 | /build 18 | 19 | # misc 20 | .DS_Store 21 | *.pem 22 | 23 | # debug 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | 28 | # local env files 29 | .env*.local 30 | 31 | # vercel 32 | .vercel 33 | 34 | # typescript 35 | *.tsbuildinfo 36 | next-env.d.ts 37 | -------------------------------------------------------------------------------- /src/app/Header.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Link from '@/components/Link'; 3 | import Logo from '@/components/Logo'; 4 | 5 | export default function Header() { 6 | return ( 7 |
8 | 9 | 10 | 11 | Visit Designly.biz 12 | Visit Designly Blog 13 |
14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /src/app/page.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Link from '@/components/Link'; 3 | 4 | export default function MainPage() { 5 | return ( 6 |
7 |

Next.js 14 Data Fetching Examples

8 | 9 | Server Fetching Example 10 | 11 | 12 | Client Fetching Example 13 | 14 |
15 | ); 16 | } 17 | -------------------------------------------------------------------------------- /src/lib/server/fetchSongs.tsx: -------------------------------------------------------------------------------- 1 | 'use server'; 2 | 3 | import { getSongs, mapSongs } from './contentful'; 4 | 5 | import { I_SongItem } from '@/interfaces/contentful.interfaces'; 6 | 7 | export default async function fetchSongs(): Promise { 8 | try { 9 | // simulate network delay 10 | await new Promise((resolve) => setTimeout(resolve, 2000)); 11 | const songs = await getSongs(); 12 | if (!songs) throw new Error('Failed to fetch songs'); 13 | 14 | return mapSongs(songs); 15 | } catch (err: any) { 16 | console.error(err); 17 | throw new Error('Failed to fetch songs'); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/components/BoxLoader.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | interface Props { 4 | message?: string; 5 | lightMode?: boolean; 6 | } 7 | 8 | export default function BoxLoader(props: Props) { 9 | const { message = 'Loading...', lightMode = false } = props; 10 | return ( 11 |
12 |
13 |
14 | {message} 15 |
16 |
17 | ); 18 | } 19 | -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import type { Config } from 'tailwindcss'; 2 | 3 | const config: Config = { 4 | content: [ 5 | './src/pages/**/*.{js,ts,jsx,tsx,mdx}', 6 | './src/components/**/*.{js,ts,jsx,tsx,mdx}', 7 | './src/app/**/*.{js,ts,jsx,tsx,mdx}', 8 | ], 9 | theme: { 10 | extend: { 11 | backgroundImage: { 12 | 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))', 13 | 'gradient-conic': 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))', 14 | }, 15 | }, 16 | }, 17 | plugins: [require('daisyui')], 18 | daisyui: { 19 | themes: ['business'], 20 | }, 21 | }; 22 | export default config; 23 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "noEmit": true, 9 | "esModuleInterop": true, 10 | "module": "esnext", 11 | "moduleResolution": "bundler", 12 | "resolveJsonModule": true, 13 | "isolatedModules": true, 14 | "jsx": "preserve", 15 | "incremental": true, 16 | "plugins": [ 17 | { 18 | "name": "next" 19 | } 20 | ], 21 | "paths": { 22 | "@/*": ["./src/*"] 23 | } 24 | }, 25 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 26 | "exclude": ["node_modules"] 27 | } 28 | -------------------------------------------------------------------------------- /src/components/Spotify.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | interface Props { 4 | url: string; 5 | className?: string; 6 | } 7 | 8 | export default function Spotify(props: Props) { 9 | const { url, className } = props; 10 | 11 | 12 | const classes = [ 13 | 'rounded-xl', 14 | 'border-0', 15 | ]; 16 | 17 | if (className) { 18 | classes.push(className); 19 | } 20 | 21 | return ( 22 | 30 | ) 31 | } 32 | -------------------------------------------------------------------------------- /src/components/Players/SoundCloud.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ModalRoot from '@/components/modals/ModalRoot'; 3 | import Embed from 'react-embed'; 4 | 5 | interface Props { 6 | url: string; 7 | className?: string; 8 | show: boolean; 9 | setShow: React.Dispatch>; 10 | } 11 | 12 | export default function SoundCloud(props: Props) { 13 | const { url, className, show, setShow } = props; 14 | 15 | return ( 16 | 17 |
18 | 19 | 25 |
26 |
27 | ); 28 | } 29 | -------------------------------------------------------------------------------- /src/components/Players/AmazonMusic.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ModalRoot from '@/components/modals/ModalRoot'; 3 | 4 | interface Props { 5 | url: string; 6 | className?: string; 7 | show: boolean; 8 | setShow: React.Dispatch>; 9 | } 10 | 11 | export default function AmazonMusic(props: Props) { 12 | const { url, className, show, setShow } = props; 13 | 14 | return ( 15 | 16 |
17 | 23 | 29 |
30 |
31 | ); 32 | } 33 | -------------------------------------------------------------------------------- /src/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import type { Metadata } from 'next'; 2 | import { Inter } from 'next/font/google'; 3 | import './globals.css'; 4 | 5 | import { Next13NProgress } from 'nextjs13-progress'; 6 | import GitHubButton from '@/components/GitHubButton'; 7 | import Header from './Header'; 8 | 9 | const inter = Inter({ subsets: ['latin'] }); 10 | 11 | export const metadata: Metadata = { 12 | title: 'Next.js 14 Data Fetching Examples | Designly', 13 | description: 'Next.js 14 Data Fetching Examples | Designly', 14 | }; 15 | 16 | export default function RootLayout({ children }: { children: React.ReactNode }) { 17 | return ( 18 | 19 | 20 | 21 |
22 |
23 | {children} 24 |
25 | 26 | 27 | 28 | ); 29 | } 30 | -------------------------------------------------------------------------------- /src/components/Players/Deezer.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ModalRoot from '@/components/modals/ModalRoot'; 3 | 4 | interface Props { 5 | url: string; 6 | className?: string; 7 | show: boolean; 8 | setShow: React.Dispatch>; 9 | } 10 | 11 | export default function Deezer(props: Props) { 12 | const { url, className, show, setShow } = props; 13 | 14 | return ( 15 | 16 |
17 | 25 | 31 |
32 |
33 | ); 34 | } 35 | -------------------------------------------------------------------------------- /src/components/GistView.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import React from 'react'; 4 | import Gist from 'react-gist'; 5 | import DisableBodyScroll from './DisableBodyScroll'; 6 | 7 | import { FaTimes } from 'react-icons/fa'; 8 | 9 | interface Props { 10 | id: string; 11 | setShow: React.Dispatch> | (() => void); 12 | } 13 | 14 | export default function GistView(props: Props) { 15 | const { id, setShow } = props; 16 | 17 | return ( 18 | <> 19 |
20 | 23 |
29 | 30 |
31 |
32 | 33 | 34 | ); 35 | } 36 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nextjs14-data-fetching-examples", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "contentful": "^10.6.16", 13 | "daisyui": "^4.5.0", 14 | "framer-motion": "^10.17.12", 15 | "next": "14.0.4", 16 | "nextjs13-progress": "^1.2.5", 17 | "react": "^18.2.0", 18 | "react-dom": "^18.2.0", 19 | "react-embed": "^3.7.0", 20 | "react-gist": "^1.2.4", 21 | "react-icons": "^4.12.0", 22 | "swr": "^2.2.4" 23 | }, 24 | "devDependencies": { 25 | "@types/node": "^20.10.8", 26 | "@types/react": "^18.2.47", 27 | "@types/react-dom": "^18.2.18", 28 | "autoprefixer": "^10.4.16", 29 | "eslint": "^8.56.0", 30 | "eslint-config-next": "14.0.4", 31 | "postcss": "^8.4.33", 32 | "tailwindcss": "^3.4.1", 33 | "typescript": "^5.3.3" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/components/Players/Spotify.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ModalRoot from '@/components/modals/ModalRoot'; 3 | 4 | interface Props { 5 | url: string; 6 | className?: string; 7 | show: boolean; 8 | setShow: React.Dispatch> | (() => void); 9 | } 10 | 11 | export default function Spotify(props: Props) { 12 | const { url, className, show, setShow } = props; 13 | 14 | return ( 15 | 16 |
17 | 25 | 31 |
32 |
33 | ); 34 | } 35 | -------------------------------------------------------------------------------- /src/app/server-example/ServerExampleView.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Link from '@/components/Link'; 3 | import SongCard from '@/components/SongCard'; 4 | 5 | import { I_SongItem } from '@/interfaces/contentful.interfaces'; 6 | 7 | import { BiCodeAlt } from 'react-icons/bi'; 8 | 9 | interface Props { 10 | songs: I_SongItem[]; 11 | } 12 | 13 | export default function ServerExampleView(props: Props) { 14 | const { songs } = props; 15 | return ( 16 |
17 |

Server Example

18 |
19 | 20 | Go Back 21 | 22 | 23 | 24 | Show Code 25 | 26 |
27 | {songs.map((song, i) => ( 28 | 29 | ))} 30 |
31 | ); 32 | } 33 | -------------------------------------------------------------------------------- /src/components/Players/YouTubeVideo.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ModalRoot from '@/components/modals/ModalRoot'; 3 | 4 | interface Props { 5 | url: string; 6 | className?: string; 7 | show: boolean; 8 | setShow: React.Dispatch>; 9 | } 10 | 11 | export default function YouTubeVideo(props: Props) { 12 | const { url, className, show, setShow } = props; 13 | 14 | return ( 15 | 16 |
17 | 26 | 32 |
33 |
34 | ); 35 | } 36 | -------------------------------------------------------------------------------- /src/components/Players/AppleMusic.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ModalRoot from '@/components/modals/ModalRoot'; 3 | 4 | interface Props { 5 | url: string; 6 | className?: string; 7 | show: boolean; 8 | setShow: React.Dispatch>; 9 | } 10 | 11 | export default function AppleMusic(props: Props) { 12 | const { url, className, show, setShow } = props; 13 | 14 | return ( 15 | 16 |
17 | 24 | 30 |
31 |
32 | ); 33 | } 34 | -------------------------------------------------------------------------------- /src/components/SongPlayer.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import React from 'react'; 4 | import FullScreenLoader from './FullScreenLoader'; 5 | 6 | import dynamic from 'next/dynamic'; 7 | const Spotify = dynamic(() => import('./Players/Spotify'), { 8 | loading: () => , 9 | }); 10 | const SoundCloud = dynamic(() => import('./Players/SoundCloud'), { 11 | loading: () => , 12 | }); 13 | 14 | import fetchSong from '@/lib/server/fetchSong'; 15 | import useSWR from 'swr'; 16 | 17 | interface Props { 18 | slug: string; 19 | show: boolean; 20 | setShow: React.Dispatch> | (() => void); 21 | } 22 | 23 | export default function SongPlayer(props: Props) { 24 | const { slug, show, setShow } = props; 25 | const { data: song, error, isLoading } = useSWR(slug, fetchSong); 26 | 27 | if (isLoading) { 28 | return ; 29 | } 30 | 31 | if (!song) return
Failed to load song
; 32 | 33 | if (song.spotifyUrl) { 34 | return ; 35 | } else { 36 | return ; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/SongCard.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import React, { useState } from 'react'; 4 | import Image from 'next/image'; 5 | import SongPlayer from './SongPlayer'; 6 | 7 | import { FaPlay } from 'react-icons/fa'; 8 | 9 | import { I_SongItem } from '@/interfaces/contentful.interfaces'; 10 | 11 | const SongCard = (props: { song: I_SongItem }) => { 12 | const { song } = props; 13 | 14 | const [selectedSong, setSelectedSong] = useState(''); 15 | const [showPlayer, setShowPlayer] = useState(false); 16 | 17 | const handlePlay = (slug: string) => { 18 | setSelectedSong(slug); 19 | setShowPlayer(true); 20 | }; 21 | 22 | return ( 23 | <> 24 |
25 | {song.title} 32 |
33 |
34 |
{song.title}
35 |
36 |
{song.duration}
37 | 40 |
41 |
42 |
43 |
44 | {showPlayer ? : null} 45 | 46 | ); 47 | }; 48 | 49 | export default SongCard; 50 | -------------------------------------------------------------------------------- /src/components/modals/ModalRoot.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react'; 2 | import { AnimatePresence, motion } from 'framer-motion'; 3 | import GistView from '../GistView'; 4 | 5 | import { FaTimesCircle } from 'react-icons/fa'; 6 | 7 | interface Props { 8 | className?: string; 9 | children?: React.ReactNode; 10 | show: boolean; 11 | setShow: React.Dispatch>; 12 | clickBgToClose?: boolean; 13 | } 14 | 15 | export default function ModalRoot(props: Props) { 16 | const { className, children, show, setShow, clickBgToClose = false } = props; 17 | const classes = ['fixed top-0 right-0 bottom-0 left-0 z-50 bg-black/80 flex items-center justify-center px-4']; 18 | if (className) classes.push(className); 19 | 20 | const [showCode, setShowCode] = useState(false); 21 | 22 | return ( 23 | 24 | {show ? ( 25 | clickBgToClose && setShow(false)} 32 | > 33 |
34 | 40 |
41 | {children} 42 | 45 | {showCode ? : null} 46 |
47 | ) : null} 48 |
49 | ); 50 | } 51 | -------------------------------------------------------------------------------- /src/app/client-example/ClientExampleView.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import React, { useState } from 'react'; 4 | import Link from '@/components/Link'; 5 | import BoxLoader from '@/components/BoxLoader'; 6 | import SongCard from '@/components/SongCard'; 7 | import GistView from '@/components/GistView'; 8 | 9 | import useSwr from 'swr'; 10 | import fetchSongs from '@/lib/server/fetchSongs'; 11 | 12 | import { LuRefreshCcw } from 'react-icons/lu'; 13 | import { BiCodeAlt } from 'react-icons/bi'; 14 | 15 | export default function ClientExampleView() { 16 | const { data: songs, isLoading, isValidating, mutate } = useSwr('songs', fetchSongs); 17 | const [showCode, setShowCode] = useState(false); 18 | 19 | if (isLoading) { 20 | return ; 21 | } 22 | 23 | if (!songs) { 24 | return
Failed to load songs
; 25 | } 26 | 27 | return ( 28 | <> 29 |
30 |

Client Example

31 |
32 | 33 | Go Back 34 | 35 | 41 | 45 |
46 | {songs.map((song, i) => ( 47 | 48 | ))} 49 |
50 | {showCode ? : null} 51 | 52 | ); 53 | } 54 | -------------------------------------------------------------------------------- /src/interfaces/contentful.interfaces.tsx: -------------------------------------------------------------------------------- 1 | export interface I_SongItem { 2 | id: string; 3 | title: string; 4 | slug: string; 5 | releaseDate: string; 6 | duration: string; 7 | genre: string; 8 | } 9 | 10 | export interface I_SongDetails extends I_SongItem { 11 | soundCloudUrl: string; 12 | spotifyUrl: string; 13 | appleMusicUrl: string; 14 | deezerUrl: string; 15 | youTubeVideoUrl: string; 16 | amazonMusicUrl: string; 17 | createdAt: string; 18 | updatedAt: string; 19 | } 20 | 21 | export interface I_Song { 22 | metadata: I_Metadata; 23 | sys: I_System; 24 | fields: I_SongFields; 25 | } 26 | 27 | export interface I_AlbumItem { 28 | id: string; 29 | title: string; 30 | slug: string; 31 | releaseDate: string; 32 | genre: string; 33 | } 34 | 35 | export interface I_AlbumDetails extends I_AlbumItem { 36 | artist: string; 37 | soundCloudUrl: string; 38 | createdAt: string; 39 | updatedAt: string; 40 | } 41 | 42 | export interface I_Album { 43 | metadata: I_Metadata; 44 | sys: I_System; 45 | fields: I_AlbumsFields; 46 | } 47 | 48 | export interface I_AlbumsFields { 49 | title: string; 50 | slug: string; 51 | genre: I_Genre; 52 | artist: I_Artist; 53 | releaseDate: string; 54 | soundCloudUrl: string; 55 | } 56 | 57 | interface I_Metadata { 58 | tags: any[]; 59 | } 60 | 61 | interface I_System { 62 | space: I_Link; 63 | id: string; 64 | type: string; 65 | createdAt: string; 66 | updatedAt: string; 67 | environment: I_Link; 68 | revision: number; 69 | contentType: I_Link; 70 | locale: string; 71 | } 72 | 73 | interface I_Link { 74 | sys: { 75 | type: string; 76 | linkType: string; 77 | id: string; 78 | }; 79 | } 80 | 81 | interface I_SongFields { 82 | title: string; 83 | slug: string; 84 | artist: I_Artist; 85 | genre?: I_Genre; 86 | releaseDate: string; 87 | duration: string; 88 | soundCloudUrl: string; 89 | spotifyUrl?: string; 90 | appleMusicUrl?: string; 91 | deezerUrl?: string; 92 | youTubeVideoUrl?: string; 93 | amazonMusicUrl?: string; 94 | } 95 | 96 | interface I_Artist { 97 | metadata: I_Metadata; 98 | sys: I_System; 99 | fields: I_ArtistFields; 100 | } 101 | 102 | interface I_ArtistFields { 103 | name: string; 104 | slug: string; 105 | image: I_Image; 106 | bio: string; 107 | url: string; 108 | } 109 | 110 | interface I_Image { 111 | metadata: I_Metadata; 112 | sys: I_System; 113 | fields: I_ImageFields; 114 | } 115 | 116 | interface I_ImageFields { 117 | title: string; 118 | description: string; 119 | file: I_FileDetails; 120 | } 121 | 122 | interface I_FileDetails { 123 | url: string; 124 | details: { 125 | size: number; 126 | image: { 127 | width: number; 128 | height: number; 129 | }; 130 | }; 131 | fileName: string; 132 | contentType: string; 133 | } 134 | 135 | interface I_Genre { 136 | metadata: I_Metadata; 137 | sys: I_System; 138 | fields: { 139 | name: string; 140 | }; 141 | } 142 | -------------------------------------------------------------------------------- /src/assets/svg/github.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 66 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /src/lib/server/contentful.tsx: -------------------------------------------------------------------------------- 1 | import { Entry, EntryCollection, createClient } from 'contentful'; 2 | 3 | import { 4 | I_Song, 5 | I_SongItem, 6 | I_SongDetails, 7 | I_Album, 8 | I_AlbumDetails, 9 | I_AlbumItem, 10 | } from '@/interfaces/contentful.interfaces'; 11 | 12 | type ContentfulConfig = { 13 | space: string; 14 | accessToken: string; 15 | }; 16 | 17 | const clientConfig: ContentfulConfig = { 18 | space: process.env.CONTENTFUL_SPACE_ID!, 19 | accessToken: process.env.CONTENTFUL_TOKEN!, 20 | }; 21 | 22 | const client = createClient(clientConfig); 23 | 24 | interface LinkObject { 25 | 'en-US': { 26 | sys: { 27 | type: string; 28 | linkType: string; 29 | id: string; 30 | }; 31 | }; 32 | } 33 | 34 | export function createLinkObject(id: string): LinkObject { 35 | return { 36 | 'en-US': { 37 | sys: { 38 | type: 'Link', 39 | linkType: 'Entry', 40 | id: id, 41 | }, 42 | }, 43 | }; 44 | } 45 | 46 | export async function getEntry(contentType: string, slug: string) { 47 | const entries = await client.getEntries({ 48 | content_type: contentType, 49 | 'fields.slug': slug, 50 | }); 51 | if (entries.items.length > 0) return entries; 52 | console.log(`Error getting Entries.`); 53 | } 54 | 55 | export async function getSlugs(contentType: string) { 56 | const entries = await client.getEntries({ 57 | content_type: contentType, 58 | select: ['fields.slug'], 59 | }); 60 | if (entries.items) { 61 | let slugs: string[] = []; 62 | entries.items.forEach((entry: any) => { 63 | slugs.push(entry.fields.slug); 64 | }); 65 | return slugs; 66 | } 67 | console.log(`Error getting Entries for.`); 68 | } 69 | 70 | export async function getSongs(skip?: number, limit?: number) { 71 | const config: any = { 72 | content_type: 'song', 73 | order: '-fields.releaseDate,fields.trackNumber', 74 | }; 75 | if (skip !== null) config.skip = skip; 76 | if (limit !== null) config.limit = limit; 77 | 78 | const entries = await client.getEntries(config); 79 | if (entries.items) { 80 | //@ts-ignore 81 | return entries.items as I_Song[]; 82 | } 83 | console.log(`Error getting Entries.`); 84 | } 85 | 86 | export async function getSong(slug: string) { 87 | const entries = await client.getEntries({ 88 | content_type: 'song', 89 | 'fields.slug': slug, 90 | }); 91 | 92 | // @ts-ignore 93 | if (entries.items.length > 0) return entries.items[0] as I_Song; 94 | console.log(`Error getting Entries.`); 95 | } 96 | 97 | export async function getAlbums(skip?: number, limit?: number) { 98 | const config: any = { 99 | content_type: 'album', 100 | order: '-fields.releaseDate', 101 | }; 102 | if (skip !== null) config.skip = skip; 103 | if (limit !== null) config.limit = limit; 104 | 105 | const entries = await client.getEntries(config); 106 | if (entries.items) { 107 | //@ts-ignore 108 | return entries.items as I_Album[]; 109 | } 110 | console.log(`Error getting Entries.`); 111 | } 112 | 113 | export async function getAlbum(slug: string) { 114 | const entries = await client.getEntries({ 115 | content_type: 'album', 116 | 'fields.slug': slug, 117 | }); 118 | 119 | // @ts-ignore 120 | if (entries.items.length > 0) return entries.items[0] as I_Album; 121 | console.log(`Error getting Entries.`); 122 | } 123 | 124 | export function mapAlbums(albums: I_Album[]) { 125 | return albums.map(album => { 126 | return { 127 | id: album.sys.id, 128 | title: album.fields.title, 129 | slug: album.fields.slug, 130 | releaseDate: album.fields.releaseDate, 131 | genre: album.fields.genre?.fields.name ?? '', 132 | } as I_AlbumItem; 133 | }) as I_AlbumItem[]; 134 | } 135 | 136 | export function mapAlbumDetails(album: I_Album) { 137 | return { 138 | id: album.sys.id, 139 | title: album.fields.title, 140 | slug: album.fields.slug, 141 | releaseDate: album.fields.releaseDate, 142 | genre: album.fields.genre?.fields.name ?? '', 143 | artist: album.fields.artist?.fields.name ?? '', 144 | soundCloudUrl: album.fields.soundCloudUrl, 145 | createdAt: album.sys.createdAt, 146 | updatedAt: album.sys.updatedAt, 147 | } as I_AlbumDetails; 148 | } 149 | 150 | export async function getAlbumTracks(album: string) { 151 | const config: any = { 152 | content_type: 'song', 153 | order: 'fields.trackNumber', 154 | 'fields.album.sys.contentType.sys.id': 'album', 155 | 'fields.album.fields.title[match]': album, 156 | }; 157 | 158 | const entries = await client.getEntries(config); 159 | if (entries.items) { 160 | return entries.items; 161 | } 162 | console.log(`Error getting Entries.`); 163 | } 164 | 165 | export async function getPostsMeta(skip?: number, limit?: number) { 166 | const config: any = { 167 | content_type: 'blogPost', 168 | select: 'sys,fields.title,fields.slug,fields.publishDate,fields.thumb,fields.coverImage,fields.excerpt,fields.tags', 169 | order: '-fields.publishDate', 170 | }; 171 | if (skip !== null) config.skip = skip; 172 | if (limit !== null) config.limit = limit; 173 | 174 | const entries = await client.getEntries(config); 175 | if (entries.items) { 176 | return entries.items; 177 | } 178 | console.log(`Error getting Entries.`); 179 | } 180 | 181 | export async function getPosts(skip?: number, limit?: number, ignoreSlug?: string) { 182 | const config: any = { 183 | content_type: 'blogPost', 184 | order: '-fields.publishDate', 185 | }; 186 | if (skip !== null) config.skip = skip; 187 | if (limit !== null) config.limit = limit; 188 | if (ignoreSlug) config['fields.slug[ne]'] = ignoreSlug; 189 | 190 | const entries = await client.getEntries(config); 191 | if (entries.items) { 192 | return entries.items; 193 | } 194 | console.log(`Error getting Entries.`); 195 | } 196 | 197 | export async function getPostsBySlug(skip?: number, limit?: number, slug?: string) { 198 | const config: any = { 199 | content_type: 'blogPost', 200 | order: '-fields.publishDate', 201 | }; 202 | if (skip !== null) config.skip = skip; 203 | if (limit !== null) config.limit = limit; 204 | if (slug) { 205 | config['fields.category.sys.contentType.sys.id'] = 'blogCategory'; 206 | config['fields.category.fields.slug'] = slug; 207 | } 208 | 209 | const entries = await client.getEntries(config); 210 | if (entries.items) { 211 | return entries.items; 212 | } 213 | console.log(`Error getting Entries.`); 214 | } 215 | 216 | export async function getCategories() { 217 | const config: any = { 218 | content_type: 'blogCategory', 219 | order: 'fields.name', 220 | }; 221 | 222 | const entries = await client.getEntries(config); 223 | if (entries.items) { 224 | return entries.items; 225 | } 226 | console.log(`Error getting Entries.`); 227 | } 228 | 229 | export function contentfulImageData(imgObj: any) { 230 | return { 231 | url: 'https:' + imgObj.fields.file.url, 232 | alt: imgObj.fields.title, 233 | description: imgObj.fields.description, 234 | }; 235 | } 236 | 237 | export function contentfulDate(str: string): string { 238 | const dateAr = str.split('-'); 239 | const newDate = `${dateAr[1]}/${dateAr[2]}/${dateAr[0]}`; 240 | const date = new Date(newDate); 241 | const options = { year: 'numeric', month: 'long', day: 'numeric' } as const; 242 | return date.toLocaleDateString('en-US', options); 243 | } 244 | 245 | export const mapSong = (song: I_Song) => { 246 | const songItem: I_SongItem = { 247 | id: song.sys.id, 248 | title: song.fields.title, 249 | slug: song.fields.slug, 250 | releaseDate: song.fields.releaseDate, 251 | genre: song.fields.genre?.fields.name ?? '', 252 | duration: song.fields.duration, 253 | }; 254 | return songItem; 255 | }; 256 | 257 | export const mapSongDetails = (song: I_Song) => { 258 | const songItem: I_SongDetails = { 259 | id: song.sys.id, 260 | title: song.fields.title, 261 | slug: song.fields.slug, 262 | releaseDate: song.fields.releaseDate, 263 | genre: song.fields.genre?.fields.name ?? '', 264 | duration: song.fields.duration, 265 | soundCloudUrl: song.fields.soundCloudUrl, 266 | spotifyUrl: song.fields?.spotifyUrl ?? '', 267 | appleMusicUrl: song.fields?.appleMusicUrl ?? '', 268 | deezerUrl: song.fields?.deezerUrl ?? '', 269 | youTubeVideoUrl: song.fields?.youTubeVideoUrl ?? '', 270 | amazonMusicUrl: song.fields?.amazonMusicUrl ?? '', 271 | createdAt: song.sys.createdAt, 272 | updatedAt: song.sys.updatedAt, 273 | }; 274 | return songItem; 275 | }; 276 | 277 | export const mapSongs = (songs: I_Song[]) => { 278 | return songs.map(mapSong); 279 | }; 280 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Welcome to the cutting-edge world of web development! In this blog post, we will delve into the exciting realm of data fetching paradigms in Next.js 14, a popular React framework that has been revolutionizing how developers build user interfaces and handle data. With the introduction of server components and enhanced data fetching techniques, Next.js 14 offers developers more flexibility and power in building dynamic, efficient, and scalable web applications. 2 | 3 | We will focus on two key data fetching paradigms that are pivotal to modern web development: 4 | 5 | 1. **Fetching in a Server Component Using a Server Action**: This paradigm leverages the server-side capabilities of Next.js to fetch data. We'll explore how server components can efficiently retrieve data directly from the server, bypassing the need for client-side fetching and thus improving performance and reducing bandwidth usage. 6 | 7 | 2. **Fetching in a Client Component Using a Server Action in Combination with SWR**: In contrast to the first paradigm, this approach involves fetching data in client components. We'll discuss how to utilize server actions in combination with Stale-While-Revalidate (SWR), a strategy that provides a smooth user experience by immediately showing cached data (stale), then updating it with fresh data from the server (revalidate). This method is ideal for dynamic data that changes frequently, ensuring that users always have the most up-to-date information. 8 | 9 | The code samples in this tutorial are from a demo project I created. The full code is available on GitHub (links at the bottom). 10 | 11 | ## Server-side Fetching 12 | 13 | In Next.js 14, server-side fetching optimizes data management and enhances user experience, especially when handling heavy UI components. Let's explore this through an example: 14 | 15 | #### The `page.tsx` Component 16 | 17 | - **Functionality**: `page.tsx` initiates the data fetching process. It imports a server action, `fetchSongs()`, which fetches data from the server, reducing client-side load. 18 | - **Loading Component**: While data is being fetched, `loading.tsx` displays a "Loading songs" message, keeping users informed about the process. 19 | 20 | ```jsx 21 | // page.tsx 22 | import React from 'react'; 23 | import BoxLoader from '@/components/BoxLoader'; 24 | 25 | import dynamic from 'next/dynamic'; 26 | const ServerExampleView = dynamic(() => import('./ServerExampleView'), { 27 | loading: () => , 28 | }); 29 | 30 | import fetchSongs from '@/lib/server/fetchSongs'; 31 | 32 | export default async function ServerExamplePage() { 33 | const songs = await fetchSongs(); 34 | 35 | return ; 36 | } 37 | ``` 38 | 39 | ```jsx 40 | // loading.tsx 41 | import React from 'react'; 42 | import BoxLoader from '@/components/BoxLoader'; 43 | 44 | export default function LoadingDeployments() { 45 | return ; 46 | } 47 | ``` 48 | #### Dynamic Rendering with Next.js 49 | 50 | - **Transition Phases**: After fetching data, we use Next.js's `dynamic` to transition from the loading message to displaying the songs. During this, users see a "Loading UI" message, essential for heavy UI components. 51 | - **Performance Benefits**: This server-side fetching, combined with dynamic rendering, significantly improves performance. It ensures faster load times and a responsive UI, enhancing the overall user experience. 52 | 53 | ```jsx 54 | // ServerExampleView.tsx 55 | import React from 'react'; 56 | import Link from '@/components/Link'; 57 | import SongCard from '@/components/SongCard'; 58 | 59 | import { I_SongItem } from '@/interfaces/contentful.interfaces'; 60 | 61 | import { BiCodeAlt } from 'react-icons/bi'; 62 | 63 | interface Props { 64 | songs: I_SongItem[]; 65 | } 66 | 67 | export default function ServerExampleView(props: Props) { 68 | const { songs } = props; 69 | return ( 70 |
71 |

Server Example

72 |
73 | 74 | Go Back 75 | 76 | 77 | 78 | Show Code 79 | 80 |
81 | {songs.map((song, i) => ( 82 | 83 | ))} 84 |
85 | ); 86 | } 87 | ``` 88 | 89 | This is a powerful approach for efficient data management and optimized UI rendering. This technique is particularly valuable for applications with complex UI components, offering a seamless and responsive user experience. 90 | 91 | ## Client-side Fetching 92 | 93 | Next.js 14 not only excels in server-side data fetching but also provides robust client-side fetching capabilities. This section will illustrate how to effectively use client components in combination with SWR (Stale-While-Revalidate) for dynamic data handling. Unlike the server-side example, here the fetching process occurs directly within the client component. 94 | 95 | #### Setting Up the Client Component 96 | 97 | Our example utilizes a client component, which we clearly distinguish by placing a 'use client' directive at the top of the file. This directive signals Next.js to treat this component specifically for client-side operations. 98 | 99 | - **Dynamic Component Loading**: Similar to the server-side example, we employ Next.js's `dynamic` to load our client view. This dynamic loading is key in managing the rendering process based on the data availability. 100 | 101 | - **Integrating SWR**: The unique aspect of this client-side approach is the integration of SWR for fetching data. SWR is a strategy that first shows cached (stale) data, then updates it with fresh data from the server (revalidate). In our case, it calls the server action directly within the client component, handling data fetching and updating seamlessly. 102 | 103 | ```jsx 104 | 'use client'; 105 | // ClientExampleView.tsx 106 | 107 | import React, { useState } from 'react'; 108 | import Link from '@/components/Link'; 109 | import BoxLoader from '@/components/BoxLoader'; 110 | import SongCard from '@/components/SongCard'; 111 | import GistView from '@/components/GistView'; 112 | 113 | import useSwr from 'swr'; 114 | import fetchSongs from '@/lib/server/fetchSongs'; 115 | 116 | import { LuRefreshCcw } from 'react-icons/lu'; 117 | import { BiCodeAlt } from 'react-icons/bi'; 118 | 119 | export default function ClientExampleView() { 120 | const { data: songs, isLoading, isValidating, mutate } = useSwr('songs', fetchSongs); 121 | const [showCode, setShowCode] = useState(false); 122 | 123 | if (isLoading) { 124 | return ; 125 | } 126 | 127 | if (!songs) { 128 | return
Failed to load songs
; 129 | } 130 | 131 | return ( 132 | <> 133 |
134 |

Client Example

135 |
136 | 137 | Go Back 138 | 139 | 145 | 149 |
150 | {songs.map((song, i) => ( 151 | 152 | ))} 153 |
154 | {showCode ? : null} 155 | 156 | ); 157 | } 158 | ``` 159 | 160 | #### Conditional Rendering and User Experience 161 | 162 | - **Loader Implementation**: As the SWR fetches the songs, we conditionally render a loader, displaying a "Loading Songs" message. This ensures that users are aware of the ongoing data fetching process. 163 | 164 | - **Order of Loading Messages**: Interestingly, in this client-side fetching scenario, the user first encounters a "Loading UI" message while the component loads. Once the component is ready, the "Loading Songs" message appears during the data fetching phase. This sequence is the reverse of what we observed in the server-side example. 165 | 166 | 167 | #### Performance Comparison 168 | 169 | - **Experience and Load Time**: Upon testing, we observe that the user experience and load time between the server-side and client-side examples are quite similar. While the server-side approach might hold a slight advantage in certain scenarios, the client-side fetching with SWR provides a highly responsive and efficient data handling experience. 170 | 171 | Client-side fetching in Next.js 14, particularly with the use of SWR and dynamic client components, offers a powerful and flexible approach for managing data in real-time. This method enhances the user experience by ensuring that the UI is always responsive and up-to-date with the latest data, making it a valuable tool in the modern web developer's arsenal. 172 | 173 | --- 174 | 175 | ## Embracing the Future of Data Fetching in Next.js 14 176 | 177 | It's clear that Next.js offers powerful and versatile solutions for handling data in modern web applications. Through our examples of server-side and client-side fetching, we've seen how this framework adapts to different requirements, offering developers the flexibility to choose the most efficient approach based on their specific use case. 178 | 179 | ### Key Takeaways 180 | 181 | - **Server-side vs. Client-side Fetching**: The server-side fetching approach, with its focus on performance and efficiency, is ideal for applications with heavy UI components. In contrast, client-side fetching using SWR offers a more dynamic and real-time data handling experience, especially beneficial for applications requiring frequent data updates. 182 | 183 | - **Performance and User Experience**: Both paradigms provide excellent performance and user experience, with server-side fetching having a slight edge in load times. However, the choice between them should be based on the specific needs of your application and the nature of the data being handled. 184 | 185 | - **Flexibility of Next.js 14**: These paradigms highlight the flexibility of Next.js 14 in catering to diverse development scenarios. Whether it's server-side efficiency or client-side dynamism, Next.js provides the tools to create responsive, efficient, and user-friendly web applications. 186 | 187 | 188 | ### Moving Forward 189 | 190 | As web technologies continue to evolve, staying abreast of these advancements is crucial. Next.js 14, with its innovative data fetching techniques, stands at the forefront of this evolution, empowering developers to build more sophisticated and performant web applications. 191 | 192 | We encourage you to experiment with these paradigms in your projects. Explore the possibilities, measure the performance impacts, and tailor your approach to best suit your application's needs. With Next.js 14, the future of web development is not just about building applications; it's about creating experiences that are as efficient as they are engaging. 193 | 194 | --- 195 | 196 | ## Links 197 | 198 | 1. [GitHub Repo](https://github.com/designly1/nextjs14-data-fetching-examples) 199 | 2. [Demo Site](https://nextjs14-data-fetching-examples.vercel.app/) 200 | 201 | --- 202 | 203 | Thank you for taking the time to read my article and I hope you found it useful (or at the very least, mildly entertaining). For more great information about web dev, systems administration and cloud computing, please read the [Designly Blog](https://blog.designly.biz). Also, please leave your comments! I love to hear thoughts from my readers. 204 | 205 | If you want to support me, please follow me on [Spotify](https://open.spotify.com/album/2fq9S51ULwPmRM6EdCJAaJ?si=USeZDsmYSKSaGpcrSJJsGg)! 206 | 207 | Also, be sure to check out my new app called [Snoozle](https://snoozle.io)! It's an app that generates bedtime stories for kids using AI and it's completely free to use! 208 | 209 | Looking for a web developer? I'm available for hire! To inquire, please fill out a [contact form](https://designly.biz/contact). -------------------------------------------------------------------------------- /src/assets/svg/designly-logo-trans.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 10 | 11 | 12 | 13 | 52 | 53 | 54 | 60 | 81 | 87 | 107 | 121 | 124 | 137 | 138 | 139 | 140 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | contentful: 9 | specifier: ^10.6.16 10 | version: 10.6.16 11 | daisyui: 12 | specifier: ^4.5.0 13 | version: 4.5.0(postcss@8.4.33) 14 | framer-motion: 15 | specifier: ^10.17.12 16 | version: 10.17.12(react-dom@18.2.0)(react@18.2.0) 17 | next: 18 | specifier: 14.0.4 19 | version: 14.0.4(react-dom@18.2.0)(react@18.2.0) 20 | nextjs13-progress: 21 | specifier: ^1.2.5 22 | version: 1.2.5(next@14.0.4)(react@18.2.0) 23 | react: 24 | specifier: ^18.2.0 25 | version: 18.2.0 26 | react-dom: 27 | specifier: ^18.2.0 28 | version: 18.2.0(react@18.2.0) 29 | react-embed: 30 | specifier: ^3.7.0 31 | version: 3.7.0(react-dom@18.2.0)(react@18.2.0) 32 | react-gist: 33 | specifier: ^1.2.4 34 | version: 1.2.4(react@18.2.0) 35 | react-icons: 36 | specifier: ^4.12.0 37 | version: 4.12.0(react@18.2.0) 38 | swr: 39 | specifier: ^2.2.4 40 | version: 2.2.4(react@18.2.0) 41 | 42 | devDependencies: 43 | '@types/node': 44 | specifier: ^20.10.8 45 | version: 20.10.8 46 | '@types/react': 47 | specifier: ^18.2.47 48 | version: 18.2.47 49 | '@types/react-dom': 50 | specifier: ^18.2.18 51 | version: 18.2.18 52 | autoprefixer: 53 | specifier: ^10.4.16 54 | version: 10.4.16(postcss@8.4.33) 55 | eslint: 56 | specifier: ^8.56.0 57 | version: 8.56.0 58 | eslint-config-next: 59 | specifier: 14.0.4 60 | version: 14.0.4(eslint@8.56.0)(typescript@5.3.3) 61 | postcss: 62 | specifier: ^8.4.33 63 | version: 8.4.33 64 | tailwindcss: 65 | specifier: ^3.4.1 66 | version: 3.4.1 67 | typescript: 68 | specifier: ^5.3.3 69 | version: 5.3.3 70 | 71 | packages: 72 | 73 | /@aashutoshrathi/word-wrap@1.2.6: 74 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} 75 | engines: {node: '>=0.10.0'} 76 | dev: true 77 | 78 | /@alloc/quick-lru@5.2.0: 79 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 80 | engines: {node: '>=10'} 81 | dev: true 82 | 83 | /@babel/runtime@7.23.8: 84 | resolution: {integrity: sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==} 85 | engines: {node: '>=6.9.0'} 86 | dependencies: 87 | regenerator-runtime: 0.14.1 88 | 89 | /@contentful/rich-text-types@16.3.0: 90 | resolution: {integrity: sha512-OfQmAu5bxE0CgQA3WlUleVej+ifFG/iXmB2DmUl4EyWyFue1aiIvfjxQhcDRSH4n1jUNMJ6L1wInZL8uV5m3TQ==} 91 | engines: {node: '>=6.0.0'} 92 | dev: false 93 | 94 | /@emotion/is-prop-valid@0.8.8: 95 | resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} 96 | requiresBuild: true 97 | dependencies: 98 | '@emotion/memoize': 0.7.4 99 | dev: false 100 | optional: true 101 | 102 | /@emotion/memoize@0.7.4: 103 | resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} 104 | requiresBuild: true 105 | dev: false 106 | optional: true 107 | 108 | /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): 109 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 110 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 111 | peerDependencies: 112 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 113 | dependencies: 114 | eslint: 8.56.0 115 | eslint-visitor-keys: 3.4.3 116 | dev: true 117 | 118 | /@eslint-community/regexpp@4.10.0: 119 | resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} 120 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 121 | dev: true 122 | 123 | /@eslint/eslintrc@2.1.4: 124 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} 125 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 126 | dependencies: 127 | ajv: 6.12.6 128 | debug: 4.3.4 129 | espree: 9.6.1 130 | globals: 13.24.0 131 | ignore: 5.3.0 132 | import-fresh: 3.3.0 133 | js-yaml: 4.1.0 134 | minimatch: 3.1.2 135 | strip-json-comments: 3.1.1 136 | transitivePeerDependencies: 137 | - supports-color 138 | dev: true 139 | 140 | /@eslint/js@8.56.0: 141 | resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} 142 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 143 | dev: true 144 | 145 | /@humanwhocodes/config-array@0.11.13: 146 | resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} 147 | engines: {node: '>=10.10.0'} 148 | dependencies: 149 | '@humanwhocodes/object-schema': 2.0.1 150 | debug: 4.3.4 151 | minimatch: 3.1.2 152 | transitivePeerDependencies: 153 | - supports-color 154 | dev: true 155 | 156 | /@humanwhocodes/module-importer@1.0.1: 157 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 158 | engines: {node: '>=12.22'} 159 | dev: true 160 | 161 | /@humanwhocodes/object-schema@2.0.1: 162 | resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} 163 | dev: true 164 | 165 | /@isaacs/cliui@8.0.2: 166 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 167 | engines: {node: '>=12'} 168 | dependencies: 169 | string-width: 5.1.2 170 | string-width-cjs: /string-width@4.2.3 171 | strip-ansi: 7.1.0 172 | strip-ansi-cjs: /strip-ansi@6.0.1 173 | wrap-ansi: 8.1.0 174 | wrap-ansi-cjs: /wrap-ansi@7.0.0 175 | dev: true 176 | 177 | /@jridgewell/gen-mapping@0.3.3: 178 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 179 | engines: {node: '>=6.0.0'} 180 | dependencies: 181 | '@jridgewell/set-array': 1.1.2 182 | '@jridgewell/sourcemap-codec': 1.4.15 183 | '@jridgewell/trace-mapping': 0.3.20 184 | dev: true 185 | 186 | /@jridgewell/resolve-uri@3.1.1: 187 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 188 | engines: {node: '>=6.0.0'} 189 | dev: true 190 | 191 | /@jridgewell/set-array@1.1.2: 192 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 193 | engines: {node: '>=6.0.0'} 194 | dev: true 195 | 196 | /@jridgewell/sourcemap-codec@1.4.15: 197 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 198 | 199 | /@jridgewell/trace-mapping@0.3.20: 200 | resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} 201 | dependencies: 202 | '@jridgewell/resolve-uri': 3.1.1 203 | '@jridgewell/sourcemap-codec': 1.4.15 204 | dev: true 205 | 206 | /@next/env@14.0.4: 207 | resolution: {integrity: sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ==} 208 | dev: false 209 | 210 | /@next/eslint-plugin-next@14.0.4: 211 | resolution: {integrity: sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ==} 212 | dependencies: 213 | glob: 7.1.7 214 | dev: true 215 | 216 | /@next/swc-darwin-arm64@14.0.4: 217 | resolution: {integrity: sha512-mF05E/5uPthWzyYDyptcwHptucf/jj09i2SXBPwNzbgBNc+XnwzrL0U6BmPjQeOL+FiB+iG1gwBeq7mlDjSRPg==} 218 | engines: {node: '>= 10'} 219 | cpu: [arm64] 220 | os: [darwin] 221 | requiresBuild: true 222 | dev: false 223 | optional: true 224 | 225 | /@next/swc-darwin-x64@14.0.4: 226 | resolution: {integrity: sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw==} 227 | engines: {node: '>= 10'} 228 | cpu: [x64] 229 | os: [darwin] 230 | requiresBuild: true 231 | dev: false 232 | optional: true 233 | 234 | /@next/swc-linux-arm64-gnu@14.0.4: 235 | resolution: {integrity: sha512-VwwZKrBQo/MGb1VOrxJ6LrKvbpo7UbROuyMRvQKTFKhNaXjUmKTu7wxVkIuCARAfiI8JpaWAnKR+D6tzpCcM4w==} 236 | engines: {node: '>= 10'} 237 | cpu: [arm64] 238 | os: [linux] 239 | requiresBuild: true 240 | dev: false 241 | optional: true 242 | 243 | /@next/swc-linux-arm64-musl@14.0.4: 244 | resolution: {integrity: sha512-8QftwPEW37XxXoAwsn+nXlodKWHfpMaSvt81W43Wh8dv0gkheD+30ezWMcFGHLI71KiWmHK5PSQbTQGUiidvLQ==} 245 | engines: {node: '>= 10'} 246 | cpu: [arm64] 247 | os: [linux] 248 | requiresBuild: true 249 | dev: false 250 | optional: true 251 | 252 | /@next/swc-linux-x64-gnu@14.0.4: 253 | resolution: {integrity: sha512-/s/Pme3VKfZAfISlYVq2hzFS8AcAIOTnoKupc/j4WlvF6GQ0VouS2Q2KEgPuO1eMBwakWPB1aYFIA4VNVh667A==} 254 | engines: {node: '>= 10'} 255 | cpu: [x64] 256 | os: [linux] 257 | requiresBuild: true 258 | dev: false 259 | optional: true 260 | 261 | /@next/swc-linux-x64-musl@14.0.4: 262 | resolution: {integrity: sha512-m8z/6Fyal4L9Bnlxde5g2Mfa1Z7dasMQyhEhskDATpqr+Y0mjOBZcXQ7G5U+vgL22cI4T7MfvgtrM2jdopqWaw==} 263 | engines: {node: '>= 10'} 264 | cpu: [x64] 265 | os: [linux] 266 | requiresBuild: true 267 | dev: false 268 | optional: true 269 | 270 | /@next/swc-win32-arm64-msvc@14.0.4: 271 | resolution: {integrity: sha512-7Wv4PRiWIAWbm5XrGz3D8HUkCVDMMz9igffZG4NB1p4u1KoItwx9qjATHz88kwCEal/HXmbShucaslXCQXUM5w==} 272 | engines: {node: '>= 10'} 273 | cpu: [arm64] 274 | os: [win32] 275 | requiresBuild: true 276 | dev: false 277 | optional: true 278 | 279 | /@next/swc-win32-ia32-msvc@14.0.4: 280 | resolution: {integrity: sha512-zLeNEAPULsl0phfGb4kdzF/cAVIfaC7hY+kt0/d+y9mzcZHsMS3hAS829WbJ31DkSlVKQeHEjZHIdhN+Pg7Gyg==} 281 | engines: {node: '>= 10'} 282 | cpu: [ia32] 283 | os: [win32] 284 | requiresBuild: true 285 | dev: false 286 | optional: true 287 | 288 | /@next/swc-win32-x64-msvc@14.0.4: 289 | resolution: {integrity: sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==} 290 | engines: {node: '>= 10'} 291 | cpu: [x64] 292 | os: [win32] 293 | requiresBuild: true 294 | dev: false 295 | optional: true 296 | 297 | /@nodelib/fs.scandir@2.1.5: 298 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 299 | engines: {node: '>= 8'} 300 | dependencies: 301 | '@nodelib/fs.stat': 2.0.5 302 | run-parallel: 1.2.0 303 | dev: true 304 | 305 | /@nodelib/fs.stat@2.0.5: 306 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 307 | engines: {node: '>= 8'} 308 | dev: true 309 | 310 | /@nodelib/fs.walk@1.2.8: 311 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 312 | engines: {node: '>= 8'} 313 | dependencies: 314 | '@nodelib/fs.scandir': 2.1.5 315 | fastq: 1.16.0 316 | dev: true 317 | 318 | /@pkgjs/parseargs@0.11.0: 319 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 320 | engines: {node: '>=14'} 321 | requiresBuild: true 322 | dev: true 323 | optional: true 324 | 325 | /@rushstack/eslint-patch@1.6.1: 326 | resolution: {integrity: sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==} 327 | dev: true 328 | 329 | /@swc/helpers@0.5.2: 330 | resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} 331 | dependencies: 332 | tslib: 2.6.2 333 | dev: false 334 | 335 | /@types/js-cookie@2.2.7: 336 | resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==} 337 | dev: false 338 | 339 | /@types/json5@0.0.29: 340 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 341 | dev: true 342 | 343 | /@types/node@20.10.8: 344 | resolution: {integrity: sha512-f8nQs3cLxbAFc00vEU59yf9UyGUftkPaLGfvbVOIDdx2i1b8epBqj2aNGyP19fiyXWvlmZ7qC1XLjAzw/OKIeA==} 345 | dependencies: 346 | undici-types: 5.26.5 347 | dev: true 348 | 349 | /@types/nprogress@0.2.3: 350 | resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==} 351 | dev: false 352 | 353 | /@types/prop-types@15.7.11: 354 | resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} 355 | dev: true 356 | 357 | /@types/react-dom@18.2.18: 358 | resolution: {integrity: sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==} 359 | dependencies: 360 | '@types/react': 18.2.47 361 | dev: true 362 | 363 | /@types/react@18.2.47: 364 | resolution: {integrity: sha512-xquNkkOirwyCgoClNk85BjP+aqnIS+ckAJ8i37gAbDs14jfW/J23f2GItAf33oiUPQnqNMALiFeoM9Y5mbjpVQ==} 365 | dependencies: 366 | '@types/prop-types': 15.7.11 367 | '@types/scheduler': 0.16.8 368 | csstype: 3.1.3 369 | dev: true 370 | 371 | /@types/scheduler@0.16.8: 372 | resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} 373 | dev: true 374 | 375 | /@typescript-eslint/parser@6.18.1(eslint@8.56.0)(typescript@5.3.3): 376 | resolution: {integrity: sha512-zct/MdJnVaRRNy9e84XnVtRv9Vf91/qqe+hZJtKanjojud4wAVy/7lXxJmMyX6X6J+xc6c//YEWvpeif8cAhWA==} 377 | engines: {node: ^16.0.0 || >=18.0.0} 378 | peerDependencies: 379 | eslint: ^7.0.0 || ^8.0.0 380 | typescript: '*' 381 | peerDependenciesMeta: 382 | typescript: 383 | optional: true 384 | dependencies: 385 | '@typescript-eslint/scope-manager': 6.18.1 386 | '@typescript-eslint/types': 6.18.1 387 | '@typescript-eslint/typescript-estree': 6.18.1(typescript@5.3.3) 388 | '@typescript-eslint/visitor-keys': 6.18.1 389 | debug: 4.3.4 390 | eslint: 8.56.0 391 | typescript: 5.3.3 392 | transitivePeerDependencies: 393 | - supports-color 394 | dev: true 395 | 396 | /@typescript-eslint/scope-manager@6.18.1: 397 | resolution: {integrity: sha512-BgdBwXPFmZzaZUuw6wKiHKIovms97a7eTImjkXCZE04TGHysG+0hDQPmygyvgtkoB/aOQwSM/nWv3LzrOIQOBw==} 398 | engines: {node: ^16.0.0 || >=18.0.0} 399 | dependencies: 400 | '@typescript-eslint/types': 6.18.1 401 | '@typescript-eslint/visitor-keys': 6.18.1 402 | dev: true 403 | 404 | /@typescript-eslint/types@6.18.1: 405 | resolution: {integrity: sha512-4TuMAe+tc5oA7wwfqMtB0Y5OrREPF1GeJBAjqwgZh1lEMH5PJQgWgHGfYufVB51LtjD+peZylmeyxUXPfENLCw==} 406 | engines: {node: ^16.0.0 || >=18.0.0} 407 | dev: true 408 | 409 | /@typescript-eslint/typescript-estree@6.18.1(typescript@5.3.3): 410 | resolution: {integrity: sha512-fv9B94UAhywPRhUeeV/v+3SBDvcPiLxRZJw/xZeeGgRLQZ6rLMG+8krrJUyIf6s1ecWTzlsbp0rlw7n9sjufHA==} 411 | engines: {node: ^16.0.0 || >=18.0.0} 412 | peerDependencies: 413 | typescript: '*' 414 | peerDependenciesMeta: 415 | typescript: 416 | optional: true 417 | dependencies: 418 | '@typescript-eslint/types': 6.18.1 419 | '@typescript-eslint/visitor-keys': 6.18.1 420 | debug: 4.3.4 421 | globby: 11.1.0 422 | is-glob: 4.0.3 423 | minimatch: 9.0.3 424 | semver: 7.5.4 425 | ts-api-utils: 1.0.3(typescript@5.3.3) 426 | typescript: 5.3.3 427 | transitivePeerDependencies: 428 | - supports-color 429 | dev: true 430 | 431 | /@typescript-eslint/visitor-keys@6.18.1: 432 | resolution: {integrity: sha512-/kvt0C5lRqGoCfsbmm7/CwMqoSkY3zzHLIjdhHZQW3VFrnz7ATecOHR7nb7V+xn4286MBxfnQfQhAmCI0u+bJA==} 433 | engines: {node: ^16.0.0 || >=18.0.0} 434 | dependencies: 435 | '@typescript-eslint/types': 6.18.1 436 | eslint-visitor-keys: 3.4.3 437 | dev: true 438 | 439 | /@ungap/structured-clone@1.2.0: 440 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} 441 | dev: true 442 | 443 | /@xobotyi/scrollbar-width@1.9.5: 444 | resolution: {integrity: sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==} 445 | dev: false 446 | 447 | /acorn-jsx@5.3.2(acorn@8.11.3): 448 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 449 | peerDependencies: 450 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 451 | dependencies: 452 | acorn: 8.11.3 453 | dev: true 454 | 455 | /acorn@8.11.3: 456 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} 457 | engines: {node: '>=0.4.0'} 458 | hasBin: true 459 | dev: true 460 | 461 | /ajv@6.12.6: 462 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 463 | dependencies: 464 | fast-deep-equal: 3.1.3 465 | fast-json-stable-stringify: 2.1.0 466 | json-schema-traverse: 0.4.1 467 | uri-js: 4.4.1 468 | dev: true 469 | 470 | /ansi-regex@5.0.1: 471 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 472 | engines: {node: '>=8'} 473 | dev: true 474 | 475 | /ansi-regex@6.0.1: 476 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 477 | engines: {node: '>=12'} 478 | dev: true 479 | 480 | /ansi-styles@4.3.0: 481 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 482 | engines: {node: '>=8'} 483 | dependencies: 484 | color-convert: 2.0.1 485 | dev: true 486 | 487 | /ansi-styles@6.2.1: 488 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 489 | engines: {node: '>=12'} 490 | dev: true 491 | 492 | /any-promise@1.3.0: 493 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 494 | dev: true 495 | 496 | /anymatch@3.1.3: 497 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 498 | engines: {node: '>= 8'} 499 | dependencies: 500 | normalize-path: 3.0.0 501 | picomatch: 2.3.1 502 | dev: true 503 | 504 | /arg@5.0.2: 505 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 506 | dev: true 507 | 508 | /argparse@2.0.1: 509 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 510 | dev: true 511 | 512 | /aria-query@5.3.0: 513 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 514 | dependencies: 515 | dequal: 2.0.3 516 | dev: true 517 | 518 | /array-buffer-byte-length@1.0.0: 519 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} 520 | dependencies: 521 | call-bind: 1.0.5 522 | is-array-buffer: 3.0.2 523 | dev: true 524 | 525 | /array-includes@3.1.7: 526 | resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} 527 | engines: {node: '>= 0.4'} 528 | dependencies: 529 | call-bind: 1.0.5 530 | define-properties: 1.2.1 531 | es-abstract: 1.22.3 532 | get-intrinsic: 1.2.2 533 | is-string: 1.0.7 534 | dev: true 535 | 536 | /array-union@2.1.0: 537 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 538 | engines: {node: '>=8'} 539 | dev: true 540 | 541 | /array.prototype.findlastindex@1.2.3: 542 | resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} 543 | engines: {node: '>= 0.4'} 544 | dependencies: 545 | call-bind: 1.0.5 546 | define-properties: 1.2.1 547 | es-abstract: 1.22.3 548 | es-shim-unscopables: 1.0.2 549 | get-intrinsic: 1.2.2 550 | dev: true 551 | 552 | /array.prototype.flat@1.3.2: 553 | resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} 554 | engines: {node: '>= 0.4'} 555 | dependencies: 556 | call-bind: 1.0.5 557 | define-properties: 1.2.1 558 | es-abstract: 1.22.3 559 | es-shim-unscopables: 1.0.2 560 | dev: true 561 | 562 | /array.prototype.flatmap@1.3.2: 563 | resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} 564 | engines: {node: '>= 0.4'} 565 | dependencies: 566 | call-bind: 1.0.5 567 | define-properties: 1.2.1 568 | es-abstract: 1.22.3 569 | es-shim-unscopables: 1.0.2 570 | dev: true 571 | 572 | /array.prototype.tosorted@1.1.2: 573 | resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} 574 | dependencies: 575 | call-bind: 1.0.5 576 | define-properties: 1.2.1 577 | es-abstract: 1.22.3 578 | es-shim-unscopables: 1.0.2 579 | get-intrinsic: 1.2.2 580 | dev: true 581 | 582 | /arraybuffer.prototype.slice@1.0.2: 583 | resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} 584 | engines: {node: '>= 0.4'} 585 | dependencies: 586 | array-buffer-byte-length: 1.0.0 587 | call-bind: 1.0.5 588 | define-properties: 1.2.1 589 | es-abstract: 1.22.3 590 | get-intrinsic: 1.2.2 591 | is-array-buffer: 3.0.2 592 | is-shared-array-buffer: 1.0.2 593 | dev: true 594 | 595 | /ast-types-flow@0.0.8: 596 | resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} 597 | dev: true 598 | 599 | /asynciterator.prototype@1.0.0: 600 | resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} 601 | dependencies: 602 | has-symbols: 1.0.3 603 | dev: true 604 | 605 | /asynckit@0.4.0: 606 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 607 | dev: false 608 | 609 | /autoprefixer@10.4.16(postcss@8.4.33): 610 | resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} 611 | engines: {node: ^10 || ^12 || >=14} 612 | hasBin: true 613 | peerDependencies: 614 | postcss: ^8.1.0 615 | dependencies: 616 | browserslist: 4.22.2 617 | caniuse-lite: 1.0.30001576 618 | fraction.js: 4.3.7 619 | normalize-range: 0.1.2 620 | picocolors: 1.0.0 621 | postcss: 8.4.33 622 | postcss-value-parser: 4.2.0 623 | dev: true 624 | 625 | /available-typed-arrays@1.0.5: 626 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} 627 | engines: {node: '>= 0.4'} 628 | dev: true 629 | 630 | /axe-core@4.7.0: 631 | resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} 632 | engines: {node: '>=4'} 633 | dev: true 634 | 635 | /axios@1.6.5: 636 | resolution: {integrity: sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==} 637 | dependencies: 638 | follow-redirects: 1.15.4 639 | form-data: 4.0.0 640 | proxy-from-env: 1.1.0 641 | transitivePeerDependencies: 642 | - debug 643 | dev: false 644 | 645 | /axobject-query@3.2.1: 646 | resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} 647 | dependencies: 648 | dequal: 2.0.3 649 | dev: true 650 | 651 | /balanced-match@1.0.2: 652 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 653 | dev: true 654 | 655 | /binary-extensions@2.2.0: 656 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 657 | engines: {node: '>=8'} 658 | dev: true 659 | 660 | /brace-expansion@1.1.11: 661 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 662 | dependencies: 663 | balanced-match: 1.0.2 664 | concat-map: 0.0.1 665 | dev: true 666 | 667 | /brace-expansion@2.0.1: 668 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 669 | dependencies: 670 | balanced-match: 1.0.2 671 | dev: true 672 | 673 | /braces@3.0.2: 674 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 675 | engines: {node: '>=8'} 676 | dependencies: 677 | fill-range: 7.0.1 678 | dev: true 679 | 680 | /browserslist@4.22.2: 681 | resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} 682 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 683 | hasBin: true 684 | dependencies: 685 | caniuse-lite: 1.0.30001576 686 | electron-to-chromium: 1.4.626 687 | node-releases: 2.0.14 688 | update-browserslist-db: 1.0.13(browserslist@4.22.2) 689 | dev: true 690 | 691 | /busboy@1.6.0: 692 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 693 | engines: {node: '>=10.16.0'} 694 | dependencies: 695 | streamsearch: 1.1.0 696 | dev: false 697 | 698 | /call-bind@1.0.5: 699 | resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} 700 | dependencies: 701 | function-bind: 1.1.2 702 | get-intrinsic: 1.2.2 703 | set-function-length: 1.1.1 704 | 705 | /callsites@3.1.0: 706 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 707 | engines: {node: '>=6'} 708 | dev: true 709 | 710 | /camelcase-css@2.0.1: 711 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 712 | engines: {node: '>= 6'} 713 | 714 | /caniuse-lite@1.0.30001576: 715 | resolution: {integrity: sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==} 716 | 717 | /chalk@4.1.2: 718 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 719 | engines: {node: '>=10'} 720 | dependencies: 721 | ansi-styles: 4.3.0 722 | supports-color: 7.2.0 723 | dev: true 724 | 725 | /chokidar@3.5.3: 726 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 727 | engines: {node: '>= 8.10.0'} 728 | dependencies: 729 | anymatch: 3.1.3 730 | braces: 3.0.2 731 | glob-parent: 5.1.2 732 | is-binary-path: 2.1.0 733 | is-glob: 4.0.3 734 | normalize-path: 3.0.0 735 | readdirp: 3.6.0 736 | optionalDependencies: 737 | fsevents: 2.3.3 738 | dev: true 739 | 740 | /client-only@0.0.1: 741 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} 742 | dev: false 743 | 744 | /color-convert@2.0.1: 745 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 746 | engines: {node: '>=7.0.0'} 747 | dependencies: 748 | color-name: 1.1.4 749 | dev: true 750 | 751 | /color-name@1.1.4: 752 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 753 | dev: true 754 | 755 | /combined-stream@1.0.8: 756 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 757 | engines: {node: '>= 0.8'} 758 | dependencies: 759 | delayed-stream: 1.0.0 760 | dev: false 761 | 762 | /commander@4.1.1: 763 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 764 | engines: {node: '>= 6'} 765 | dev: true 766 | 767 | /concat-map@0.0.1: 768 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 769 | dev: true 770 | 771 | /contentful-resolve-response@1.8.1: 772 | resolution: {integrity: sha512-VXGK2c8dBIGcRCknqudKmkDr2PzsUYfjLN6hhx71T09UzoXOdA/c0kfDhsf/BBCBWPWcLaUgaJEFU0lCo45TSg==} 773 | engines: {node: '>=4.7.2'} 774 | dependencies: 775 | fast-copy: 2.1.7 776 | dev: false 777 | 778 | /contentful-sdk-core@8.1.2: 779 | resolution: {integrity: sha512-XZvX2JMJF4YiICXLrHFv59KBHaQJ6ElqAP8gSNgnCu4x+pPG7Y1bC2JMNOiyAgJuGQGVUOcNZ5PmK+tsNEayYw==} 780 | engines: {node: '>=12'} 781 | dependencies: 782 | fast-copy: 2.1.7 783 | lodash.isplainobject: 4.0.6 784 | lodash.isstring: 4.0.1 785 | p-throttle: 4.1.1 786 | qs: 6.11.2 787 | dev: false 788 | 789 | /contentful@10.6.16: 790 | resolution: {integrity: sha512-3PF4VQAWOhy7CiGYm4KtQn9AN81p77BgSCDQNndFfWdggs6/b2wMWXkmN1UGSJI7OKBRpbiy12mNrr7SrvuVIA==} 791 | engines: {node: '>=12'} 792 | dependencies: 793 | '@contentful/rich-text-types': 16.3.0 794 | axios: 1.6.5 795 | contentful-resolve-response: 1.8.1 796 | contentful-sdk-core: 8.1.2 797 | json-stringify-safe: 5.0.1 798 | type-fest: 4.9.0 799 | transitivePeerDependencies: 800 | - debug 801 | dev: false 802 | 803 | /copy-to-clipboard@3.3.3: 804 | resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} 805 | dependencies: 806 | toggle-selection: 1.0.6 807 | dev: false 808 | 809 | /cross-spawn@7.0.3: 810 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 811 | engines: {node: '>= 8'} 812 | dependencies: 813 | path-key: 3.1.1 814 | shebang-command: 2.0.0 815 | which: 2.0.2 816 | dev: true 817 | 818 | /css-in-js-utils@3.1.0: 819 | resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} 820 | dependencies: 821 | hyphenate-style-name: 1.0.4 822 | dev: false 823 | 824 | /css-selector-tokenizer@0.8.0: 825 | resolution: {integrity: sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==} 826 | dependencies: 827 | cssesc: 3.0.0 828 | fastparse: 1.1.2 829 | dev: false 830 | 831 | /css-tree@1.1.3: 832 | resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} 833 | engines: {node: '>=8.0.0'} 834 | dependencies: 835 | mdn-data: 2.0.14 836 | source-map: 0.6.1 837 | dev: false 838 | 839 | /cssesc@3.0.0: 840 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 841 | engines: {node: '>=4'} 842 | hasBin: true 843 | 844 | /csstype@3.1.3: 845 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 846 | 847 | /culori@3.3.0: 848 | resolution: {integrity: sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ==} 849 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 850 | dev: false 851 | 852 | /daisyui@4.5.0(postcss@8.4.33): 853 | resolution: {integrity: sha512-RWQCPQ0vBUaxGy768O7Ku8SRQgwdoto1lDzuKeVOcMtYghuSbUY7NoPoMK+k8JH4s1J02OvpNAgtB9MeKpZIwg==} 854 | engines: {node: '>=16.9.0'} 855 | dependencies: 856 | css-selector-tokenizer: 0.8.0 857 | culori: 3.3.0 858 | picocolors: 1.0.0 859 | postcss-js: 4.0.1(postcss@8.4.33) 860 | transitivePeerDependencies: 861 | - postcss 862 | dev: false 863 | 864 | /damerau-levenshtein@1.0.8: 865 | resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} 866 | dev: true 867 | 868 | /debug@2.6.9: 869 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 870 | peerDependencies: 871 | supports-color: '*' 872 | peerDependenciesMeta: 873 | supports-color: 874 | optional: true 875 | dependencies: 876 | ms: 2.0.0 877 | dev: false 878 | 879 | /debug@3.2.7: 880 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 881 | peerDependencies: 882 | supports-color: '*' 883 | peerDependenciesMeta: 884 | supports-color: 885 | optional: true 886 | dependencies: 887 | ms: 2.1.3 888 | dev: true 889 | 890 | /debug@4.3.4: 891 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 892 | engines: {node: '>=6.0'} 893 | peerDependencies: 894 | supports-color: '*' 895 | peerDependenciesMeta: 896 | supports-color: 897 | optional: true 898 | dependencies: 899 | ms: 2.1.2 900 | dev: true 901 | 902 | /decode-uri-component@0.2.2: 903 | resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} 904 | engines: {node: '>=0.10'} 905 | dev: false 906 | 907 | /deep-is@0.1.4: 908 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 909 | dev: true 910 | 911 | /deepmerge@4.3.1: 912 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 913 | engines: {node: '>=0.10.0'} 914 | dev: false 915 | 916 | /define-data-property@1.1.1: 917 | resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} 918 | engines: {node: '>= 0.4'} 919 | dependencies: 920 | get-intrinsic: 1.2.2 921 | gopd: 1.0.1 922 | has-property-descriptors: 1.0.1 923 | 924 | /define-properties@1.2.1: 925 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} 926 | engines: {node: '>= 0.4'} 927 | dependencies: 928 | define-data-property: 1.1.1 929 | has-property-descriptors: 1.0.1 930 | object-keys: 1.1.1 931 | dev: true 932 | 933 | /delayed-stream@1.0.0: 934 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 935 | engines: {node: '>=0.4.0'} 936 | dev: false 937 | 938 | /dequal@2.0.3: 939 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 940 | engines: {node: '>=6'} 941 | dev: true 942 | 943 | /didyoumean@1.2.2: 944 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 945 | dev: true 946 | 947 | /dir-glob@3.0.1: 948 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 949 | engines: {node: '>=8'} 950 | dependencies: 951 | path-type: 4.0.0 952 | dev: true 953 | 954 | /dlv@1.1.3: 955 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 956 | dev: true 957 | 958 | /doctrine@2.1.0: 959 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 960 | engines: {node: '>=0.10.0'} 961 | dependencies: 962 | esutils: 2.0.3 963 | dev: true 964 | 965 | /doctrine@3.0.0: 966 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 967 | engines: {node: '>=6.0.0'} 968 | dependencies: 969 | esutils: 2.0.3 970 | dev: true 971 | 972 | /eastasianwidth@0.2.0: 973 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 974 | dev: true 975 | 976 | /electron-to-chromium@1.4.626: 977 | resolution: {integrity: sha512-f7/be56VjRRQk+Ric6PmIrEtPcIqsn3tElyAu9Sh6egha2VLJ82qwkcOdcnT06W+Pb6RUulV1ckzrGbKzVcTHg==} 978 | dev: true 979 | 980 | /emoji-regex@8.0.0: 981 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 982 | dev: true 983 | 984 | /emoji-regex@9.2.2: 985 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 986 | dev: true 987 | 988 | /enhanced-resolve@5.15.0: 989 | resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} 990 | engines: {node: '>=10.13.0'} 991 | dependencies: 992 | graceful-fs: 4.2.11 993 | tapable: 2.2.1 994 | dev: true 995 | 996 | /error-stack-parser@2.1.4: 997 | resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} 998 | dependencies: 999 | stackframe: 1.3.4 1000 | dev: false 1001 | 1002 | /es-abstract@1.22.3: 1003 | resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} 1004 | engines: {node: '>= 0.4'} 1005 | dependencies: 1006 | array-buffer-byte-length: 1.0.0 1007 | arraybuffer.prototype.slice: 1.0.2 1008 | available-typed-arrays: 1.0.5 1009 | call-bind: 1.0.5 1010 | es-set-tostringtag: 2.0.2 1011 | es-to-primitive: 1.2.1 1012 | function.prototype.name: 1.1.6 1013 | get-intrinsic: 1.2.2 1014 | get-symbol-description: 1.0.0 1015 | globalthis: 1.0.3 1016 | gopd: 1.0.1 1017 | has-property-descriptors: 1.0.1 1018 | has-proto: 1.0.1 1019 | has-symbols: 1.0.3 1020 | hasown: 2.0.0 1021 | internal-slot: 1.0.6 1022 | is-array-buffer: 3.0.2 1023 | is-callable: 1.2.7 1024 | is-negative-zero: 2.0.2 1025 | is-regex: 1.1.4 1026 | is-shared-array-buffer: 1.0.2 1027 | is-string: 1.0.7 1028 | is-typed-array: 1.1.12 1029 | is-weakref: 1.0.2 1030 | object-inspect: 1.13.1 1031 | object-keys: 1.1.1 1032 | object.assign: 4.1.5 1033 | regexp.prototype.flags: 1.5.1 1034 | safe-array-concat: 1.0.1 1035 | safe-regex-test: 1.0.1 1036 | string.prototype.trim: 1.2.8 1037 | string.prototype.trimend: 1.0.7 1038 | string.prototype.trimstart: 1.0.7 1039 | typed-array-buffer: 1.0.0 1040 | typed-array-byte-length: 1.0.0 1041 | typed-array-byte-offset: 1.0.0 1042 | typed-array-length: 1.0.4 1043 | unbox-primitive: 1.0.2 1044 | which-typed-array: 1.1.13 1045 | dev: true 1046 | 1047 | /es-iterator-helpers@1.0.15: 1048 | resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} 1049 | dependencies: 1050 | asynciterator.prototype: 1.0.0 1051 | call-bind: 1.0.5 1052 | define-properties: 1.2.1 1053 | es-abstract: 1.22.3 1054 | es-set-tostringtag: 2.0.2 1055 | function-bind: 1.1.2 1056 | get-intrinsic: 1.2.2 1057 | globalthis: 1.0.3 1058 | has-property-descriptors: 1.0.1 1059 | has-proto: 1.0.1 1060 | has-symbols: 1.0.3 1061 | internal-slot: 1.0.6 1062 | iterator.prototype: 1.1.2 1063 | safe-array-concat: 1.0.1 1064 | dev: true 1065 | 1066 | /es-set-tostringtag@2.0.2: 1067 | resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} 1068 | engines: {node: '>= 0.4'} 1069 | dependencies: 1070 | get-intrinsic: 1.2.2 1071 | has-tostringtag: 1.0.0 1072 | hasown: 2.0.0 1073 | dev: true 1074 | 1075 | /es-shim-unscopables@1.0.2: 1076 | resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} 1077 | dependencies: 1078 | hasown: 2.0.0 1079 | dev: true 1080 | 1081 | /es-to-primitive@1.2.1: 1082 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 1083 | engines: {node: '>= 0.4'} 1084 | dependencies: 1085 | is-callable: 1.2.7 1086 | is-date-object: 1.0.5 1087 | is-symbol: 1.0.4 1088 | dev: true 1089 | 1090 | /escalade@3.1.1: 1091 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1092 | engines: {node: '>=6'} 1093 | dev: true 1094 | 1095 | /escape-string-regexp@4.0.0: 1096 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1097 | engines: {node: '>=10'} 1098 | dev: true 1099 | 1100 | /eslint-config-next@14.0.4(eslint@8.56.0)(typescript@5.3.3): 1101 | resolution: {integrity: sha512-9/xbOHEQOmQtqvQ1UsTQZpnA7SlDMBtuKJ//S4JnoyK3oGLhILKXdBgu/UO7lQo/2xOykQULS1qQ6p2+EpHgAQ==} 1102 | peerDependencies: 1103 | eslint: ^7.23.0 || ^8.0.0 1104 | typescript: '>=3.3.1' 1105 | peerDependenciesMeta: 1106 | typescript: 1107 | optional: true 1108 | dependencies: 1109 | '@next/eslint-plugin-next': 14.0.4 1110 | '@rushstack/eslint-patch': 1.6.1 1111 | '@typescript-eslint/parser': 6.18.1(eslint@8.56.0)(typescript@5.3.3) 1112 | eslint: 8.56.0 1113 | eslint-import-resolver-node: 0.3.9 1114 | eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) 1115 | eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) 1116 | eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) 1117 | eslint-plugin-react: 7.33.2(eslint@8.56.0) 1118 | eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0) 1119 | typescript: 5.3.3 1120 | transitivePeerDependencies: 1121 | - eslint-import-resolver-webpack 1122 | - supports-color 1123 | dev: true 1124 | 1125 | /eslint-import-resolver-node@0.3.9: 1126 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} 1127 | dependencies: 1128 | debug: 3.2.7 1129 | is-core-module: 2.13.1 1130 | resolve: 1.22.8 1131 | transitivePeerDependencies: 1132 | - supports-color 1133 | dev: true 1134 | 1135 | /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0): 1136 | resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} 1137 | engines: {node: ^14.18.0 || >=16.0.0} 1138 | peerDependencies: 1139 | eslint: '*' 1140 | eslint-plugin-import: '*' 1141 | dependencies: 1142 | debug: 4.3.4 1143 | enhanced-resolve: 5.15.0 1144 | eslint: 8.56.0 1145 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) 1146 | eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) 1147 | fast-glob: 3.3.2 1148 | get-tsconfig: 4.7.2 1149 | is-core-module: 2.13.1 1150 | is-glob: 4.0.3 1151 | transitivePeerDependencies: 1152 | - '@typescript-eslint/parser' 1153 | - eslint-import-resolver-node 1154 | - eslint-import-resolver-webpack 1155 | - supports-color 1156 | dev: true 1157 | 1158 | /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): 1159 | resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} 1160 | engines: {node: '>=4'} 1161 | peerDependencies: 1162 | '@typescript-eslint/parser': '*' 1163 | eslint: '*' 1164 | eslint-import-resolver-node: '*' 1165 | eslint-import-resolver-typescript: '*' 1166 | eslint-import-resolver-webpack: '*' 1167 | peerDependenciesMeta: 1168 | '@typescript-eslint/parser': 1169 | optional: true 1170 | eslint: 1171 | optional: true 1172 | eslint-import-resolver-node: 1173 | optional: true 1174 | eslint-import-resolver-typescript: 1175 | optional: true 1176 | eslint-import-resolver-webpack: 1177 | optional: true 1178 | dependencies: 1179 | '@typescript-eslint/parser': 6.18.1(eslint@8.56.0)(typescript@5.3.3) 1180 | debug: 3.2.7 1181 | eslint: 8.56.0 1182 | eslint-import-resolver-node: 0.3.9 1183 | eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) 1184 | transitivePeerDependencies: 1185 | - supports-color 1186 | dev: true 1187 | 1188 | /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): 1189 | resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} 1190 | engines: {node: '>=4'} 1191 | peerDependencies: 1192 | '@typescript-eslint/parser': '*' 1193 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 1194 | peerDependenciesMeta: 1195 | '@typescript-eslint/parser': 1196 | optional: true 1197 | dependencies: 1198 | '@typescript-eslint/parser': 6.18.1(eslint@8.56.0)(typescript@5.3.3) 1199 | array-includes: 3.1.7 1200 | array.prototype.findlastindex: 1.2.3 1201 | array.prototype.flat: 1.3.2 1202 | array.prototype.flatmap: 1.3.2 1203 | debug: 3.2.7 1204 | doctrine: 2.1.0 1205 | eslint: 8.56.0 1206 | eslint-import-resolver-node: 0.3.9 1207 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) 1208 | hasown: 2.0.0 1209 | is-core-module: 2.13.1 1210 | is-glob: 4.0.3 1211 | minimatch: 3.1.2 1212 | object.fromentries: 2.0.7 1213 | object.groupby: 1.0.1 1214 | object.values: 1.1.7 1215 | semver: 6.3.1 1216 | tsconfig-paths: 3.15.0 1217 | transitivePeerDependencies: 1218 | - eslint-import-resolver-typescript 1219 | - eslint-import-resolver-webpack 1220 | - supports-color 1221 | dev: true 1222 | 1223 | /eslint-plugin-jsx-a11y@6.8.0(eslint@8.56.0): 1224 | resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} 1225 | engines: {node: '>=4.0'} 1226 | peerDependencies: 1227 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1228 | dependencies: 1229 | '@babel/runtime': 7.23.8 1230 | aria-query: 5.3.0 1231 | array-includes: 3.1.7 1232 | array.prototype.flatmap: 1.3.2 1233 | ast-types-flow: 0.0.8 1234 | axe-core: 4.7.0 1235 | axobject-query: 3.2.1 1236 | damerau-levenshtein: 1.0.8 1237 | emoji-regex: 9.2.2 1238 | es-iterator-helpers: 1.0.15 1239 | eslint: 8.56.0 1240 | hasown: 2.0.0 1241 | jsx-ast-utils: 3.3.5 1242 | language-tags: 1.0.9 1243 | minimatch: 3.1.2 1244 | object.entries: 1.1.7 1245 | object.fromentries: 2.0.7 1246 | dev: true 1247 | 1248 | /eslint-plugin-react-hooks@4.6.0(eslint@8.56.0): 1249 | resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} 1250 | engines: {node: '>=10'} 1251 | peerDependencies: 1252 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 1253 | dependencies: 1254 | eslint: 8.56.0 1255 | dev: true 1256 | 1257 | /eslint-plugin-react@7.33.2(eslint@8.56.0): 1258 | resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} 1259 | engines: {node: '>=4'} 1260 | peerDependencies: 1261 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1262 | dependencies: 1263 | array-includes: 3.1.7 1264 | array.prototype.flatmap: 1.3.2 1265 | array.prototype.tosorted: 1.1.2 1266 | doctrine: 2.1.0 1267 | es-iterator-helpers: 1.0.15 1268 | eslint: 8.56.0 1269 | estraverse: 5.3.0 1270 | jsx-ast-utils: 3.3.5 1271 | minimatch: 3.1.2 1272 | object.entries: 1.1.7 1273 | object.fromentries: 2.0.7 1274 | object.hasown: 1.1.3 1275 | object.values: 1.1.7 1276 | prop-types: 15.8.1 1277 | resolve: 2.0.0-next.5 1278 | semver: 6.3.1 1279 | string.prototype.matchall: 4.0.10 1280 | dev: true 1281 | 1282 | /eslint-scope@7.2.2: 1283 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 1284 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1285 | dependencies: 1286 | esrecurse: 4.3.0 1287 | estraverse: 5.3.0 1288 | dev: true 1289 | 1290 | /eslint-visitor-keys@3.4.3: 1291 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1292 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1293 | dev: true 1294 | 1295 | /eslint@8.56.0: 1296 | resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} 1297 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1298 | hasBin: true 1299 | dependencies: 1300 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) 1301 | '@eslint-community/regexpp': 4.10.0 1302 | '@eslint/eslintrc': 2.1.4 1303 | '@eslint/js': 8.56.0 1304 | '@humanwhocodes/config-array': 0.11.13 1305 | '@humanwhocodes/module-importer': 1.0.1 1306 | '@nodelib/fs.walk': 1.2.8 1307 | '@ungap/structured-clone': 1.2.0 1308 | ajv: 6.12.6 1309 | chalk: 4.1.2 1310 | cross-spawn: 7.0.3 1311 | debug: 4.3.4 1312 | doctrine: 3.0.0 1313 | escape-string-regexp: 4.0.0 1314 | eslint-scope: 7.2.2 1315 | eslint-visitor-keys: 3.4.3 1316 | espree: 9.6.1 1317 | esquery: 1.5.0 1318 | esutils: 2.0.3 1319 | fast-deep-equal: 3.1.3 1320 | file-entry-cache: 6.0.1 1321 | find-up: 5.0.0 1322 | glob-parent: 6.0.2 1323 | globals: 13.24.0 1324 | graphemer: 1.4.0 1325 | ignore: 5.3.0 1326 | imurmurhash: 0.1.4 1327 | is-glob: 4.0.3 1328 | is-path-inside: 3.0.3 1329 | js-yaml: 4.1.0 1330 | json-stable-stringify-without-jsonify: 1.0.1 1331 | levn: 0.4.1 1332 | lodash.merge: 4.6.2 1333 | minimatch: 3.1.2 1334 | natural-compare: 1.4.0 1335 | optionator: 0.9.3 1336 | strip-ansi: 6.0.1 1337 | text-table: 0.2.0 1338 | transitivePeerDependencies: 1339 | - supports-color 1340 | dev: true 1341 | 1342 | /espree@9.6.1: 1343 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 1344 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1345 | dependencies: 1346 | acorn: 8.11.3 1347 | acorn-jsx: 5.3.2(acorn@8.11.3) 1348 | eslint-visitor-keys: 3.4.3 1349 | dev: true 1350 | 1351 | /esquery@1.5.0: 1352 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1353 | engines: {node: '>=0.10'} 1354 | dependencies: 1355 | estraverse: 5.3.0 1356 | dev: true 1357 | 1358 | /esrecurse@4.3.0: 1359 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1360 | engines: {node: '>=4.0'} 1361 | dependencies: 1362 | estraverse: 5.3.0 1363 | dev: true 1364 | 1365 | /estraverse@5.3.0: 1366 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1367 | engines: {node: '>=4.0'} 1368 | dev: true 1369 | 1370 | /esutils@2.0.3: 1371 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1372 | engines: {node: '>=0.10.0'} 1373 | dev: true 1374 | 1375 | /fast-copy@2.1.7: 1376 | resolution: {integrity: sha512-ozrGwyuCTAy7YgFCua8rmqmytECYk/JYAMXcswOcm0qvGoE3tPb7ivBeIHTOK2DiapBhDZgacIhzhQIKU5TCfA==} 1377 | dev: false 1378 | 1379 | /fast-deep-equal@3.1.3: 1380 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1381 | 1382 | /fast-glob@3.3.2: 1383 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 1384 | engines: {node: '>=8.6.0'} 1385 | dependencies: 1386 | '@nodelib/fs.stat': 2.0.5 1387 | '@nodelib/fs.walk': 1.2.8 1388 | glob-parent: 5.1.2 1389 | merge2: 1.4.1 1390 | micromatch: 4.0.5 1391 | dev: true 1392 | 1393 | /fast-json-stable-stringify@2.1.0: 1394 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1395 | dev: true 1396 | 1397 | /fast-levenshtein@2.0.6: 1398 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1399 | dev: true 1400 | 1401 | /fast-loops@1.1.3: 1402 | resolution: {integrity: sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==} 1403 | dev: false 1404 | 1405 | /fast-shallow-equal@1.0.0: 1406 | resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==} 1407 | dev: false 1408 | 1409 | /fastest-stable-stringify@2.0.2: 1410 | resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==} 1411 | dev: false 1412 | 1413 | /fastparse@1.1.2: 1414 | resolution: {integrity: sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==} 1415 | dev: false 1416 | 1417 | /fastq@1.16.0: 1418 | resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} 1419 | dependencies: 1420 | reusify: 1.0.4 1421 | dev: true 1422 | 1423 | /file-entry-cache@6.0.1: 1424 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1425 | engines: {node: ^10.12.0 || >=12.0.0} 1426 | dependencies: 1427 | flat-cache: 3.2.0 1428 | dev: true 1429 | 1430 | /fill-range@7.0.1: 1431 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1432 | engines: {node: '>=8'} 1433 | dependencies: 1434 | to-regex-range: 5.0.1 1435 | dev: true 1436 | 1437 | /find-up@5.0.0: 1438 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1439 | engines: {node: '>=10'} 1440 | dependencies: 1441 | locate-path: 6.0.0 1442 | path-exists: 4.0.0 1443 | dev: true 1444 | 1445 | /flat-cache@3.2.0: 1446 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} 1447 | engines: {node: ^10.12.0 || >=12.0.0} 1448 | dependencies: 1449 | flatted: 3.2.9 1450 | keyv: 4.5.4 1451 | rimraf: 3.0.2 1452 | dev: true 1453 | 1454 | /flatted@3.2.9: 1455 | resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} 1456 | dev: true 1457 | 1458 | /follow-redirects@1.15.4: 1459 | resolution: {integrity: sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==} 1460 | engines: {node: '>=4.0'} 1461 | peerDependencies: 1462 | debug: '*' 1463 | peerDependenciesMeta: 1464 | debug: 1465 | optional: true 1466 | dev: false 1467 | 1468 | /for-each@0.3.3: 1469 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 1470 | dependencies: 1471 | is-callable: 1.2.7 1472 | dev: true 1473 | 1474 | /foreground-child@3.1.1: 1475 | resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} 1476 | engines: {node: '>=14'} 1477 | dependencies: 1478 | cross-spawn: 7.0.3 1479 | signal-exit: 4.1.0 1480 | dev: true 1481 | 1482 | /form-data@4.0.0: 1483 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 1484 | engines: {node: '>= 6'} 1485 | dependencies: 1486 | asynckit: 0.4.0 1487 | combined-stream: 1.0.8 1488 | mime-types: 2.1.35 1489 | dev: false 1490 | 1491 | /fraction.js@4.3.7: 1492 | resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} 1493 | dev: true 1494 | 1495 | /framer-motion@10.17.12(react-dom@18.2.0)(react@18.2.0): 1496 | resolution: {integrity: sha512-6aaBLN2EgH/GilXwOzEalTfw5Rx9DTQJJjTrxq5bfDbGtPCzXz2GCN6ePGRpTi1ZGugLHxdU273h38ENbcdFKQ==} 1497 | peerDependencies: 1498 | react: ^18.0.0 1499 | react-dom: ^18.0.0 1500 | peerDependenciesMeta: 1501 | react: 1502 | optional: true 1503 | react-dom: 1504 | optional: true 1505 | dependencies: 1506 | react: 18.2.0 1507 | react-dom: 18.2.0(react@18.2.0) 1508 | tslib: 2.6.2 1509 | optionalDependencies: 1510 | '@emotion/is-prop-valid': 0.8.8 1511 | dev: false 1512 | 1513 | /fs.realpath@1.0.0: 1514 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1515 | dev: true 1516 | 1517 | /fsevents@2.3.3: 1518 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1519 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1520 | os: [darwin] 1521 | requiresBuild: true 1522 | dev: true 1523 | optional: true 1524 | 1525 | /function-bind@1.1.2: 1526 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1527 | 1528 | /function.prototype.name@1.1.6: 1529 | resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} 1530 | engines: {node: '>= 0.4'} 1531 | dependencies: 1532 | call-bind: 1.0.5 1533 | define-properties: 1.2.1 1534 | es-abstract: 1.22.3 1535 | functions-have-names: 1.2.3 1536 | dev: true 1537 | 1538 | /functions-have-names@1.2.3: 1539 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1540 | dev: true 1541 | 1542 | /get-intrinsic@1.2.2: 1543 | resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} 1544 | dependencies: 1545 | function-bind: 1.1.2 1546 | has-proto: 1.0.1 1547 | has-symbols: 1.0.3 1548 | hasown: 2.0.0 1549 | 1550 | /get-symbol-description@1.0.0: 1551 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1552 | engines: {node: '>= 0.4'} 1553 | dependencies: 1554 | call-bind: 1.0.5 1555 | get-intrinsic: 1.2.2 1556 | dev: true 1557 | 1558 | /get-tsconfig@4.7.2: 1559 | resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} 1560 | dependencies: 1561 | resolve-pkg-maps: 1.0.0 1562 | dev: true 1563 | 1564 | /glob-parent@5.1.2: 1565 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1566 | engines: {node: '>= 6'} 1567 | dependencies: 1568 | is-glob: 4.0.3 1569 | dev: true 1570 | 1571 | /glob-parent@6.0.2: 1572 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1573 | engines: {node: '>=10.13.0'} 1574 | dependencies: 1575 | is-glob: 4.0.3 1576 | dev: true 1577 | 1578 | /glob-to-regexp@0.4.1: 1579 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} 1580 | dev: false 1581 | 1582 | /glob@10.3.10: 1583 | resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} 1584 | engines: {node: '>=16 || 14 >=14.17'} 1585 | hasBin: true 1586 | dependencies: 1587 | foreground-child: 3.1.1 1588 | jackspeak: 2.3.6 1589 | minimatch: 9.0.3 1590 | minipass: 7.0.4 1591 | path-scurry: 1.10.1 1592 | dev: true 1593 | 1594 | /glob@7.1.7: 1595 | resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} 1596 | dependencies: 1597 | fs.realpath: 1.0.0 1598 | inflight: 1.0.6 1599 | inherits: 2.0.4 1600 | minimatch: 3.1.2 1601 | once: 1.4.0 1602 | path-is-absolute: 1.0.1 1603 | dev: true 1604 | 1605 | /glob@7.2.3: 1606 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1607 | dependencies: 1608 | fs.realpath: 1.0.0 1609 | inflight: 1.0.6 1610 | inherits: 2.0.4 1611 | minimatch: 3.1.2 1612 | once: 1.4.0 1613 | path-is-absolute: 1.0.1 1614 | dev: true 1615 | 1616 | /globals@13.24.0: 1617 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} 1618 | engines: {node: '>=8'} 1619 | dependencies: 1620 | type-fest: 0.20.2 1621 | dev: true 1622 | 1623 | /globalthis@1.0.3: 1624 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} 1625 | engines: {node: '>= 0.4'} 1626 | dependencies: 1627 | define-properties: 1.2.1 1628 | dev: true 1629 | 1630 | /globby@11.1.0: 1631 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1632 | engines: {node: '>=10'} 1633 | dependencies: 1634 | array-union: 2.1.0 1635 | dir-glob: 3.0.1 1636 | fast-glob: 3.3.2 1637 | ignore: 5.3.0 1638 | merge2: 1.4.1 1639 | slash: 3.0.0 1640 | dev: true 1641 | 1642 | /gopd@1.0.1: 1643 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 1644 | dependencies: 1645 | get-intrinsic: 1.2.2 1646 | 1647 | /graceful-fs@4.2.11: 1648 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1649 | 1650 | /graphemer@1.4.0: 1651 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1652 | dev: true 1653 | 1654 | /has-bigints@1.0.2: 1655 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1656 | dev: true 1657 | 1658 | /has-flag@4.0.0: 1659 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1660 | engines: {node: '>=8'} 1661 | dev: true 1662 | 1663 | /has-property-descriptors@1.0.1: 1664 | resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} 1665 | dependencies: 1666 | get-intrinsic: 1.2.2 1667 | 1668 | /has-proto@1.0.1: 1669 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} 1670 | engines: {node: '>= 0.4'} 1671 | 1672 | /has-symbols@1.0.3: 1673 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1674 | engines: {node: '>= 0.4'} 1675 | 1676 | /has-tostringtag@1.0.0: 1677 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1678 | engines: {node: '>= 0.4'} 1679 | dependencies: 1680 | has-symbols: 1.0.3 1681 | dev: true 1682 | 1683 | /hasown@2.0.0: 1684 | resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} 1685 | engines: {node: '>= 0.4'} 1686 | dependencies: 1687 | function-bind: 1.1.2 1688 | 1689 | /hyphenate-style-name@1.0.4: 1690 | resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} 1691 | dev: false 1692 | 1693 | /ignore@5.3.0: 1694 | resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} 1695 | engines: {node: '>= 4'} 1696 | dev: true 1697 | 1698 | /import-fresh@3.3.0: 1699 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1700 | engines: {node: '>=6'} 1701 | dependencies: 1702 | parent-module: 1.0.1 1703 | resolve-from: 4.0.0 1704 | dev: true 1705 | 1706 | /imurmurhash@0.1.4: 1707 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1708 | engines: {node: '>=0.8.19'} 1709 | dev: true 1710 | 1711 | /inflight@1.0.6: 1712 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1713 | dependencies: 1714 | once: 1.4.0 1715 | wrappy: 1.0.2 1716 | dev: true 1717 | 1718 | /inherits@2.0.4: 1719 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1720 | dev: true 1721 | 1722 | /inline-style-prefixer@7.0.0: 1723 | resolution: {integrity: sha512-I7GEdScunP1dQ6IM2mQWh6v0mOYdYmH3Bp31UecKdrcUgcURTcctSe1IECdUznSHKSmsHtjrT3CwCPI1pyxfUQ==} 1724 | dependencies: 1725 | css-in-js-utils: 3.1.0 1726 | fast-loops: 1.1.3 1727 | dev: false 1728 | 1729 | /internal-slot@1.0.6: 1730 | resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} 1731 | engines: {node: '>= 0.4'} 1732 | dependencies: 1733 | get-intrinsic: 1.2.2 1734 | hasown: 2.0.0 1735 | side-channel: 1.0.4 1736 | dev: true 1737 | 1738 | /is-array-buffer@3.0.2: 1739 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} 1740 | dependencies: 1741 | call-bind: 1.0.5 1742 | get-intrinsic: 1.2.2 1743 | is-typed-array: 1.1.12 1744 | dev: true 1745 | 1746 | /is-async-function@2.0.0: 1747 | resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} 1748 | engines: {node: '>= 0.4'} 1749 | dependencies: 1750 | has-tostringtag: 1.0.0 1751 | dev: true 1752 | 1753 | /is-bigint@1.0.4: 1754 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1755 | dependencies: 1756 | has-bigints: 1.0.2 1757 | dev: true 1758 | 1759 | /is-binary-path@2.1.0: 1760 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1761 | engines: {node: '>=8'} 1762 | dependencies: 1763 | binary-extensions: 2.2.0 1764 | dev: true 1765 | 1766 | /is-boolean-object@1.1.2: 1767 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1768 | engines: {node: '>= 0.4'} 1769 | dependencies: 1770 | call-bind: 1.0.5 1771 | has-tostringtag: 1.0.0 1772 | dev: true 1773 | 1774 | /is-callable@1.2.7: 1775 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 1776 | engines: {node: '>= 0.4'} 1777 | dev: true 1778 | 1779 | /is-core-module@2.13.1: 1780 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} 1781 | dependencies: 1782 | hasown: 2.0.0 1783 | dev: true 1784 | 1785 | /is-date-object@1.0.5: 1786 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 1787 | engines: {node: '>= 0.4'} 1788 | dependencies: 1789 | has-tostringtag: 1.0.0 1790 | dev: true 1791 | 1792 | /is-extglob@2.1.1: 1793 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1794 | engines: {node: '>=0.10.0'} 1795 | dev: true 1796 | 1797 | /is-finalizationregistry@1.0.2: 1798 | resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} 1799 | dependencies: 1800 | call-bind: 1.0.5 1801 | dev: true 1802 | 1803 | /is-fullwidth-code-point@3.0.0: 1804 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1805 | engines: {node: '>=8'} 1806 | dev: true 1807 | 1808 | /is-generator-function@1.0.10: 1809 | resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} 1810 | engines: {node: '>= 0.4'} 1811 | dependencies: 1812 | has-tostringtag: 1.0.0 1813 | dev: true 1814 | 1815 | /is-glob@4.0.3: 1816 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1817 | engines: {node: '>=0.10.0'} 1818 | dependencies: 1819 | is-extglob: 2.1.1 1820 | dev: true 1821 | 1822 | /is-map@2.0.2: 1823 | resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} 1824 | dev: true 1825 | 1826 | /is-negative-zero@2.0.2: 1827 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 1828 | engines: {node: '>= 0.4'} 1829 | dev: true 1830 | 1831 | /is-number-object@1.0.7: 1832 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 1833 | engines: {node: '>= 0.4'} 1834 | dependencies: 1835 | has-tostringtag: 1.0.0 1836 | dev: true 1837 | 1838 | /is-number@7.0.0: 1839 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1840 | engines: {node: '>=0.12.0'} 1841 | dev: true 1842 | 1843 | /is-path-inside@3.0.3: 1844 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1845 | engines: {node: '>=8'} 1846 | dev: true 1847 | 1848 | /is-regex@1.1.4: 1849 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 1850 | engines: {node: '>= 0.4'} 1851 | dependencies: 1852 | call-bind: 1.0.5 1853 | has-tostringtag: 1.0.0 1854 | dev: true 1855 | 1856 | /is-set@2.0.2: 1857 | resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} 1858 | dev: true 1859 | 1860 | /is-shared-array-buffer@1.0.2: 1861 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 1862 | dependencies: 1863 | call-bind: 1.0.5 1864 | dev: true 1865 | 1866 | /is-string@1.0.7: 1867 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 1868 | engines: {node: '>= 0.4'} 1869 | dependencies: 1870 | has-tostringtag: 1.0.0 1871 | dev: true 1872 | 1873 | /is-symbol@1.0.4: 1874 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 1875 | engines: {node: '>= 0.4'} 1876 | dependencies: 1877 | has-symbols: 1.0.3 1878 | dev: true 1879 | 1880 | /is-typed-array@1.1.12: 1881 | resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} 1882 | engines: {node: '>= 0.4'} 1883 | dependencies: 1884 | which-typed-array: 1.1.13 1885 | dev: true 1886 | 1887 | /is-weakmap@2.0.1: 1888 | resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} 1889 | dev: true 1890 | 1891 | /is-weakref@1.0.2: 1892 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 1893 | dependencies: 1894 | call-bind: 1.0.5 1895 | dev: true 1896 | 1897 | /is-weakset@2.0.2: 1898 | resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} 1899 | dependencies: 1900 | call-bind: 1.0.5 1901 | get-intrinsic: 1.2.2 1902 | dev: true 1903 | 1904 | /isarray@2.0.5: 1905 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 1906 | dev: true 1907 | 1908 | /isexe@2.0.0: 1909 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1910 | dev: true 1911 | 1912 | /iterator.prototype@1.1.2: 1913 | resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} 1914 | dependencies: 1915 | define-properties: 1.2.1 1916 | get-intrinsic: 1.2.2 1917 | has-symbols: 1.0.3 1918 | reflect.getprototypeof: 1.0.4 1919 | set-function-name: 2.0.1 1920 | dev: true 1921 | 1922 | /jackspeak@2.3.6: 1923 | resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} 1924 | engines: {node: '>=14'} 1925 | dependencies: 1926 | '@isaacs/cliui': 8.0.2 1927 | optionalDependencies: 1928 | '@pkgjs/parseargs': 0.11.0 1929 | dev: true 1930 | 1931 | /jiti@1.21.0: 1932 | resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} 1933 | hasBin: true 1934 | dev: true 1935 | 1936 | /js-cookie@2.2.1: 1937 | resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} 1938 | dev: false 1939 | 1940 | /js-tokens@4.0.0: 1941 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1942 | 1943 | /js-yaml@4.1.0: 1944 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1945 | hasBin: true 1946 | dependencies: 1947 | argparse: 2.0.1 1948 | dev: true 1949 | 1950 | /json-buffer@3.0.1: 1951 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1952 | dev: true 1953 | 1954 | /json-schema-traverse@0.4.1: 1955 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1956 | dev: true 1957 | 1958 | /json-stable-stringify-without-jsonify@1.0.1: 1959 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1960 | dev: true 1961 | 1962 | /json-stringify-safe@5.0.1: 1963 | resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} 1964 | dev: false 1965 | 1966 | /json5@1.0.2: 1967 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} 1968 | hasBin: true 1969 | dependencies: 1970 | minimist: 1.2.8 1971 | dev: true 1972 | 1973 | /jsx-ast-utils@3.3.5: 1974 | resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} 1975 | engines: {node: '>=4.0'} 1976 | dependencies: 1977 | array-includes: 3.1.7 1978 | array.prototype.flat: 1.3.2 1979 | object.assign: 4.1.5 1980 | object.values: 1.1.7 1981 | dev: true 1982 | 1983 | /keyv@4.5.4: 1984 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1985 | dependencies: 1986 | json-buffer: 3.0.1 1987 | dev: true 1988 | 1989 | /language-subtag-registry@0.3.22: 1990 | resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} 1991 | dev: true 1992 | 1993 | /language-tags@1.0.9: 1994 | resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} 1995 | engines: {node: '>=0.10'} 1996 | dependencies: 1997 | language-subtag-registry: 0.3.22 1998 | dev: true 1999 | 2000 | /levn@0.4.1: 2001 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2002 | engines: {node: '>= 0.8.0'} 2003 | dependencies: 2004 | prelude-ls: 1.2.1 2005 | type-check: 0.4.0 2006 | dev: true 2007 | 2008 | /lilconfig@2.1.0: 2009 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 2010 | engines: {node: '>=10'} 2011 | dev: true 2012 | 2013 | /lilconfig@3.0.0: 2014 | resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} 2015 | engines: {node: '>=14'} 2016 | dev: true 2017 | 2018 | /lines-and-columns@1.2.4: 2019 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 2020 | dev: true 2021 | 2022 | /load-script@1.0.0: 2023 | resolution: {integrity: sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA==} 2024 | dev: false 2025 | 2026 | /locate-path@6.0.0: 2027 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 2028 | engines: {node: '>=10'} 2029 | dependencies: 2030 | p-locate: 5.0.0 2031 | dev: true 2032 | 2033 | /lodash.isplainobject@4.0.6: 2034 | resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} 2035 | dev: false 2036 | 2037 | /lodash.isstring@4.0.1: 2038 | resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} 2039 | dev: false 2040 | 2041 | /lodash.merge@4.6.2: 2042 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2043 | dev: true 2044 | 2045 | /loose-envify@1.4.0: 2046 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 2047 | hasBin: true 2048 | dependencies: 2049 | js-tokens: 4.0.0 2050 | 2051 | /lru-cache@10.1.0: 2052 | resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} 2053 | engines: {node: 14 || >=16.14} 2054 | dev: true 2055 | 2056 | /lru-cache@6.0.0: 2057 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2058 | engines: {node: '>=10'} 2059 | dependencies: 2060 | yallist: 4.0.0 2061 | dev: true 2062 | 2063 | /mdn-data@2.0.14: 2064 | resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} 2065 | dev: false 2066 | 2067 | /merge2@1.4.1: 2068 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2069 | engines: {node: '>= 8'} 2070 | dev: true 2071 | 2072 | /micromatch@4.0.5: 2073 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2074 | engines: {node: '>=8.6'} 2075 | dependencies: 2076 | braces: 3.0.2 2077 | picomatch: 2.3.1 2078 | dev: true 2079 | 2080 | /mime-db@1.52.0: 2081 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 2082 | engines: {node: '>= 0.6'} 2083 | dev: false 2084 | 2085 | /mime-types@2.1.35: 2086 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 2087 | engines: {node: '>= 0.6'} 2088 | dependencies: 2089 | mime-db: 1.52.0 2090 | dev: false 2091 | 2092 | /minimatch@3.1.2: 2093 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2094 | dependencies: 2095 | brace-expansion: 1.1.11 2096 | dev: true 2097 | 2098 | /minimatch@9.0.3: 2099 | resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} 2100 | engines: {node: '>=16 || 14 >=14.17'} 2101 | dependencies: 2102 | brace-expansion: 2.0.1 2103 | dev: true 2104 | 2105 | /minimist@1.2.8: 2106 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 2107 | dev: true 2108 | 2109 | /minipass@7.0.4: 2110 | resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} 2111 | engines: {node: '>=16 || 14 >=14.17'} 2112 | dev: true 2113 | 2114 | /ms@2.0.0: 2115 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 2116 | dev: false 2117 | 2118 | /ms@2.1.2: 2119 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2120 | dev: true 2121 | 2122 | /ms@2.1.3: 2123 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 2124 | dev: true 2125 | 2126 | /mz@2.7.0: 2127 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 2128 | dependencies: 2129 | any-promise: 1.3.0 2130 | object-assign: 4.1.1 2131 | thenify-all: 1.6.0 2132 | dev: true 2133 | 2134 | /nano-css@5.6.1(react-dom@18.2.0)(react@18.2.0): 2135 | resolution: {integrity: sha512-T2Mhc//CepkTa3X4pUhKgbEheJHYAxD0VptuqFhDbGMUWVV2m+lkNiW/Ieuj35wrfC8Zm0l7HvssQh7zcEttSw==} 2136 | peerDependencies: 2137 | react: '*' 2138 | react-dom: '*' 2139 | dependencies: 2140 | '@jridgewell/sourcemap-codec': 1.4.15 2141 | css-tree: 1.1.3 2142 | csstype: 3.1.3 2143 | fastest-stable-stringify: 2.0.2 2144 | inline-style-prefixer: 7.0.0 2145 | react: 18.2.0 2146 | react-dom: 18.2.0(react@18.2.0) 2147 | rtl-css-js: 1.16.1 2148 | stacktrace-js: 2.0.2 2149 | stylis: 4.3.1 2150 | dev: false 2151 | 2152 | /nanoid@3.3.7: 2153 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 2154 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2155 | hasBin: true 2156 | 2157 | /natural-compare@1.4.0: 2158 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 2159 | dev: true 2160 | 2161 | /next@14.0.4(react-dom@18.2.0)(react@18.2.0): 2162 | resolution: {integrity: sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==} 2163 | engines: {node: '>=18.17.0'} 2164 | hasBin: true 2165 | peerDependencies: 2166 | '@opentelemetry/api': ^1.1.0 2167 | react: ^18.2.0 2168 | react-dom: ^18.2.0 2169 | sass: ^1.3.0 2170 | peerDependenciesMeta: 2171 | '@opentelemetry/api': 2172 | optional: true 2173 | sass: 2174 | optional: true 2175 | dependencies: 2176 | '@next/env': 14.0.4 2177 | '@swc/helpers': 0.5.2 2178 | busboy: 1.6.0 2179 | caniuse-lite: 1.0.30001576 2180 | graceful-fs: 4.2.11 2181 | postcss: 8.4.31 2182 | react: 18.2.0 2183 | react-dom: 18.2.0(react@18.2.0) 2184 | styled-jsx: 5.1.1(react@18.2.0) 2185 | watchpack: 2.4.0 2186 | optionalDependencies: 2187 | '@next/swc-darwin-arm64': 14.0.4 2188 | '@next/swc-darwin-x64': 14.0.4 2189 | '@next/swc-linux-arm64-gnu': 14.0.4 2190 | '@next/swc-linux-arm64-musl': 14.0.4 2191 | '@next/swc-linux-x64-gnu': 14.0.4 2192 | '@next/swc-linux-x64-musl': 14.0.4 2193 | '@next/swc-win32-arm64-msvc': 14.0.4 2194 | '@next/swc-win32-ia32-msvc': 14.0.4 2195 | '@next/swc-win32-x64-msvc': 14.0.4 2196 | transitivePeerDependencies: 2197 | - '@babel/core' 2198 | - babel-plugin-macros 2199 | dev: false 2200 | 2201 | /nextjs13-progress@1.2.5(next@14.0.4)(react@18.2.0): 2202 | resolution: {integrity: sha512-tgDpIy1mYSLzqnZ84GqMBrftHvgaIVURNza/HuFxVgKBoXD+4do2tOtg/ksNR/GfmTRuNTvyyeZrhJyt1DCAzQ==} 2203 | peerDependencies: 2204 | next: '>=13.4' 2205 | react: '>=17.0.0' 2206 | dependencies: 2207 | '@types/nprogress': 0.2.3 2208 | next: 14.0.4(react-dom@18.2.0)(react@18.2.0) 2209 | nprogress: 0.2.0 2210 | prop-types: 15.8.1 2211 | react: 18.2.0 2212 | dev: false 2213 | 2214 | /node-releases@2.0.14: 2215 | resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} 2216 | dev: true 2217 | 2218 | /normalize-path@3.0.0: 2219 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2220 | engines: {node: '>=0.10.0'} 2221 | dev: true 2222 | 2223 | /normalize-range@0.1.2: 2224 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 2225 | engines: {node: '>=0.10.0'} 2226 | dev: true 2227 | 2228 | /nprogress@0.2.0: 2229 | resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} 2230 | dev: false 2231 | 2232 | /object-assign@4.1.1: 2233 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 2234 | engines: {node: '>=0.10.0'} 2235 | 2236 | /object-hash@3.0.0: 2237 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 2238 | engines: {node: '>= 6'} 2239 | dev: true 2240 | 2241 | /object-inspect@1.13.1: 2242 | resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} 2243 | 2244 | /object-keys@1.1.1: 2245 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2246 | engines: {node: '>= 0.4'} 2247 | dev: true 2248 | 2249 | /object.assign@4.1.5: 2250 | resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} 2251 | engines: {node: '>= 0.4'} 2252 | dependencies: 2253 | call-bind: 1.0.5 2254 | define-properties: 1.2.1 2255 | has-symbols: 1.0.3 2256 | object-keys: 1.1.1 2257 | dev: true 2258 | 2259 | /object.entries@1.1.7: 2260 | resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} 2261 | engines: {node: '>= 0.4'} 2262 | dependencies: 2263 | call-bind: 1.0.5 2264 | define-properties: 1.2.1 2265 | es-abstract: 1.22.3 2266 | dev: true 2267 | 2268 | /object.fromentries@2.0.7: 2269 | resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} 2270 | engines: {node: '>= 0.4'} 2271 | dependencies: 2272 | call-bind: 1.0.5 2273 | define-properties: 1.2.1 2274 | es-abstract: 1.22.3 2275 | dev: true 2276 | 2277 | /object.groupby@1.0.1: 2278 | resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} 2279 | dependencies: 2280 | call-bind: 1.0.5 2281 | define-properties: 1.2.1 2282 | es-abstract: 1.22.3 2283 | get-intrinsic: 1.2.2 2284 | dev: true 2285 | 2286 | /object.hasown@1.1.3: 2287 | resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} 2288 | dependencies: 2289 | define-properties: 1.2.1 2290 | es-abstract: 1.22.3 2291 | dev: true 2292 | 2293 | /object.values@1.1.7: 2294 | resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} 2295 | engines: {node: '>= 0.4'} 2296 | dependencies: 2297 | call-bind: 1.0.5 2298 | define-properties: 1.2.1 2299 | es-abstract: 1.22.3 2300 | dev: true 2301 | 2302 | /once@1.4.0: 2303 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2304 | dependencies: 2305 | wrappy: 1.0.2 2306 | dev: true 2307 | 2308 | /optionator@0.9.3: 2309 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} 2310 | engines: {node: '>= 0.8.0'} 2311 | dependencies: 2312 | '@aashutoshrathi/word-wrap': 1.2.6 2313 | deep-is: 0.1.4 2314 | fast-levenshtein: 2.0.6 2315 | levn: 0.4.1 2316 | prelude-ls: 1.2.1 2317 | type-check: 0.4.0 2318 | dev: true 2319 | 2320 | /p-limit@3.1.0: 2321 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2322 | engines: {node: '>=10'} 2323 | dependencies: 2324 | yocto-queue: 0.1.0 2325 | dev: true 2326 | 2327 | /p-locate@5.0.0: 2328 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2329 | engines: {node: '>=10'} 2330 | dependencies: 2331 | p-limit: 3.1.0 2332 | dev: true 2333 | 2334 | /p-throttle@4.1.1: 2335 | resolution: {integrity: sha512-TuU8Ato+pRTPJoDzYD4s7ocJYcNSEZRvlxoq3hcPI2kZDZ49IQ1Wkj7/gDJc3X7XiEAAvRGtDzdXJI0tC3IL1g==} 2336 | engines: {node: '>=10'} 2337 | dev: false 2338 | 2339 | /p4-css@1.5.1(react-dom@18.2.0)(react@18.2.0): 2340 | resolution: {integrity: sha512-CRyakHYb77Hw9UbMdZ/nQi/roS9C9ahvl5FfCKUhVPtpCcTyOnYNwtFQ8VgcBXybT3nwil61TE/ujH6b5kNDDg==} 2341 | peerDependencies: 2342 | react: '*' 2343 | dependencies: 2344 | nano-css: 5.6.1(react-dom@18.2.0)(react@18.2.0) 2345 | react: 18.2.0 2346 | transitivePeerDependencies: 2347 | - react-dom 2348 | dev: false 2349 | 2350 | /parent-module@1.0.1: 2351 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2352 | engines: {node: '>=6'} 2353 | dependencies: 2354 | callsites: 3.1.0 2355 | dev: true 2356 | 2357 | /path-exists@4.0.0: 2358 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2359 | engines: {node: '>=8'} 2360 | dev: true 2361 | 2362 | /path-is-absolute@1.0.1: 2363 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2364 | engines: {node: '>=0.10.0'} 2365 | dev: true 2366 | 2367 | /path-key@3.1.1: 2368 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2369 | engines: {node: '>=8'} 2370 | dev: true 2371 | 2372 | /path-parse@1.0.7: 2373 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2374 | dev: true 2375 | 2376 | /path-scurry@1.10.1: 2377 | resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} 2378 | engines: {node: '>=16 || 14 >=14.17'} 2379 | dependencies: 2380 | lru-cache: 10.1.0 2381 | minipass: 7.0.4 2382 | dev: true 2383 | 2384 | /path-type@4.0.0: 2385 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2386 | engines: {node: '>=8'} 2387 | dev: true 2388 | 2389 | /picocolors@1.0.0: 2390 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2391 | 2392 | /picomatch@2.3.1: 2393 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2394 | engines: {node: '>=8.6'} 2395 | dev: true 2396 | 2397 | /pify@2.3.0: 2398 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 2399 | engines: {node: '>=0.10.0'} 2400 | dev: true 2401 | 2402 | /pirates@4.0.6: 2403 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 2404 | engines: {node: '>= 6'} 2405 | dev: true 2406 | 2407 | /postcss-import@15.1.0(postcss@8.4.33): 2408 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 2409 | engines: {node: '>=14.0.0'} 2410 | peerDependencies: 2411 | postcss: ^8.0.0 2412 | dependencies: 2413 | postcss: 8.4.33 2414 | postcss-value-parser: 4.2.0 2415 | read-cache: 1.0.0 2416 | resolve: 1.22.8 2417 | dev: true 2418 | 2419 | /postcss-js@4.0.1(postcss@8.4.33): 2420 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 2421 | engines: {node: ^12 || ^14 || >= 16} 2422 | peerDependencies: 2423 | postcss: ^8.4.21 2424 | dependencies: 2425 | camelcase-css: 2.0.1 2426 | postcss: 8.4.33 2427 | 2428 | /postcss-load-config@4.0.2(postcss@8.4.33): 2429 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} 2430 | engines: {node: '>= 14'} 2431 | peerDependencies: 2432 | postcss: '>=8.0.9' 2433 | ts-node: '>=9.0.0' 2434 | peerDependenciesMeta: 2435 | postcss: 2436 | optional: true 2437 | ts-node: 2438 | optional: true 2439 | dependencies: 2440 | lilconfig: 3.0.0 2441 | postcss: 8.4.33 2442 | yaml: 2.3.4 2443 | dev: true 2444 | 2445 | /postcss-nested@6.0.1(postcss@8.4.33): 2446 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} 2447 | engines: {node: '>=12.0'} 2448 | peerDependencies: 2449 | postcss: ^8.2.14 2450 | dependencies: 2451 | postcss: 8.4.33 2452 | postcss-selector-parser: 6.0.15 2453 | dev: true 2454 | 2455 | /postcss-selector-parser@6.0.15: 2456 | resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} 2457 | engines: {node: '>=4'} 2458 | dependencies: 2459 | cssesc: 3.0.0 2460 | util-deprecate: 1.0.2 2461 | dev: true 2462 | 2463 | /postcss-value-parser@4.2.0: 2464 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 2465 | dev: true 2466 | 2467 | /postcss@8.4.31: 2468 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} 2469 | engines: {node: ^10 || ^12 || >=14} 2470 | dependencies: 2471 | nanoid: 3.3.7 2472 | picocolors: 1.0.0 2473 | source-map-js: 1.0.2 2474 | dev: false 2475 | 2476 | /postcss@8.4.33: 2477 | resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} 2478 | engines: {node: ^10 || ^12 || >=14} 2479 | dependencies: 2480 | nanoid: 3.3.7 2481 | picocolors: 1.0.0 2482 | source-map-js: 1.0.2 2483 | 2484 | /prelude-ls@1.2.1: 2485 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2486 | engines: {node: '>= 0.8.0'} 2487 | dev: true 2488 | 2489 | /prop-types@15.7.2: 2490 | resolution: {integrity: sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==} 2491 | dependencies: 2492 | loose-envify: 1.4.0 2493 | object-assign: 4.1.1 2494 | react-is: 16.13.1 2495 | dev: false 2496 | 2497 | /prop-types@15.8.1: 2498 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 2499 | dependencies: 2500 | loose-envify: 1.4.0 2501 | object-assign: 4.1.1 2502 | react-is: 16.13.1 2503 | 2504 | /proxy-from-env@1.1.0: 2505 | resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} 2506 | dev: false 2507 | 2508 | /punycode@2.3.1: 2509 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 2510 | engines: {node: '>=6'} 2511 | dev: true 2512 | 2513 | /qs@6.11.2: 2514 | resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} 2515 | engines: {node: '>=0.6'} 2516 | dependencies: 2517 | side-channel: 1.0.4 2518 | dev: false 2519 | 2520 | /query-string@5.1.1: 2521 | resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==} 2522 | engines: {node: '>=0.10.0'} 2523 | dependencies: 2524 | decode-uri-component: 0.2.2 2525 | object-assign: 4.1.1 2526 | strict-uri-encode: 1.1.0 2527 | dev: false 2528 | 2529 | /queue-microtask@1.2.3: 2530 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2531 | dev: true 2532 | 2533 | /react-dom@18.2.0(react@18.2.0): 2534 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 2535 | peerDependencies: 2536 | react: ^18.2.0 2537 | dependencies: 2538 | loose-envify: 1.4.0 2539 | react: 18.2.0 2540 | scheduler: 0.23.0 2541 | dev: false 2542 | 2543 | /react-embed@3.7.0(react-dom@18.2.0)(react@18.2.0): 2544 | resolution: {integrity: sha512-Mqaje4PB28vGiGLqq7S8Qey8j4rlQeXvTOTduoEmSRN6zmS5fDUwO/Oz0utuMhSoY9lgdInT61bho/lwFihYkA==} 2545 | peerDependencies: 2546 | react: '*' 2547 | react-dom: '*' 2548 | dependencies: 2549 | p4-css: 1.5.1(react-dom@18.2.0)(react@18.2.0) 2550 | react: 18.2.0 2551 | react-dom: 18.2.0(react@18.2.0) 2552 | react-instagram-embed: 1.5.0(react-dom@18.2.0)(react@18.2.0) 2553 | react-player: 1.15.3(react@18.2.0) 2554 | react-simple-player: 1.1.0(react-dom@18.2.0)(react@18.2.0) 2555 | react-youtube: 7.14.0(react@18.2.0) 2556 | scriptjs: 2.5.9 2557 | transitivePeerDependencies: 2558 | - supports-color 2559 | dev: false 2560 | 2561 | /react-gist@1.2.4(react@18.2.0): 2562 | resolution: {integrity: sha512-uDgPJ08IJsl/7auK3CS53JKGC1P/X7tNCzo9k0r6D/5l+ilsxE1+SAaylJCh0aeyZoJOoxQikKU+MHsAvA9iFw==} 2563 | peerDependencies: 2564 | react: 0.14.x || ^15.0.0-rc || ^16.0.0-rc || ^17.0.0-rc 2565 | dependencies: 2566 | react: 18.2.0 2567 | dev: false 2568 | 2569 | /react-icons@4.12.0(react@18.2.0): 2570 | resolution: {integrity: sha512-IBaDuHiShdZqmfc/TwHu6+d6k2ltNCf3AszxNmjJc1KUfXdEeRJOKyNvLmAHaarhzGmTSVygNdyu8/opXv2gaw==} 2571 | peerDependencies: 2572 | react: '*' 2573 | dependencies: 2574 | react: 18.2.0 2575 | dev: false 2576 | 2577 | /react-instagram-embed@1.5.0(react-dom@18.2.0)(react@18.2.0): 2578 | resolution: {integrity: sha512-8HGBHjK4k6xJjActGLll22TCE8G9GI6aIlb7r8UJB9MYMnJpk15SuAQOoAeujb4pkOQGlWgfU3TW7R+97dp8mg==} 2579 | peerDependencies: 2580 | react: ^16.0.0 || ^15.0.0 || ~0.14.0 2581 | react-dom: ^16.0.0 || ^15.0.0 || ~0.14.0 2582 | dependencies: 2583 | query-string: 5.1.1 2584 | react: 18.2.0 2585 | react-dom: 18.2.0(react@18.2.0) 2586 | dev: false 2587 | 2588 | /react-is@16.13.1: 2589 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 2590 | 2591 | /react-player@1.15.3(react@18.2.0): 2592 | resolution: {integrity: sha512-8fc0R1AipFIy7l4lKgnIg+gMU2IY32ZMxxBlINjXAq/YnN3HUP3hOaE+aQ0lQv+a1/MMZgbekWD86ZGDO7kB8g==} 2593 | peerDependencies: 2594 | react: '*' 2595 | dependencies: 2596 | deepmerge: 4.3.1 2597 | load-script: 1.0.0 2598 | prop-types: 15.8.1 2599 | react: 18.2.0 2600 | dev: false 2601 | 2602 | /react-simple-player@1.1.0(react-dom@18.2.0)(react@18.2.0): 2603 | resolution: {integrity: sha512-uvfEcBZre21TcjTZ9G0Q5mDOdKYKfiB2EM6pvJ1gSrFKpJQgXPTpJ1zXqiY+L74y/c1TgYOg2b12mGCibFRajA==} 2604 | peerDependencies: 2605 | react: '*' 2606 | react-dom: '*' 2607 | dependencies: 2608 | p4-css: 1.5.1(react-dom@18.2.0)(react@18.2.0) 2609 | react: 18.2.0 2610 | react-dom: 18.2.0(react@18.2.0) 2611 | react-use: 17.4.2(react-dom@18.2.0)(react@18.2.0) 2612 | dev: false 2613 | 2614 | /react-universal-interface@0.6.2(react@18.2.0)(tslib@2.6.2): 2615 | resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} 2616 | peerDependencies: 2617 | react: '*' 2618 | tslib: '*' 2619 | dependencies: 2620 | react: 18.2.0 2621 | tslib: 2.6.2 2622 | dev: false 2623 | 2624 | /react-use@17.4.2(react-dom@18.2.0)(react@18.2.0): 2625 | resolution: {integrity: sha512-1jPtmWLD8OJJNYCdYLJEH/HM+bPDfJuyGwCYeJFgPmWY8ttwpgZnW5QnzgM55CYUByUiTjHxsGOnEpLl6yQaoQ==} 2626 | peerDependencies: 2627 | react: '*' 2628 | react-dom: '*' 2629 | dependencies: 2630 | '@types/js-cookie': 2.2.7 2631 | '@xobotyi/scrollbar-width': 1.9.5 2632 | copy-to-clipboard: 3.3.3 2633 | fast-deep-equal: 3.1.3 2634 | fast-shallow-equal: 1.0.0 2635 | js-cookie: 2.2.1 2636 | nano-css: 5.6.1(react-dom@18.2.0)(react@18.2.0) 2637 | react: 18.2.0 2638 | react-dom: 18.2.0(react@18.2.0) 2639 | react-universal-interface: 0.6.2(react@18.2.0)(tslib@2.6.2) 2640 | resize-observer-polyfill: 1.5.1 2641 | screenfull: 5.2.0 2642 | set-harmonic-interval: 1.0.1 2643 | throttle-debounce: 3.0.1 2644 | ts-easing: 0.2.0 2645 | tslib: 2.6.2 2646 | dev: false 2647 | 2648 | /react-youtube@7.14.0(react@18.2.0): 2649 | resolution: {integrity: sha512-SUHZ4F4pd1EHmQu0CV0KSQvAs5KHOT5cfYaq4WLCcDbU8fBo1ouTXaAOIASWbrz8fHwg+G1evfoSIYpV2AwSAg==} 2650 | engines: {node: '>= 10.x'} 2651 | peerDependencies: 2652 | react: '>=0.14.1' 2653 | dependencies: 2654 | fast-deep-equal: 3.1.3 2655 | prop-types: 15.7.2 2656 | react: 18.2.0 2657 | youtube-player: 5.5.2 2658 | transitivePeerDependencies: 2659 | - supports-color 2660 | dev: false 2661 | 2662 | /react@18.2.0: 2663 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 2664 | engines: {node: '>=0.10.0'} 2665 | dependencies: 2666 | loose-envify: 1.4.0 2667 | dev: false 2668 | 2669 | /read-cache@1.0.0: 2670 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 2671 | dependencies: 2672 | pify: 2.3.0 2673 | dev: true 2674 | 2675 | /readdirp@3.6.0: 2676 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2677 | engines: {node: '>=8.10.0'} 2678 | dependencies: 2679 | picomatch: 2.3.1 2680 | dev: true 2681 | 2682 | /reflect.getprototypeof@1.0.4: 2683 | resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} 2684 | engines: {node: '>= 0.4'} 2685 | dependencies: 2686 | call-bind: 1.0.5 2687 | define-properties: 1.2.1 2688 | es-abstract: 1.22.3 2689 | get-intrinsic: 1.2.2 2690 | globalthis: 1.0.3 2691 | which-builtin-type: 1.1.3 2692 | dev: true 2693 | 2694 | /regenerator-runtime@0.14.1: 2695 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 2696 | 2697 | /regexp.prototype.flags@1.5.1: 2698 | resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} 2699 | engines: {node: '>= 0.4'} 2700 | dependencies: 2701 | call-bind: 1.0.5 2702 | define-properties: 1.2.1 2703 | set-function-name: 2.0.1 2704 | dev: true 2705 | 2706 | /resize-observer-polyfill@1.5.1: 2707 | resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} 2708 | dev: false 2709 | 2710 | /resolve-from@4.0.0: 2711 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2712 | engines: {node: '>=4'} 2713 | dev: true 2714 | 2715 | /resolve-pkg-maps@1.0.0: 2716 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 2717 | dev: true 2718 | 2719 | /resolve@1.22.8: 2720 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} 2721 | hasBin: true 2722 | dependencies: 2723 | is-core-module: 2.13.1 2724 | path-parse: 1.0.7 2725 | supports-preserve-symlinks-flag: 1.0.0 2726 | dev: true 2727 | 2728 | /resolve@2.0.0-next.5: 2729 | resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} 2730 | hasBin: true 2731 | dependencies: 2732 | is-core-module: 2.13.1 2733 | path-parse: 1.0.7 2734 | supports-preserve-symlinks-flag: 1.0.0 2735 | dev: true 2736 | 2737 | /reusify@1.0.4: 2738 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2739 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2740 | dev: true 2741 | 2742 | /rimraf@3.0.2: 2743 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2744 | hasBin: true 2745 | dependencies: 2746 | glob: 7.2.3 2747 | dev: true 2748 | 2749 | /rtl-css-js@1.16.1: 2750 | resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} 2751 | dependencies: 2752 | '@babel/runtime': 7.23.8 2753 | dev: false 2754 | 2755 | /run-parallel@1.2.0: 2756 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2757 | dependencies: 2758 | queue-microtask: 1.2.3 2759 | dev: true 2760 | 2761 | /safe-array-concat@1.0.1: 2762 | resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} 2763 | engines: {node: '>=0.4'} 2764 | dependencies: 2765 | call-bind: 1.0.5 2766 | get-intrinsic: 1.2.2 2767 | has-symbols: 1.0.3 2768 | isarray: 2.0.5 2769 | dev: true 2770 | 2771 | /safe-regex-test@1.0.1: 2772 | resolution: {integrity: sha512-Y5NejJTTliTyY4H7sipGqY+RX5P87i3F7c4Rcepy72nq+mNLhIsD0W4c7kEmduMDQCSqtPsXPlSTsFhh2LQv+g==} 2773 | engines: {node: '>= 0.4'} 2774 | dependencies: 2775 | call-bind: 1.0.5 2776 | get-intrinsic: 1.2.2 2777 | is-regex: 1.1.4 2778 | dev: true 2779 | 2780 | /scheduler@0.23.0: 2781 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 2782 | dependencies: 2783 | loose-envify: 1.4.0 2784 | dev: false 2785 | 2786 | /screenfull@5.2.0: 2787 | resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} 2788 | engines: {node: '>=0.10.0'} 2789 | dev: false 2790 | 2791 | /scriptjs@2.5.9: 2792 | resolution: {integrity: sha512-qGVDoreyYiP1pkQnbnFAUIS5AjenNwwQBdl7zeos9etl+hYKWahjRTfzAZZYBv5xNHx7vNKCmaLDQZ6Fr2AEXg==} 2793 | dev: false 2794 | 2795 | /semver@6.3.1: 2796 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 2797 | hasBin: true 2798 | dev: true 2799 | 2800 | /semver@7.5.4: 2801 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} 2802 | engines: {node: '>=10'} 2803 | hasBin: true 2804 | dependencies: 2805 | lru-cache: 6.0.0 2806 | dev: true 2807 | 2808 | /set-function-length@1.1.1: 2809 | resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} 2810 | engines: {node: '>= 0.4'} 2811 | dependencies: 2812 | define-data-property: 1.1.1 2813 | get-intrinsic: 1.2.2 2814 | gopd: 1.0.1 2815 | has-property-descriptors: 1.0.1 2816 | 2817 | /set-function-name@2.0.1: 2818 | resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} 2819 | engines: {node: '>= 0.4'} 2820 | dependencies: 2821 | define-data-property: 1.1.1 2822 | functions-have-names: 1.2.3 2823 | has-property-descriptors: 1.0.1 2824 | dev: true 2825 | 2826 | /set-harmonic-interval@1.0.1: 2827 | resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==} 2828 | engines: {node: '>=6.9'} 2829 | dev: false 2830 | 2831 | /shebang-command@2.0.0: 2832 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2833 | engines: {node: '>=8'} 2834 | dependencies: 2835 | shebang-regex: 3.0.0 2836 | dev: true 2837 | 2838 | /shebang-regex@3.0.0: 2839 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2840 | engines: {node: '>=8'} 2841 | dev: true 2842 | 2843 | /side-channel@1.0.4: 2844 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 2845 | dependencies: 2846 | call-bind: 1.0.5 2847 | get-intrinsic: 1.2.2 2848 | object-inspect: 1.13.1 2849 | 2850 | /signal-exit@4.1.0: 2851 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 2852 | engines: {node: '>=14'} 2853 | dev: true 2854 | 2855 | /sister@3.0.2: 2856 | resolution: {integrity: sha512-p19rtTs+NksBRKW9qn0UhZ8/TUI9BPw9lmtHny+Y3TinWlOa9jWh9xB0AtPSdmOy49NJJJSSe0Ey4C7h0TrcYA==} 2857 | dev: false 2858 | 2859 | /slash@3.0.0: 2860 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2861 | engines: {node: '>=8'} 2862 | dev: true 2863 | 2864 | /source-map-js@1.0.2: 2865 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2866 | engines: {node: '>=0.10.0'} 2867 | 2868 | /source-map@0.5.6: 2869 | resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} 2870 | engines: {node: '>=0.10.0'} 2871 | dev: false 2872 | 2873 | /source-map@0.6.1: 2874 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 2875 | engines: {node: '>=0.10.0'} 2876 | dev: false 2877 | 2878 | /stack-generator@2.0.10: 2879 | resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} 2880 | dependencies: 2881 | stackframe: 1.3.4 2882 | dev: false 2883 | 2884 | /stackframe@1.3.4: 2885 | resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} 2886 | dev: false 2887 | 2888 | /stacktrace-gps@3.1.2: 2889 | resolution: {integrity: sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==} 2890 | dependencies: 2891 | source-map: 0.5.6 2892 | stackframe: 1.3.4 2893 | dev: false 2894 | 2895 | /stacktrace-js@2.0.2: 2896 | resolution: {integrity: sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==} 2897 | dependencies: 2898 | error-stack-parser: 2.1.4 2899 | stack-generator: 2.0.10 2900 | stacktrace-gps: 3.1.2 2901 | dev: false 2902 | 2903 | /streamsearch@1.1.0: 2904 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 2905 | engines: {node: '>=10.0.0'} 2906 | dev: false 2907 | 2908 | /strict-uri-encode@1.1.0: 2909 | resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} 2910 | engines: {node: '>=0.10.0'} 2911 | dev: false 2912 | 2913 | /string-width@4.2.3: 2914 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2915 | engines: {node: '>=8'} 2916 | dependencies: 2917 | emoji-regex: 8.0.0 2918 | is-fullwidth-code-point: 3.0.0 2919 | strip-ansi: 6.0.1 2920 | dev: true 2921 | 2922 | /string-width@5.1.2: 2923 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 2924 | engines: {node: '>=12'} 2925 | dependencies: 2926 | eastasianwidth: 0.2.0 2927 | emoji-regex: 9.2.2 2928 | strip-ansi: 7.1.0 2929 | dev: true 2930 | 2931 | /string.prototype.matchall@4.0.10: 2932 | resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} 2933 | dependencies: 2934 | call-bind: 1.0.5 2935 | define-properties: 1.2.1 2936 | es-abstract: 1.22.3 2937 | get-intrinsic: 1.2.2 2938 | has-symbols: 1.0.3 2939 | internal-slot: 1.0.6 2940 | regexp.prototype.flags: 1.5.1 2941 | set-function-name: 2.0.1 2942 | side-channel: 1.0.4 2943 | dev: true 2944 | 2945 | /string.prototype.trim@1.2.8: 2946 | resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} 2947 | engines: {node: '>= 0.4'} 2948 | dependencies: 2949 | call-bind: 1.0.5 2950 | define-properties: 1.2.1 2951 | es-abstract: 1.22.3 2952 | dev: true 2953 | 2954 | /string.prototype.trimend@1.0.7: 2955 | resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} 2956 | dependencies: 2957 | call-bind: 1.0.5 2958 | define-properties: 1.2.1 2959 | es-abstract: 1.22.3 2960 | dev: true 2961 | 2962 | /string.prototype.trimstart@1.0.7: 2963 | resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} 2964 | dependencies: 2965 | call-bind: 1.0.5 2966 | define-properties: 1.2.1 2967 | es-abstract: 1.22.3 2968 | dev: true 2969 | 2970 | /strip-ansi@6.0.1: 2971 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2972 | engines: {node: '>=8'} 2973 | dependencies: 2974 | ansi-regex: 5.0.1 2975 | dev: true 2976 | 2977 | /strip-ansi@7.1.0: 2978 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 2979 | engines: {node: '>=12'} 2980 | dependencies: 2981 | ansi-regex: 6.0.1 2982 | dev: true 2983 | 2984 | /strip-bom@3.0.0: 2985 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 2986 | engines: {node: '>=4'} 2987 | dev: true 2988 | 2989 | /strip-json-comments@3.1.1: 2990 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2991 | engines: {node: '>=8'} 2992 | dev: true 2993 | 2994 | /styled-jsx@5.1.1(react@18.2.0): 2995 | resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} 2996 | engines: {node: '>= 12.0.0'} 2997 | peerDependencies: 2998 | '@babel/core': '*' 2999 | babel-plugin-macros: '*' 3000 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' 3001 | peerDependenciesMeta: 3002 | '@babel/core': 3003 | optional: true 3004 | babel-plugin-macros: 3005 | optional: true 3006 | dependencies: 3007 | client-only: 0.0.1 3008 | react: 18.2.0 3009 | dev: false 3010 | 3011 | /stylis@4.3.1: 3012 | resolution: {integrity: sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==} 3013 | dev: false 3014 | 3015 | /sucrase@3.35.0: 3016 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 3017 | engines: {node: '>=16 || 14 >=14.17'} 3018 | hasBin: true 3019 | dependencies: 3020 | '@jridgewell/gen-mapping': 0.3.3 3021 | commander: 4.1.1 3022 | glob: 10.3.10 3023 | lines-and-columns: 1.2.4 3024 | mz: 2.7.0 3025 | pirates: 4.0.6 3026 | ts-interface-checker: 0.1.13 3027 | dev: true 3028 | 3029 | /supports-color@7.2.0: 3030 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 3031 | engines: {node: '>=8'} 3032 | dependencies: 3033 | has-flag: 4.0.0 3034 | dev: true 3035 | 3036 | /supports-preserve-symlinks-flag@1.0.0: 3037 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 3038 | engines: {node: '>= 0.4'} 3039 | dev: true 3040 | 3041 | /swr@2.2.4(react@18.2.0): 3042 | resolution: {integrity: sha512-njiZ/4RiIhoOlAaLYDqwz5qH/KZXVilRLvomrx83HjzCWTfa+InyfAjv05PSFxnmLzZkNO9ZfvgoqzAaEI4sGQ==} 3043 | peerDependencies: 3044 | react: ^16.11.0 || ^17.0.0 || ^18.0.0 3045 | dependencies: 3046 | client-only: 0.0.1 3047 | react: 18.2.0 3048 | use-sync-external-store: 1.2.0(react@18.2.0) 3049 | dev: false 3050 | 3051 | /tailwindcss@3.4.1: 3052 | resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} 3053 | engines: {node: '>=14.0.0'} 3054 | hasBin: true 3055 | dependencies: 3056 | '@alloc/quick-lru': 5.2.0 3057 | arg: 5.0.2 3058 | chokidar: 3.5.3 3059 | didyoumean: 1.2.2 3060 | dlv: 1.1.3 3061 | fast-glob: 3.3.2 3062 | glob-parent: 6.0.2 3063 | is-glob: 4.0.3 3064 | jiti: 1.21.0 3065 | lilconfig: 2.1.0 3066 | micromatch: 4.0.5 3067 | normalize-path: 3.0.0 3068 | object-hash: 3.0.0 3069 | picocolors: 1.0.0 3070 | postcss: 8.4.33 3071 | postcss-import: 15.1.0(postcss@8.4.33) 3072 | postcss-js: 4.0.1(postcss@8.4.33) 3073 | postcss-load-config: 4.0.2(postcss@8.4.33) 3074 | postcss-nested: 6.0.1(postcss@8.4.33) 3075 | postcss-selector-parser: 6.0.15 3076 | resolve: 1.22.8 3077 | sucrase: 3.35.0 3078 | transitivePeerDependencies: 3079 | - ts-node 3080 | dev: true 3081 | 3082 | /tapable@2.2.1: 3083 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} 3084 | engines: {node: '>=6'} 3085 | dev: true 3086 | 3087 | /text-table@0.2.0: 3088 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 3089 | dev: true 3090 | 3091 | /thenify-all@1.6.0: 3092 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 3093 | engines: {node: '>=0.8'} 3094 | dependencies: 3095 | thenify: 3.3.1 3096 | dev: true 3097 | 3098 | /thenify@3.3.1: 3099 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 3100 | dependencies: 3101 | any-promise: 1.3.0 3102 | dev: true 3103 | 3104 | /throttle-debounce@3.0.1: 3105 | resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} 3106 | engines: {node: '>=10'} 3107 | dev: false 3108 | 3109 | /to-regex-range@5.0.1: 3110 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 3111 | engines: {node: '>=8.0'} 3112 | dependencies: 3113 | is-number: 7.0.0 3114 | dev: true 3115 | 3116 | /toggle-selection@1.0.6: 3117 | resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} 3118 | dev: false 3119 | 3120 | /ts-api-utils@1.0.3(typescript@5.3.3): 3121 | resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} 3122 | engines: {node: '>=16.13.0'} 3123 | peerDependencies: 3124 | typescript: '>=4.2.0' 3125 | dependencies: 3126 | typescript: 5.3.3 3127 | dev: true 3128 | 3129 | /ts-easing@0.2.0: 3130 | resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} 3131 | dev: false 3132 | 3133 | /ts-interface-checker@0.1.13: 3134 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 3135 | dev: true 3136 | 3137 | /tsconfig-paths@3.15.0: 3138 | resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} 3139 | dependencies: 3140 | '@types/json5': 0.0.29 3141 | json5: 1.0.2 3142 | minimist: 1.2.8 3143 | strip-bom: 3.0.0 3144 | dev: true 3145 | 3146 | /tslib@2.6.2: 3147 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} 3148 | dev: false 3149 | 3150 | /type-check@0.4.0: 3151 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 3152 | engines: {node: '>= 0.8.0'} 3153 | dependencies: 3154 | prelude-ls: 1.2.1 3155 | dev: true 3156 | 3157 | /type-fest@0.20.2: 3158 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 3159 | engines: {node: '>=10'} 3160 | dev: true 3161 | 3162 | /type-fest@4.9.0: 3163 | resolution: {integrity: sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==} 3164 | engines: {node: '>=16'} 3165 | dev: false 3166 | 3167 | /typed-array-buffer@1.0.0: 3168 | resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} 3169 | engines: {node: '>= 0.4'} 3170 | dependencies: 3171 | call-bind: 1.0.5 3172 | get-intrinsic: 1.2.2 3173 | is-typed-array: 1.1.12 3174 | dev: true 3175 | 3176 | /typed-array-byte-length@1.0.0: 3177 | resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} 3178 | engines: {node: '>= 0.4'} 3179 | dependencies: 3180 | call-bind: 1.0.5 3181 | for-each: 0.3.3 3182 | has-proto: 1.0.1 3183 | is-typed-array: 1.1.12 3184 | dev: true 3185 | 3186 | /typed-array-byte-offset@1.0.0: 3187 | resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} 3188 | engines: {node: '>= 0.4'} 3189 | dependencies: 3190 | available-typed-arrays: 1.0.5 3191 | call-bind: 1.0.5 3192 | for-each: 0.3.3 3193 | has-proto: 1.0.1 3194 | is-typed-array: 1.1.12 3195 | dev: true 3196 | 3197 | /typed-array-length@1.0.4: 3198 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} 3199 | dependencies: 3200 | call-bind: 1.0.5 3201 | for-each: 0.3.3 3202 | is-typed-array: 1.1.12 3203 | dev: true 3204 | 3205 | /typescript@5.3.3: 3206 | resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} 3207 | engines: {node: '>=14.17'} 3208 | hasBin: true 3209 | dev: true 3210 | 3211 | /unbox-primitive@1.0.2: 3212 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 3213 | dependencies: 3214 | call-bind: 1.0.5 3215 | has-bigints: 1.0.2 3216 | has-symbols: 1.0.3 3217 | which-boxed-primitive: 1.0.2 3218 | dev: true 3219 | 3220 | /undici-types@5.26.5: 3221 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} 3222 | dev: true 3223 | 3224 | /update-browserslist-db@1.0.13(browserslist@4.22.2): 3225 | resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} 3226 | hasBin: true 3227 | peerDependencies: 3228 | browserslist: '>= 4.21.0' 3229 | dependencies: 3230 | browserslist: 4.22.2 3231 | escalade: 3.1.1 3232 | picocolors: 1.0.0 3233 | dev: true 3234 | 3235 | /uri-js@4.4.1: 3236 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 3237 | dependencies: 3238 | punycode: 2.3.1 3239 | dev: true 3240 | 3241 | /use-sync-external-store@1.2.0(react@18.2.0): 3242 | resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} 3243 | peerDependencies: 3244 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 3245 | dependencies: 3246 | react: 18.2.0 3247 | dev: false 3248 | 3249 | /util-deprecate@1.0.2: 3250 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 3251 | dev: true 3252 | 3253 | /watchpack@2.4.0: 3254 | resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} 3255 | engines: {node: '>=10.13.0'} 3256 | dependencies: 3257 | glob-to-regexp: 0.4.1 3258 | graceful-fs: 4.2.11 3259 | dev: false 3260 | 3261 | /which-boxed-primitive@1.0.2: 3262 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 3263 | dependencies: 3264 | is-bigint: 1.0.4 3265 | is-boolean-object: 1.1.2 3266 | is-number-object: 1.0.7 3267 | is-string: 1.0.7 3268 | is-symbol: 1.0.4 3269 | dev: true 3270 | 3271 | /which-builtin-type@1.1.3: 3272 | resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} 3273 | engines: {node: '>= 0.4'} 3274 | dependencies: 3275 | function.prototype.name: 1.1.6 3276 | has-tostringtag: 1.0.0 3277 | is-async-function: 2.0.0 3278 | is-date-object: 1.0.5 3279 | is-finalizationregistry: 1.0.2 3280 | is-generator-function: 1.0.10 3281 | is-regex: 1.1.4 3282 | is-weakref: 1.0.2 3283 | isarray: 2.0.5 3284 | which-boxed-primitive: 1.0.2 3285 | which-collection: 1.0.1 3286 | which-typed-array: 1.1.13 3287 | dev: true 3288 | 3289 | /which-collection@1.0.1: 3290 | resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} 3291 | dependencies: 3292 | is-map: 2.0.2 3293 | is-set: 2.0.2 3294 | is-weakmap: 2.0.1 3295 | is-weakset: 2.0.2 3296 | dev: true 3297 | 3298 | /which-typed-array@1.1.13: 3299 | resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} 3300 | engines: {node: '>= 0.4'} 3301 | dependencies: 3302 | available-typed-arrays: 1.0.5 3303 | call-bind: 1.0.5 3304 | for-each: 0.3.3 3305 | gopd: 1.0.1 3306 | has-tostringtag: 1.0.0 3307 | dev: true 3308 | 3309 | /which@2.0.2: 3310 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3311 | engines: {node: '>= 8'} 3312 | hasBin: true 3313 | dependencies: 3314 | isexe: 2.0.0 3315 | dev: true 3316 | 3317 | /wrap-ansi@7.0.0: 3318 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 3319 | engines: {node: '>=10'} 3320 | dependencies: 3321 | ansi-styles: 4.3.0 3322 | string-width: 4.2.3 3323 | strip-ansi: 6.0.1 3324 | dev: true 3325 | 3326 | /wrap-ansi@8.1.0: 3327 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 3328 | engines: {node: '>=12'} 3329 | dependencies: 3330 | ansi-styles: 6.2.1 3331 | string-width: 5.1.2 3332 | strip-ansi: 7.1.0 3333 | dev: true 3334 | 3335 | /wrappy@1.0.2: 3336 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 3337 | dev: true 3338 | 3339 | /yallist@4.0.0: 3340 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3341 | dev: true 3342 | 3343 | /yaml@2.3.4: 3344 | resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} 3345 | engines: {node: '>= 14'} 3346 | dev: true 3347 | 3348 | /yocto-queue@0.1.0: 3349 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 3350 | engines: {node: '>=10'} 3351 | dev: true 3352 | 3353 | /youtube-player@5.5.2: 3354 | resolution: {integrity: sha512-ZGtsemSpXnDky2AUYWgxjaopgB+shFHgXVpiJFeNB5nWEugpW1KWYDaHKuLqh2b67r24GtP6HoSW5swvf0fFIQ==} 3355 | dependencies: 3356 | debug: 2.6.9 3357 | load-script: 1.0.0 3358 | sister: 3.0.2 3359 | transitivePeerDependencies: 3360 | - supports-color 3361 | dev: false 3362 | --------------------------------------------------------------------------------