├── .env.template
├── .gitignore
├── .npmrc
├── .prettierrc
├── README.md
├── app
├── @modal
│ ├── (.)movie
│ │ └── [id]
│ │ │ └── page.tsx
│ └── default.tsx
├── api
│ └── og
│ │ └── route.tsx
├── default.tsx
├── layout.tsx
├── loader.tsx
├── movie
│ └── [id]
│ │ └── page.tsx
└── page.tsx
├── components
├── hero.tsx
├── logo.tsx
├── modal.tsx
├── movie-details.tsx
├── movies-list.tsx
├── rating-feedback-emoji.tsx
├── ratings.tsx
├── search-result.tsx
├── search.tsx
├── tooltip.tsx
└── top-nav.tsx
├── lib
├── db.server.ts
├── globals.css
├── rating-action.ts
├── schemas.ts
└── xata.codegen.ts
├── next.config.mjs
├── package.json
├── pnpm-lock.yaml
├── postcss.config.js
├── public
├── favicon.ico
├── placeholder.jpg
├── xata-logo-primary@2x.png
├── xatafly-colored.svg
├── xatafly-white.svg
├── xatafly.svg
├── xmdb-hero@2x.png
└── xmdb-og.png
├── schema.json
├── scripts
├── one-click.mjs
└── seed.mjs
├── tailwind.config.js
└── tsconfig.json
/.env.template:
--------------------------------------------------------------------------------
1 | XATA_API_KEY=XATA_API_KEY
2 | XATA_BRANCH=main
3 | VERCEL_URL=http://localhost:3000
--------------------------------------------------------------------------------
/.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 |
8 | # testing
9 | /coverage
10 |
11 | # next.js
12 | /.next/
13 | /out/
14 |
15 | # production
16 | /build
17 |
18 | # misc
19 | .DS_Store
20 | *.pem
21 |
22 | # debug
23 | npm-debug.log*
24 | yarn-debug.log*
25 | yarn-error.log*
26 | .pnpm-debug.log*
27 |
28 | # local env files
29 | .env*.local
30 | !.env.template
31 |
32 | # vercel
33 | .vercel
34 |
35 | # typescript
36 | *.tsbuildinfo
37 | next-env.d.ts
38 |
39 | .vscode
40 |
41 |
42 | ## workaround for turbopack
43 | dist.css
44 | .env
45 | .xata/
46 | .xatarc
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | # force pnpm v8 default
2 | auto-install-peers=true
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "semi": false
4 | }
5 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | [](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fxataio%2Fxmdb&integration-ids=oac_IDpMECDuYqBvAtu3wXXMQe0J&install-command=pnpm%20one-click)
6 |
7 | ## Features ⚡️
8 |
9 | - [Typo-Tolerant Full-Text Search](https://xata.io/docs/api-guide/search).
10 | - [Aggregations](https://xata.io/docs/sdk/aggregate).
11 | - [Type-Safe SDK/ORM](https://github.com/xataio/client-ts/blob/main/packages/client/README.md) (schema-based types generation).
12 | - Next.js App Directory with React Server Components.
13 | - Intercepting Route
14 | - Parallel Route
15 |
16 | ## Stack ⚙️
17 |
18 | | Package | Reason |
19 | | ----------- | ----------------------------- |
20 | | Zod | Schema validation |
21 | | Xata Client | ORM |
22 | | TailwindCSS | Styles |
23 | | vercel/OG | OG image generation |
24 | | React-Icons | SVG Icons as React components |
25 |
26 | ## Environment Setup 🧱
27 |
28 | To have your own local instance of this app, you will need 2 API keys, and your deployment URL.
29 |
30 | - [`XATA_API_TOKEN`](https://xata.io/docs/concepts/api-keys): to connect your own Xata workspace.
31 | - `VERCEL_URL`: popullated by Vercel, on your local environment it’s your local server url (`https://localhost:3000` by default).
32 |
33 | Once you have those keys, you can create a `.env.local` as shown in `.env.template`.
34 |
35 | ## Link to Xata 🦋
36 |
37 | You can run the `xata init` command with some default configuration:
38 |
39 | ```sh
40 | pnpm xata:link
41 | ```
42 |
43 | By the end you should have the `XATA_API_TOKEN` in your `.env.local` and a `.xatarc` file created.
44 |
45 | ## Database Seed 🌱
46 |
47 | Once you have a working link with the workspace, you can run:
48 |
49 | ```sh
50 | pnpm xata:seed
51 | ```
52 |
53 | This task will add **100 rows of mocked data** to get you started with a working app.
54 |
55 | ## Run Locally 🧑✈️
56 |
57 | Once you project is linked and database has data, you can start the development server.
58 |
59 | ```sh
60 | pnpm dev
61 | ```
62 |
63 | By default, server will run on [localhost:3000](http://localhost:3000).
64 |
65 | ---
66 |
67 |
68 |
69 |
70 |
--------------------------------------------------------------------------------
/app/@modal/(.)movie/[id]/page.tsx:
--------------------------------------------------------------------------------
1 | import { notFound } from 'next/navigation'
2 | import Modal from '~/components/modal'
3 | import { MovieDetails } from '~/components/movie-details'
4 |
5 | type MovieDetailsProps = {
6 | params: {
7 | id: string
8 | }
9 | }
10 |
11 | export default function Details({
12 | params: { id: movieId },
13 | }: MovieDetailsProps) {
14 | if (!movieId) return notFound()
15 | return (
16 |
17 | {/** @ts-expect-error Async Server Component */}
18 |
19 |
20 | )
21 | }
22 |
--------------------------------------------------------------------------------
/app/@modal/default.tsx:
--------------------------------------------------------------------------------
1 | export default function Default() {
2 | return null
3 | }
4 |
--------------------------------------------------------------------------------
/app/api/og/route.tsx:
--------------------------------------------------------------------------------
1 | import { ImageResponse } from 'next/og'
2 |
3 | export async function GET(req: Request) {
4 | try {
5 | const { searchParams } = new URL(req.url)
6 |
7 | // ?title=
8 | const hasTitle = searchParams.has('title')
9 | const title = hasTitle
10 | ? searchParams.get('title')?.slice(0, 100)
11 | : 'Xata Movie Database'
12 |
13 | // ?image=
14 | const image = hasTitle ? searchParams.get('image')?.slice(0, 100) : null
15 |
16 | return new ImageResponse(
17 | (
18 |
32 | {image ? (
33 |
42 |

49 |
50 | ) : null}
51 |
63 | {title}
64 |
65 |
66 | ),
67 | {
68 | width: 1200,
69 | height: 630,
70 | }
71 | )
72 | } catch (e: any) {
73 | console.log(e.message)
74 | return new Response(`Failed to generate the image`, {
75 | status: 500,
76 | })
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/app/default.tsx:
--------------------------------------------------------------------------------
1 | export default function Default() {
2 | return null
3 | }
4 |
--------------------------------------------------------------------------------
/app/layout.tsx:
--------------------------------------------------------------------------------
1 | import { type ReactNode } from 'react'
2 | import Image from 'next/image'
3 | import { TopNav } from '~/components/top-nav'
4 | import xataflyWhite from '~/public/xatafly-white.svg'
5 | import '~/lib/globals.css'
6 |
7 | import { type Metadata } from 'next'
8 |
9 | const image = `/xmdb-og.png` as const
10 | const title = 'XMDB: Xata Movie Database'
11 | const description =
12 | 'Xata Movie Database (XMDB) was built with Xata using Next.js and TypeScript to showcase Xata can be used by large databases (over 9 million records).'
13 |
14 | export const metadata: Metadata = {
15 | icons: {
16 | icon: '/favicon.ico',
17 | },
18 | title: title,
19 | description: description,
20 | openGraph: {
21 | images: [image],
22 | title: title,
23 | description: description,
24 | type: 'website',
25 | },
26 | twitter: {
27 | images: [image],
28 | title: title,
29 | description: description,
30 | card: 'summary_large_image',
31 | },
32 | }
33 |
34 | type RootLayoutProps = Record<'children' | 'modal', ReactNode>
35 |
36 | function RootLayout({ children, modal }: RootLayoutProps) {
37 | return (
38 |
39 |
40 |
41 |
42 | {children}
43 | {modal}
44 |
55 |
56 |
57 | )
58 | }
59 |
60 | export default RootLayout
61 |
--------------------------------------------------------------------------------
/app/loader.tsx:
--------------------------------------------------------------------------------
1 | export default function Loader() {
2 | return (
3 |
27 | )
28 | }
29 |
--------------------------------------------------------------------------------
/app/movie/[id]/page.tsx:
--------------------------------------------------------------------------------
1 | import { Hero } from '~/components/hero'
2 | import { fetchDefaultTitles, getMovie } from '~/lib/db.server'
3 | import { Metadata } from 'next'
4 | import { MovieDetails } from '~/components/movie-details'
5 |
6 | export async function generateMetadata({
7 | params,
8 | }: {
9 | params: { id: string }
10 | }): Promise {
11 | const { id } = params
12 | const movie = await getMovie(id)
13 | const title = `${movie?.primaryTitle} - XMDB`
14 | const description =
15 | movie?.summary || `Page for title: ${movie?.primaryTitle} on XMDB`
16 |
17 | const image = `${process.env.VERCEL_URL}/api/og?title=${encodeURI(
18 | title
19 | )}&image=${movie?.coverUrl && encodeURI(movie?.coverUrl)}`
20 |
21 | return {
22 | title,
23 | description,
24 | openGraph: {
25 | title,
26 | description,
27 | images: [image],
28 | },
29 | twitter: {
30 | title,
31 | description,
32 | images: [image],
33 | },
34 | }
35 | }
36 |
37 | export default async function Movie({ params }: { params: { id: string } }) {
38 | return (
39 |
40 |
41 | {/** @ts-expect-error Server Component */}
42 |
43 |
44 | )
45 | }
46 |
47 | // Pre-Render the default 20 homepage results' pages
48 | export async function generateStaticParams() {
49 | const { titles } = await fetchDefaultTitles()
50 |
51 | return titles.map((title) => ({
52 | id: title.id,
53 | }))
54 | }
55 |
--------------------------------------------------------------------------------
/app/page.tsx:
--------------------------------------------------------------------------------
1 | import { Suspense } from 'react'
2 | import Loader from './loader'
3 | import { getTotalTitles } from '~/lib/db.server'
4 | import { SearchResult } from '../components/search-result'
5 | import { Hero } from '~/components/hero'
6 |
7 | const Home = async ({
8 | searchParams,
9 | }: {
10 | searchParams: { search?: string }
11 | }) => {
12 | const { totalTitles = '0' } = await getTotalTitles()
13 |
14 | return (
15 |
16 |
17 | }>
18 | {/** @ts-expect-error Server Component */}
19 |
20 |
21 |
22 | )
23 | }
24 |
25 | export default Home
26 |
--------------------------------------------------------------------------------
/components/hero.tsx:
--------------------------------------------------------------------------------
1 | import { Search } from './search'
2 |
3 | type HeroProps = { searchTerm?: string; totalTitles?: string }
4 |
5 | export const Hero = ({ searchTerm, totalTitles }: HeroProps) => (
6 |
7 |
8 | Your gateway to movie exploration
9 |
10 |
11 | {totalTitles ? (
12 |
13 | Search on: {totalTitles} titles
14 |
15 | ) : null}
16 |
17 |
18 |
19 | )
20 |
--------------------------------------------------------------------------------
/components/logo.tsx:
--------------------------------------------------------------------------------
1 | import Link from 'next/link'
2 | import { RiMovie2Line as MovieRoll } from 'react-icons/ri'
3 |
4 | export function Xmdb() {
5 | return (
6 |
10 | Xata Movie Database
11 |
12 | XMDB
13 |
14 | )
15 | }
16 |
--------------------------------------------------------------------------------
/components/modal.tsx:
--------------------------------------------------------------------------------
1 | 'use client'
2 | /**
3 | * Adapted from NextGram
4 | * https://github.com/vercel-labs/nextgram/blob/main/components/modal/index.js
5 | */
6 | import { useCallback, useRef, useEffect, MouseEvent } from 'react'
7 | import { useRouter } from 'next/navigation'
8 | import { RiCloseLine as CloseIcon } from 'react-icons/ri'
9 | import { motion, AnimatePresence } from 'framer-motion'
10 |
11 | export default function Modal({ children }: { children: React.ReactNode }) {
12 | const overlay = useRef(null)
13 | const wrapper = useRef(null)
14 | const router = useRouter()
15 |
16 | const onDismiss = useCallback(() => {
17 | router.back()
18 | }, [router])
19 |
20 | const onClick = useCallback(
21 | (e: MouseEvent) => {
22 | if (e.target === overlay.current || e.target === wrapper.current) {
23 | if (onDismiss) onDismiss()
24 | }
25 | },
26 | [onDismiss, overlay, wrapper]
27 | )
28 |
29 | const onKeyDown = useCallback(
30 | (e: KeyboardEvent) => {
31 | if (e.key === 'Escape') onDismiss()
32 | },
33 | [onDismiss]
34 | )
35 |
36 | useEffect(() => {
37 | document.addEventListener('keydown', onKeyDown)
38 | document.body.style.overflow = 'hidden'
39 |
40 | return () => {
41 | document.removeEventListener('keydown', onKeyDown)
42 | document.body.style.overflow = 'auto'
43 | }
44 | }, [onKeyDown])
45 |
46 | const dropIn = {
47 | hidden: {
48 | opacity: 0,
49 | top: '45%',
50 | left: '50%',
51 | x: '-50%',
52 | y: '-50%',
53 | scale: 0.8,
54 | },
55 | visible: {
56 | opacity: 1,
57 | top: '50%',
58 | left: '50%',
59 | x: '-50%',
60 | y: '-50%',
61 | scale: 1,
62 | transition: {
63 | duration: 1,
64 | type: 'spring',
65 | },
66 | },
67 | exit: {
68 | opacity: 0,
69 | top: '55%',
70 | left: '50%',
71 | x: '-50%',
72 | y: '-50%',
73 | scale: 0.8,
74 | },
75 | }
76 |
77 | return (
78 |
83 |
84 | e.stopPropagation()}
86 | variants={dropIn}
87 | initial="hidden"
88 | animate="visible"
89 | exit="exit"
90 | ref={wrapper}
91 | className="fixed z-20 w-full max-w-4xl max-h-screen overflow-y-auto rounded-lg bg-slate-900 sm:w-full md:w-10/12 lg:w-1/2 overscroll-contain"
92 | >
93 |
99 | {children}
100 |
101 |
102 |
103 | )
104 | }
105 |
--------------------------------------------------------------------------------
/components/movie-details.tsx:
--------------------------------------------------------------------------------
1 | import { notFound } from 'next/navigation'
2 | import { getMovie } from '~/lib/db.server'
3 | import { Rating } from './ratings'
4 |
5 | export async function MovieDetails({ id }: { id: string }) {
6 | const movie = await getMovie(id)
7 |
8 | if (movie === null) return notFound()
9 |
10 | const {
11 | coverUrl = '',
12 | primaryTitle,
13 | summary,
14 | startYear,
15 | genres,
16 | runtimeMinutes,
17 | averageRating,
18 | numVotes,
19 | } = movie
20 |
21 | return (
22 |
23 |
24 |
25 | {coverUrl?.startsWith('http') && !coverUrl?.endsWith('null') ? (
26 |
27 |
28 |
33 |
34 | ) : (
35 |
36 |
41 |
42 | )}
43 |
44 |
45 | {primaryTitle}
46 |
47 | {genres && genres.length > 0 && (
48 |
49 | {genres?.map((genre) => (
50 | -
54 | {genre}
55 |
56 | ))}
57 |
58 | )}
59 |
60 |
61 |
62 | {averageRating ? (
63 |
64 | {' '}
65 | ({numVotes?.toLocaleString('en-Us')} votes)
66 |
67 | ) : null}
68 |
69 |
70 |
71 | {startYear && (
72 |
75 | )}
76 |
77 |
78 | {summary}
79 |
80 | Duration: {runtimeMinutes} minutes.
81 |
82 |
83 |
84 |
85 | )
86 | }
87 |
--------------------------------------------------------------------------------
/components/movies-list.tsx:
--------------------------------------------------------------------------------
1 | import Link from 'next/link'
2 | import { Titles } from '~/lib/xata.codegen'
3 |
4 | const MovieCard = ({ data }: { data: Titles }) => {
5 | const { primaryTitle, genres, coverUrl, summary, averageRating, id } = data
6 |
7 | return (
8 |
9 |
10 |
11 |
12 |
13 | {primaryTitle}
14 |
15 |
16 |
17 | {genres?.map((genre) => (
18 | -
22 | {genre}
23 |
24 | ))}
25 |
26 |
27 | {summary && (
28 |
29 | {summary.length > 260 ? summary.substring(0, 250) + '…' : summary}
30 |
31 | )}
32 |
33 |
34 | {coverUrl?.startsWith('http') && !coverUrl?.endsWith('null') ? (
35 |
36 |
37 |
42 |
43 | ) : (
44 |
45 |
50 |
51 | )}
52 |
53 |
54 | )
55 | }
56 |
57 | export const MoviesList = async ({ titles }: { titles: Titles[] }) => {
58 | return (
59 |
60 | {titles.map((movie) => (
61 |
62 | ))}
63 |
64 | )
65 | }
66 |
--------------------------------------------------------------------------------
/components/rating-feedback-emoji.tsx:
--------------------------------------------------------------------------------
1 | import { motion } from 'framer-motion'
2 |
3 | const emojisVariants = (yPosition: number) => {
4 | return {
5 | hidden: { translateY: -yPosition, opacity: 0 },
6 | visible: {
7 | translateY: [0, -yPosition, -(yPosition * 2)],
8 | opacity: [0, 1, 0],
9 | transition: { duration: 2 },
10 | },
11 | }
12 | }
13 |
14 | export const RatingFeedbackEmoji = ({
15 | animate,
16 | yPosition,
17 | emoji,
18 | xPosition,
19 | }: {
20 | animate: boolean
21 | yPosition: number
22 | emoji: string
23 | xPosition: 'left' | 'right' | 'center'
24 | }) => {
25 | let xPositionObj = {}
26 |
27 | if (xPosition === 'left') {
28 | xPositionObj = { right: '0' }
29 | } else if (xPosition === 'right') {
30 | xPositionObj = { left: '0' }
31 | } else if (xPosition === 'center') {
32 | xPositionObj = { left: '50%', transform: 'translateX(-50%)' }
33 | }
34 |
35 | return (
36 |
45 | {emoji}
46 |
47 | )
48 | }
49 |
--------------------------------------------------------------------------------
/components/ratings.tsx:
--------------------------------------------------------------------------------
1 | 'use client'
2 |
3 | import { useEffect, useState, useTransition } from 'react'
4 | import { FaStarHalf, FaStar } from 'react-icons/fa'
5 | import { rate } from '~/lib/rating-action'
6 | import { motion } from 'framer-motion'
7 | import { RatingFeedbackEmoji } from './rating-feedback-emoji'
8 | import { Tooltip } from './tooltip'
9 |
10 | function getRemainingValue(evaluation: number, dec: number = 0) {
11 | if (evaluation >= 5) return 0
12 |
13 | if (dec >= 0.4) {
14 | // first star is a half star
15 | return 4 - evaluation
16 | }
17 |
18 | return 5 - evaluation
19 | }
20 |
21 | function getVoteValue(
22 | currentRating: number,
23 | hasHalf: boolean,
24 | remainingIndex: number
25 | ) {
26 | if (hasHalf) {
27 | // remaining index is base 0
28 | // + 1 for the half point
29 | return currentRating + remainingIndex + 2
30 | } else {
31 | return currentRating + remainingIndex + 1
32 | }
33 | }
34 |
35 | export const Rating = ({ value, title }: { value: number; title: string }) => {
36 | const ratingValue = value / 2
37 | const decimalPoints = Number((ratingValue % 1).toFixed(1))
38 | const shouldShowDecimal = decimalPoints >= 0.4
39 | const evaluation = Array(Math.floor(ratingValue)).fill(undefined)
40 | const remaining = Array(
41 | getRemainingValue(evaluation.length, decimalPoints)
42 | ).fill(undefined)
43 |
44 | const [isPending, startTransition] = useTransition()
45 | const [isVoting, toggleIsVoting] = useState(false)
46 | const [votedRate, setVotedRate] = useState()
47 |
48 | useEffect(() => {
49 | if (isPending) {
50 | toggleIsVoting(true)
51 | }
52 |
53 | setTimeout(() => {
54 | toggleIsVoting(false)
55 | }, 4000)
56 | }, [isPending])
57 |
58 | const hoverStarColor = isVoting ? '' : 'hover:text-pink-500'
59 | const starColor = isVoting ? 'text-slate-600' : 'text-pink-500'
60 |
61 | return (
62 |
165 | )
166 | }
167 |
--------------------------------------------------------------------------------
/components/search-result.tsx:
--------------------------------------------------------------------------------
1 | import { MoviesList } from '~/components/movies-list'
2 | import { getMovies } from '~/lib/db.server'
3 |
4 | export const SearchResult = async ({
5 | searchTerm = '',
6 | }: {
7 | searchTerm?: string
8 | }) => {
9 | const { titles = [] } = await getMovies(searchTerm)
10 |
11 | return (
12 | <>
13 | {titles.length < 1 ? (
14 |
15 | The Case of Missing Data
16 |
17 | ) : (
18 |
19 | {/** @ts-expect-error Server Component */}
20 |
21 |
22 | )}
23 | >
24 | )
25 | }
26 |
--------------------------------------------------------------------------------
/components/search.tsx:
--------------------------------------------------------------------------------
1 | 'use client'
2 | import { useRouter } from 'next/navigation'
3 |
4 | export const Search = ({ term }: { term?: string }) => {
5 | const { push } = useRouter()
6 | return (
7 |
35 | )
36 | }
37 |
38 | function MagnifyingGlass({ className, ...props }: { className?: string }) {
39 | return (
40 |
55 | )
56 | }
57 |
--------------------------------------------------------------------------------
/components/tooltip.tsx:
--------------------------------------------------------------------------------
1 | import { motion } from 'framer-motion'
2 |
3 | const tooltipYposition = 16
4 |
5 | const tooltipVariants = {
6 | hidden: { translateY: -tooltipYposition, opacity: 0 },
7 | visible: {
8 | translateY: [0, -(tooltipYposition * 2), -(tooltipYposition * 3)],
9 | opacity: [0, 1, 0],
10 | transition: { duration: 4 },
11 | },
12 | }
13 |
14 | export const Tooltip = ({
15 | animate,
16 | votedRate,
17 | }: {
18 | animate: boolean
19 | votedRate: number
20 | }) => {
21 | return (
22 |
29 | You rated: {votedRate}
30 |
31 | )
32 | }
33 |
--------------------------------------------------------------------------------
/components/top-nav.tsx:
--------------------------------------------------------------------------------
1 | import Image from 'next/image'
2 | import xataflyWhite from '~/public/xatafly-white.svg'
3 | import { SiGithub as Github, SiDiscord as Discord } from 'react-icons/si'
4 | import { Xmdb } from './logo'
5 |
6 | export const TopNav = () => (
7 |
34 | )
35 |
--------------------------------------------------------------------------------
/lib/db.server.ts:
--------------------------------------------------------------------------------
1 | import 'server-only'
2 | import { getXataClient, TitlesRecord } from '~/lib/xata.codegen'
3 | import { gte, le } from '@xata.io/client'
4 | import { movie, movieList, OMDBschema } from './schemas'
5 |
6 | const xata = getXataClient()
7 |
8 | export const getMovie = async (id: TitlesRecord['id']) => {
9 | const title = await xata.db.titles.read(id)
10 |
11 | if (title === null) {
12 | console.error(`there is no movie with ${id}`)
13 | return null
14 | }
15 |
16 | return movie.parse(title)
17 | }
18 |
19 | export const getFunFacts = async () => {
20 | const { aggs } = await xata.db.titles.aggregate({
21 | totalCount: {
22 | count: '*',
23 | },
24 | sumVotes: {
25 | sum: {
26 | column: 'numVotes',
27 | },
28 | },
29 | ratingsAbove6: {
30 | count: {
31 | filter: {
32 | averageRating: { $gt: 6 },
33 | },
34 | },
35 | },
36 | rate6: {
37 | count: {
38 | filter: {
39 | averageRating: 6,
40 | },
41 | },
42 | },
43 | ratingsBelow6: {
44 | count: {
45 | filter: {
46 | averageRating: { $lt: 6 },
47 | },
48 | },
49 | },
50 | })
51 |
52 | return {
53 | totalTitles: aggs.totalCount.toLocaleString('en-US'),
54 | totalVotes: (aggs.sumVotes ?? 0).toLocaleString('en-US'),
55 | high: aggs.ratingsAbove6.toLocaleString('en-US'),
56 | low: aggs.ratingsBelow6.toLocaleString('en-US'),
57 | mid: aggs.rate6.toLocaleString('en-US'),
58 | }
59 | }
60 | export const getTotalTitles = async () => {
61 | const { aggs } = await xata.db.titles.aggregate({
62 | totalCount: {
63 | count: '*',
64 | },
65 | })
66 |
67 | return {
68 | totalTitles: aggs.totalCount.toLocaleString('en-US'),
69 | }
70 | }
71 |
72 | export const fetchDefaultTitles = async () => {
73 | const { records: titles } = await xata.db.titles
74 | .filter({
75 | $exists: 'startYear',
76 | titleType: 'movie',
77 | isAdult: false,
78 | })
79 | .filter({
80 | startYear: le(new Date().getFullYear()),
81 | averageRating: gte(7), // only movies with high average rating
82 | numVotes: gte(200000), // only movies with a bunch of votes
83 | })
84 | .sort('startYear', 'desc')
85 | .getPaginated({
86 | pagination: {
87 | size: 20,
88 | },
89 | })
90 |
91 | return {
92 | titles: movieList.parse(titles.filter(({ summary }) => summary !== 'N/A')),
93 | }
94 | }
95 |
96 | export const searchMovies = async (term: string) => {
97 | const { records } = await xata.db.titles.search(term, {
98 | fuzziness: term.length > 8 ? 2 : 0,
99 | prefix: 'phrase',
100 |
101 | filter: {
102 | titleType: 'movie',
103 | startYear: le(new Date().getFullYear()),
104 | },
105 | boosters: [
106 | {
107 | valueBooster: { column: 'primaryTitle', factor: 5, value: term },
108 | },
109 | {
110 | numericBooster: { column: 'numVotes', factor: 0.00001 },
111 | },
112 | {
113 | numericBooster: { column: 'averageRating', factor: 10 },
114 | },
115 | {
116 | numericBooster: { column: 'startYear', factor: 1 },
117 | },
118 | ],
119 | })
120 |
121 | return {
122 | titles: movieList.parse(
123 | records.filter(({ summary }) => summary && summary !== 'N/A')
124 | ),
125 | }
126 | }
127 |
128 | export const getMovies = async (term: string) => {
129 | return term.length > 0 ? await searchMovies(term) : await fetchDefaultTitles()
130 | }
131 |
132 | export const voteRating = async (vote: number, title: string) => {
133 | // UI is base 5, rating DB is base 10
134 | const voteRating = vote * 2
135 | const { averageRating, numVotes } = movie.parse(
136 | await xata.db.titles.filter('id', title).getFirst()
137 | )
138 |
139 | if (typeof averageRating !== 'number' || typeof numVotes !== 'number') {
140 | await xata.db.titles.update({
141 | id: title,
142 | averageRating: voteRating,
143 | numVotes: 1,
144 | })
145 | } else {
146 | const currentSum = averageRating * numVotes
147 | const totalVotes = numVotes + 1
148 | const newRate = (currentSum + voteRating) / totalVotes
149 | await xata.db.titles.update({
150 | id: title,
151 | averageRating: newRate,
152 | numVotes: totalVotes,
153 | })
154 | }
155 |
156 | return
157 | }
158 |
--------------------------------------------------------------------------------
/lib/globals.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | @layer components {
6 | .rating-star {
7 | text-shadow: 0 0 theme(colors.pink.500);
8 | @apply text-transparent;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/lib/rating-action.ts:
--------------------------------------------------------------------------------
1 | 'use server'
2 |
3 | import { voteRating } from './db.server'
4 |
5 | export async function rate(form: FormData) {
6 | const { title, vote } = Object.fromEntries(form.entries())
7 | await voteRating(Number(vote), title as string)
8 | }
9 |
--------------------------------------------------------------------------------
/lib/schemas.ts:
--------------------------------------------------------------------------------
1 | import { z } from 'zod'
2 |
3 | export const OMDBschema = z.object({
4 | Poster: z.string().nullish(),
5 | Plot: z.string().nullish(),
6 | })
7 |
8 | export const movie = z.object({
9 | id: z.string(),
10 | isAdult: z.boolean().default(true),
11 | numVotes: z.number().nullish(),
12 | titleType: z.string().nullish(),
13 | primaryTitle: z.string().nullish(),
14 | originalTitle: z.string().nullish(),
15 | startYear: z.number().nullish(),
16 | endYear: z.number().nullish(),
17 | runtimeMinutes: z.number().nullish(),
18 | averageRating: z.number().nullish(),
19 | coverUrl: z.string().nullish(),
20 | summary: z.string().default('to be defined'),
21 | genres: z.array(z.string()).default([]),
22 | })
23 |
24 | export const movieList = z.array(movie)
25 |
26 | export type OMDBdata = z.infer
27 |
--------------------------------------------------------------------------------
/lib/xata.codegen.ts:
--------------------------------------------------------------------------------
1 | // Generated by Xata Codegen 0.28.3. Please do not edit.
2 | import { buildClient } from "@xata.io/client";
3 | import type {
4 | BaseClientOptions,
5 | SchemaInference,
6 | XataRecord,
7 | } from "@xata.io/client";
8 |
9 | const tables = [
10 | {
11 | name: "titles",
12 | columns: [
13 | { name: "titleType", type: "string" },
14 | { name: "primaryTitle", type: "string" },
15 | { name: "originalTitle", type: "string" },
16 | { name: "isAdult", type: "bool" },
17 | { name: "startYear", type: "int" },
18 | { name: "endYear", type: "int" },
19 | { name: "runtimeMinutes", type: "float" },
20 | { name: "genres", type: "multiple" },
21 | { name: "numVotes", type: "int" },
22 | { name: "averageRating", type: "float" },
23 | { name: "coverUrl", type: "string" },
24 | { name: "summary", type: "text" },
25 | ],
26 | },
27 | ] as const;
28 |
29 | export type SchemaTables = typeof tables;
30 | export type InferredTypes = SchemaInference;
31 |
32 | export type Titles = InferredTypes["titles"];
33 | export type TitlesRecord = Titles & XataRecord;
34 |
35 | export type DatabaseSchema = {
36 | titles: TitlesRecord;
37 | };
38 |
39 | const DatabaseClient = buildClient();
40 |
41 | const defaultOptions = {
42 | databaseURL: "https://sample-databases-v0sn1n.eu-west-1.xata.sh/db/imdb",
43 | };
44 |
45 | export class XataClient extends DatabaseClient {
46 | constructor(options?: BaseClientOptions) {
47 | super({ ...defaultOptions, ...options }, tables);
48 | }
49 | }
50 |
51 | let instance: XataClient | undefined = undefined;
52 |
53 | export const getXataClient = () => {
54 | if (instance) return instance;
55 |
56 | instance = new XataClient();
57 | return instance;
58 | };
59 |
--------------------------------------------------------------------------------
/next.config.mjs:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {
3 | reactStrictMode: true,
4 | swcMinify: true,
5 | }
6 |
7 | export default nextConfig
8 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "sample-imdb",
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 | "xata:codegen": "pnpm -s dlx @xata.io/cli@latest codegen --output=lib/xata.codegen.ts",
11 | "xata:seed": "node scripts/seed.mjs",
12 | "xata:link": "pnpm -s dlx @xata.io/cli@latest init --schema=schema.json --codegen=lib/xata.codegen.ts",
13 | "one-click": "pnpm install && node scripts/one-click.mjs && node scripts/seed.mjs"
14 | },
15 | "dependencies": {
16 | "@faker-js/faker": "^7.6.0",
17 | "@vercel/og": "^0.5.0",
18 | "@xata.io/client": "^0.28.3",
19 | "dotenv": "^16.0.3",
20 | "framer-motion": "^10.12.16",
21 | "next": "latest",
22 | "react": "latest",
23 | "react-dom": "latest",
24 | "react-icons": "^4.7.1",
25 | "server-only": "^0.0.1",
26 | "zod": "^3.20.2"
27 | },
28 | "devDependencies": {
29 | "@types/node": "18.16.1",
30 | "@types/react": "18.2.0",
31 | "@types/react-dom": "18.2.1",
32 | "autoprefixer": "^10.4.12",
33 | "eslint": "8.39.0",
34 | "eslint-config-next": "13.3.1",
35 | "postcss": "^8.4.21",
36 | "prettier": "^2.8.8",
37 | "tailwindcss": "^3.3.2",
38 | "typescript": "5.1.3"
39 | },
40 | "packageManager": "pnpm@8.6.6"
41 | }
42 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '6.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | dependencies:
8 | '@faker-js/faker':
9 | specifier: ^7.6.0
10 | version: 7.6.0
11 | '@vercel/og':
12 | specifier: ^0.5.0
13 | version: 0.5.0
14 | '@xata.io/client':
15 | specifier: ^0.28.3
16 | version: 0.28.3(typescript@5.1.3)
17 | dotenv:
18 | specifier: ^16.0.3
19 | version: 16.0.3
20 | framer-motion:
21 | specifier: ^10.12.16
22 | version: 10.12.16(react-dom@18.2.0)(react@18.2.0)
23 | next:
24 | specifier: latest
25 | version: 14.0.4(react-dom@18.2.0)(react@18.2.0)
26 | react:
27 | specifier: latest
28 | version: 18.2.0
29 | react-dom:
30 | specifier: latest
31 | version: 18.2.0(react@18.2.0)
32 | react-icons:
33 | specifier: ^4.7.1
34 | version: 4.7.1(react@18.2.0)
35 | server-only:
36 | specifier: ^0.0.1
37 | version: 0.0.1
38 | zod:
39 | specifier: ^3.20.2
40 | version: 3.20.2
41 |
42 | devDependencies:
43 | '@types/node':
44 | specifier: 18.16.1
45 | version: 18.16.1
46 | '@types/react':
47 | specifier: 18.2.0
48 | version: 18.2.0
49 | '@types/react-dom':
50 | specifier: 18.2.1
51 | version: 18.2.1
52 | autoprefixer:
53 | specifier: ^10.4.12
54 | version: 10.4.12(postcss@8.4.21)
55 | eslint:
56 | specifier: 8.39.0
57 | version: 8.39.0
58 | eslint-config-next:
59 | specifier: 13.3.1
60 | version: 13.3.1(eslint@8.39.0)(typescript@5.1.3)
61 | postcss:
62 | specifier: ^8.4.21
63 | version: 8.4.21
64 | prettier:
65 | specifier: ^2.8.8
66 | version: 2.8.8
67 | tailwindcss:
68 | specifier: ^3.3.2
69 | version: 3.3.2
70 | typescript:
71 | specifier: 5.1.3
72 | version: 5.1.3
73 |
74 | packages:
75 |
76 | /@alloc/quick-lru@5.2.0:
77 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
78 | engines: {node: '>=10'}
79 | dev: true
80 |
81 | /@babel/runtime@7.22.5:
82 | resolution: {integrity: sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==}
83 | engines: {node: '>=6.9.0'}
84 | dependencies:
85 | regenerator-runtime: 0.13.11
86 | dev: true
87 |
88 | /@emotion/is-prop-valid@0.8.8:
89 | resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==}
90 | requiresBuild: true
91 | dependencies:
92 | '@emotion/memoize': 0.7.4
93 | dev: false
94 | optional: true
95 |
96 | /@emotion/memoize@0.7.4:
97 | resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==}
98 | requiresBuild: true
99 | dev: false
100 | optional: true
101 |
102 | /@eslint-community/eslint-utils@4.4.0(eslint@8.39.0):
103 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
104 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
105 | peerDependencies:
106 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
107 | dependencies:
108 | eslint: 8.39.0
109 | eslint-visitor-keys: 3.4.1
110 | dev: true
111 |
112 | /@eslint-community/regexpp@4.5.1:
113 | resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==}
114 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
115 | dev: true
116 |
117 | /@eslint/eslintrc@2.0.3:
118 | resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==}
119 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
120 | dependencies:
121 | ajv: 6.12.6
122 | debug: 4.3.4
123 | espree: 9.5.2
124 | globals: 13.20.0
125 | ignore: 5.2.4
126 | import-fresh: 3.3.0
127 | js-yaml: 4.1.0
128 | minimatch: 3.1.2
129 | strip-json-comments: 3.1.1
130 | transitivePeerDependencies:
131 | - supports-color
132 | dev: true
133 |
134 | /@eslint/js@8.39.0:
135 | resolution: {integrity: sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==}
136 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
137 | dev: true
138 |
139 | /@faker-js/faker@7.6.0:
140 | resolution: {integrity: sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==}
141 | engines: {node: '>=14.0.0', npm: '>=6.0.0'}
142 | dev: false
143 |
144 | /@humanwhocodes/config-array@0.11.10:
145 | resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==}
146 | engines: {node: '>=10.10.0'}
147 | dependencies:
148 | '@humanwhocodes/object-schema': 1.2.1
149 | debug: 4.3.4
150 | minimatch: 3.1.2
151 | transitivePeerDependencies:
152 | - supports-color
153 | dev: true
154 |
155 | /@humanwhocodes/module-importer@1.0.1:
156 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
157 | engines: {node: '>=12.22'}
158 | dev: true
159 |
160 | /@humanwhocodes/object-schema@1.2.1:
161 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
162 | dev: true
163 |
164 | /@jridgewell/gen-mapping@0.3.3:
165 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
166 | engines: {node: '>=6.0.0'}
167 | dependencies:
168 | '@jridgewell/set-array': 1.1.2
169 | '@jridgewell/sourcemap-codec': 1.4.15
170 | '@jridgewell/trace-mapping': 0.3.18
171 | dev: true
172 |
173 | /@jridgewell/resolve-uri@3.1.0:
174 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
175 | engines: {node: '>=6.0.0'}
176 | dev: true
177 |
178 | /@jridgewell/set-array@1.1.2:
179 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
180 | engines: {node: '>=6.0.0'}
181 | dev: true
182 |
183 | /@jridgewell/sourcemap-codec@1.4.14:
184 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
185 | dev: true
186 |
187 | /@jridgewell/sourcemap-codec@1.4.15:
188 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
189 | dev: true
190 |
191 | /@jridgewell/trace-mapping@0.3.18:
192 | resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==}
193 | dependencies:
194 | '@jridgewell/resolve-uri': 3.1.0
195 | '@jridgewell/sourcemap-codec': 1.4.14
196 | dev: true
197 |
198 | /@next/env@14.0.4:
199 | resolution: {integrity: sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ==}
200 | dev: false
201 |
202 | /@next/eslint-plugin-next@13.3.1:
203 | resolution: {integrity: sha512-Hpd74UrYGF+bq9bBSRDXRsRfaWkPpcwjhvachy3sr/R/5fY6feC0T0s047pUthyqcaeNsqKOY1nUGQQJNm4WyA==}
204 | dependencies:
205 | glob: 7.1.7
206 | dev: true
207 |
208 | /@next/swc-darwin-arm64@14.0.4:
209 | resolution: {integrity: sha512-mF05E/5uPthWzyYDyptcwHptucf/jj09i2SXBPwNzbgBNc+XnwzrL0U6BmPjQeOL+FiB+iG1gwBeq7mlDjSRPg==}
210 | engines: {node: '>= 10'}
211 | cpu: [arm64]
212 | os: [darwin]
213 | requiresBuild: true
214 | dev: false
215 | optional: true
216 |
217 | /@next/swc-darwin-x64@14.0.4:
218 | resolution: {integrity: sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw==}
219 | engines: {node: '>= 10'}
220 | cpu: [x64]
221 | os: [darwin]
222 | requiresBuild: true
223 | dev: false
224 | optional: true
225 |
226 | /@next/swc-linux-arm64-gnu@14.0.4:
227 | resolution: {integrity: sha512-VwwZKrBQo/MGb1VOrxJ6LrKvbpo7UbROuyMRvQKTFKhNaXjUmKTu7wxVkIuCARAfiI8JpaWAnKR+D6tzpCcM4w==}
228 | engines: {node: '>= 10'}
229 | cpu: [arm64]
230 | os: [linux]
231 | requiresBuild: true
232 | dev: false
233 | optional: true
234 |
235 | /@next/swc-linux-arm64-musl@14.0.4:
236 | resolution: {integrity: sha512-8QftwPEW37XxXoAwsn+nXlodKWHfpMaSvt81W43Wh8dv0gkheD+30ezWMcFGHLI71KiWmHK5PSQbTQGUiidvLQ==}
237 | engines: {node: '>= 10'}
238 | cpu: [arm64]
239 | os: [linux]
240 | requiresBuild: true
241 | dev: false
242 | optional: true
243 |
244 | /@next/swc-linux-x64-gnu@14.0.4:
245 | resolution: {integrity: sha512-/s/Pme3VKfZAfISlYVq2hzFS8AcAIOTnoKupc/j4WlvF6GQ0VouS2Q2KEgPuO1eMBwakWPB1aYFIA4VNVh667A==}
246 | engines: {node: '>= 10'}
247 | cpu: [x64]
248 | os: [linux]
249 | requiresBuild: true
250 | dev: false
251 | optional: true
252 |
253 | /@next/swc-linux-x64-musl@14.0.4:
254 | resolution: {integrity: sha512-m8z/6Fyal4L9Bnlxde5g2Mfa1Z7dasMQyhEhskDATpqr+Y0mjOBZcXQ7G5U+vgL22cI4T7MfvgtrM2jdopqWaw==}
255 | engines: {node: '>= 10'}
256 | cpu: [x64]
257 | os: [linux]
258 | requiresBuild: true
259 | dev: false
260 | optional: true
261 |
262 | /@next/swc-win32-arm64-msvc@14.0.4:
263 | resolution: {integrity: sha512-7Wv4PRiWIAWbm5XrGz3D8HUkCVDMMz9igffZG4NB1p4u1KoItwx9qjATHz88kwCEal/HXmbShucaslXCQXUM5w==}
264 | engines: {node: '>= 10'}
265 | cpu: [arm64]
266 | os: [win32]
267 | requiresBuild: true
268 | dev: false
269 | optional: true
270 |
271 | /@next/swc-win32-ia32-msvc@14.0.4:
272 | resolution: {integrity: sha512-zLeNEAPULsl0phfGb4kdzF/cAVIfaC7hY+kt0/d+y9mzcZHsMS3hAS829WbJ31DkSlVKQeHEjZHIdhN+Pg7Gyg==}
273 | engines: {node: '>= 10'}
274 | cpu: [ia32]
275 | os: [win32]
276 | requiresBuild: true
277 | dev: false
278 | optional: true
279 |
280 | /@next/swc-win32-x64-msvc@14.0.4:
281 | resolution: {integrity: sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==}
282 | engines: {node: '>= 10'}
283 | cpu: [x64]
284 | os: [win32]
285 | requiresBuild: true
286 | dev: false
287 | optional: true
288 |
289 | /@nodelib/fs.scandir@2.1.5:
290 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
291 | engines: {node: '>= 8'}
292 | dependencies:
293 | '@nodelib/fs.stat': 2.0.5
294 | run-parallel: 1.2.0
295 | dev: true
296 |
297 | /@nodelib/fs.stat@2.0.5:
298 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
299 | engines: {node: '>= 8'}
300 | dev: true
301 |
302 | /@nodelib/fs.walk@1.2.8:
303 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
304 | engines: {node: '>= 8'}
305 | dependencies:
306 | '@nodelib/fs.scandir': 2.1.5
307 | fastq: 1.15.0
308 | dev: true
309 |
310 | /@pkgr/utils@2.4.1:
311 | resolution: {integrity: sha512-JOqwkgFEyi+OROIyq7l4Jy28h/WwhDnG/cPkXG2Z1iFbubB6jsHW1NDvmyOzTBxHr3yg68YGirmh1JUgMqa+9w==}
312 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
313 | dependencies:
314 | cross-spawn: 7.0.3
315 | fast-glob: 3.2.12
316 | is-glob: 4.0.3
317 | open: 9.1.0
318 | picocolors: 1.0.0
319 | tslib: 2.6.2
320 | dev: true
321 |
322 | /@resvg/resvg-wasm@2.4.1:
323 | resolution: {integrity: sha512-yi6R0HyHtsoWTRA06Col4WoDs7SvlXU3DLMNP2bdAgs7HK18dTEVl1weXgxRzi8gwLteGUbIg29zulxIB3GSdg==}
324 | engines: {node: '>= 10'}
325 | dev: false
326 |
327 | /@rushstack/eslint-patch@1.3.2:
328 | resolution: {integrity: sha512-V+MvGwaHH03hYhY+k6Ef/xKd6RYlc4q8WBx+2ANmipHJcKuktNcI/NgEsJgdSUF6Lw32njT6OnrRsKYCdgHjYw==}
329 | dev: true
330 |
331 | /@shuding/opentype.js@1.4.0-beta.0:
332 | resolution: {integrity: sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==}
333 | engines: {node: '>= 8.0.0'}
334 | hasBin: true
335 | dependencies:
336 | fflate: 0.7.4
337 | string.prototype.codepointat: 0.2.1
338 | dev: false
339 |
340 | /@swc/helpers@0.5.2:
341 | resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==}
342 | dependencies:
343 | tslib: 2.6.2
344 | dev: false
345 |
346 | /@types/json5@0.0.29:
347 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
348 | dev: true
349 |
350 | /@types/node@18.16.1:
351 | resolution: {integrity: sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA==}
352 | dev: true
353 |
354 | /@types/prop-types@15.7.5:
355 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
356 | dev: true
357 |
358 | /@types/react-dom@18.2.1:
359 | resolution: {integrity: sha512-8QZEV9+Kwy7tXFmjJrp3XUKQSs9LTnE0KnoUb0YCguWBiNW0Yfb2iBMYZ08WPg35IR6P3Z0s00B15SwZnO26+w==}
360 | dependencies:
361 | '@types/react': 18.2.0
362 | dev: true
363 |
364 | /@types/react@18.2.0:
365 | resolution: {integrity: sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==}
366 | dependencies:
367 | '@types/prop-types': 15.7.5
368 | '@types/scheduler': 0.16.3
369 | csstype: 3.1.2
370 | dev: true
371 |
372 | /@types/scheduler@0.16.3:
373 | resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==}
374 | dev: true
375 |
376 | /@typescript-eslint/parser@5.59.11(eslint@8.39.0)(typescript@5.1.3):
377 | resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==}
378 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
379 | peerDependencies:
380 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
381 | typescript: '*'
382 | peerDependenciesMeta:
383 | typescript:
384 | optional: true
385 | dependencies:
386 | '@typescript-eslint/scope-manager': 5.59.11
387 | '@typescript-eslint/types': 5.59.11
388 | '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.1.3)
389 | debug: 4.3.4
390 | eslint: 8.39.0
391 | typescript: 5.1.3
392 | transitivePeerDependencies:
393 | - supports-color
394 | dev: true
395 |
396 | /@typescript-eslint/scope-manager@5.59.11:
397 | resolution: {integrity: sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==}
398 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
399 | dependencies:
400 | '@typescript-eslint/types': 5.59.11
401 | '@typescript-eslint/visitor-keys': 5.59.11
402 | dev: true
403 |
404 | /@typescript-eslint/types@5.59.11:
405 | resolution: {integrity: sha512-epoN6R6tkvBYSc+cllrz+c2sOFWkbisJZWkOE+y3xHtvYaOE6Wk6B8e114McRJwFRjGvYdJwLXQH5c9osME/AA==}
406 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
407 | dev: true
408 |
409 | /@typescript-eslint/typescript-estree@5.59.11(typescript@5.1.3):
410 | resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==}
411 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
412 | peerDependencies:
413 | typescript: '*'
414 | peerDependenciesMeta:
415 | typescript:
416 | optional: true
417 | dependencies:
418 | '@typescript-eslint/types': 5.59.11
419 | '@typescript-eslint/visitor-keys': 5.59.11
420 | debug: 4.3.4
421 | globby: 11.1.0
422 | is-glob: 4.0.3
423 | semver: 7.5.2
424 | tsutils: 3.21.0(typescript@5.1.3)
425 | typescript: 5.1.3
426 | transitivePeerDependencies:
427 | - supports-color
428 | dev: true
429 |
430 | /@typescript-eslint/visitor-keys@5.59.11:
431 | resolution: {integrity: sha512-KGYniTGG3AMTuKF9QBD7EIrvufkB6O6uX3knP73xbKLMpH+QRPcgnCxjWXSHjMRuOxFLovljqQgQpR0c7GvjoA==}
432 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
433 | dependencies:
434 | '@typescript-eslint/types': 5.59.11
435 | eslint-visitor-keys: 3.4.1
436 | dev: true
437 |
438 | /@vercel/og@0.5.0:
439 | resolution: {integrity: sha512-NrHyWFj7fLixXPjgCXlyX90VdbiIfP6IBcyimiFGgwpnmyRgLiYTvrnPIKI/JP49VF9bnYHFfVqzMupeyCamuQ==}
440 | engines: {node: '>=16'}
441 | dependencies:
442 | '@resvg/resvg-wasm': 2.4.1
443 | satori: 0.4.4
444 | yoga-wasm-web: 0.3.3
445 | dev: false
446 |
447 | /@xata.io/client@0.28.3(typescript@5.1.3):
448 | resolution: {integrity: sha512-aaXct/xWiYqHyFx2srMCnFDGrKvDA5fa6NEkFGzTHXQdYTai5hTQXcraPHxVHGlPUV3dapQWsguR4YJQugDpqQ==}
449 | peerDependencies:
450 | typescript: '>=4.5'
451 | dependencies:
452 | typescript: 5.1.3
453 | dev: false
454 |
455 | /acorn-jsx@5.3.2(acorn@8.9.0):
456 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
457 | peerDependencies:
458 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
459 | dependencies:
460 | acorn: 8.9.0
461 | dev: true
462 |
463 | /acorn@8.9.0:
464 | resolution: {integrity: sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==}
465 | engines: {node: '>=0.4.0'}
466 | hasBin: true
467 | dev: true
468 |
469 | /ajv@6.12.6:
470 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
471 | dependencies:
472 | fast-deep-equal: 3.1.3
473 | fast-json-stable-stringify: 2.1.0
474 | json-schema-traverse: 0.4.1
475 | uri-js: 4.4.1
476 | dev: true
477 |
478 | /ansi-regex@5.0.1:
479 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
480 | engines: {node: '>=8'}
481 | dev: true
482 |
483 | /ansi-styles@4.3.0:
484 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
485 | engines: {node: '>=8'}
486 | dependencies:
487 | color-convert: 2.0.1
488 | dev: true
489 |
490 | /any-promise@1.3.0:
491 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
492 | dev: true
493 |
494 | /anymatch@3.1.3:
495 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
496 | engines: {node: '>= 8'}
497 | dependencies:
498 | normalize-path: 3.0.0
499 | picomatch: 2.3.1
500 | dev: true
501 |
502 | /arg@5.0.2:
503 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
504 | dev: true
505 |
506 | /argparse@2.0.1:
507 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
508 | dev: true
509 |
510 | /aria-query@5.2.1:
511 | resolution: {integrity: sha512-7uFg4b+lETFgdaJyETnILsXgnnzVnkHcgRbwbPwevm5x/LmUlt3MjczMRe1zg824iBgXZNRPTBftNYyRSKLp2g==}
512 | dependencies:
513 | dequal: 2.0.3
514 | dev: true
515 |
516 | /array-buffer-byte-length@1.0.0:
517 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==}
518 | dependencies:
519 | call-bind: 1.0.2
520 | is-array-buffer: 3.0.2
521 | dev: true
522 |
523 | /array-includes@3.1.6:
524 | resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==}
525 | engines: {node: '>= 0.4'}
526 | dependencies:
527 | call-bind: 1.0.2
528 | define-properties: 1.2.0
529 | es-abstract: 1.21.2
530 | get-intrinsic: 1.2.1
531 | is-string: 1.0.7
532 | dev: true
533 |
534 | /array-union@2.1.0:
535 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
536 | engines: {node: '>=8'}
537 | dev: true
538 |
539 | /array.prototype.flat@1.3.1:
540 | resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==}
541 | engines: {node: '>= 0.4'}
542 | dependencies:
543 | call-bind: 1.0.2
544 | define-properties: 1.2.0
545 | es-abstract: 1.21.2
546 | es-shim-unscopables: 1.0.0
547 | dev: true
548 |
549 | /array.prototype.flatmap@1.3.1:
550 | resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==}
551 | engines: {node: '>= 0.4'}
552 | dependencies:
553 | call-bind: 1.0.2
554 | define-properties: 1.2.0
555 | es-abstract: 1.21.2
556 | es-shim-unscopables: 1.0.0
557 | dev: true
558 |
559 | /array.prototype.tosorted@1.1.1:
560 | resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==}
561 | dependencies:
562 | call-bind: 1.0.2
563 | define-properties: 1.2.0
564 | es-abstract: 1.21.2
565 | es-shim-unscopables: 1.0.0
566 | get-intrinsic: 1.2.1
567 | dev: true
568 |
569 | /ast-types-flow@0.0.7:
570 | resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==}
571 | dev: true
572 |
573 | /autoprefixer@10.4.12(postcss@8.4.21):
574 | resolution: {integrity: sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==}
575 | engines: {node: ^10 || ^12 || >=14}
576 | hasBin: true
577 | peerDependencies:
578 | postcss: ^8.1.0
579 | dependencies:
580 | browserslist: 4.21.9
581 | caniuse-lite: 1.0.30001504
582 | fraction.js: 4.2.0
583 | normalize-range: 0.1.2
584 | picocolors: 1.0.0
585 | postcss: 8.4.21
586 | postcss-value-parser: 4.2.0
587 | dev: true
588 |
589 | /available-typed-arrays@1.0.5:
590 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
591 | engines: {node: '>= 0.4'}
592 | dev: true
593 |
594 | /axe-core@4.7.2:
595 | resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==}
596 | engines: {node: '>=4'}
597 | dev: true
598 |
599 | /axobject-query@3.2.1:
600 | resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==}
601 | dependencies:
602 | dequal: 2.0.3
603 | dev: true
604 |
605 | /balanced-match@1.0.2:
606 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
607 | dev: true
608 |
609 | /base64-js@0.0.8:
610 | resolution: {integrity: sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==}
611 | engines: {node: '>= 0.4'}
612 | dev: false
613 |
614 | /big-integer@1.6.51:
615 | resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==}
616 | engines: {node: '>=0.6'}
617 | dev: true
618 |
619 | /binary-extensions@2.2.0:
620 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
621 | engines: {node: '>=8'}
622 | dev: true
623 |
624 | /bplist-parser@0.2.0:
625 | resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==}
626 | engines: {node: '>= 5.10.0'}
627 | dependencies:
628 | big-integer: 1.6.51
629 | dev: true
630 |
631 | /brace-expansion@1.1.11:
632 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
633 | dependencies:
634 | balanced-match: 1.0.2
635 | concat-map: 0.0.1
636 | dev: true
637 |
638 | /braces@3.0.2:
639 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
640 | engines: {node: '>=8'}
641 | dependencies:
642 | fill-range: 7.0.1
643 | dev: true
644 |
645 | /browserslist@4.21.9:
646 | resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==}
647 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
648 | hasBin: true
649 | dependencies:
650 | caniuse-lite: 1.0.30001504
651 | electron-to-chromium: 1.4.433
652 | node-releases: 2.0.12
653 | update-browserslist-db: 1.0.11(browserslist@4.21.9)
654 | dev: true
655 |
656 | /bundle-name@3.0.0:
657 | resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==}
658 | engines: {node: '>=12'}
659 | dependencies:
660 | run-applescript: 5.0.0
661 | dev: true
662 |
663 | /busboy@1.6.0:
664 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
665 | engines: {node: '>=10.16.0'}
666 | dependencies:
667 | streamsearch: 1.1.0
668 | dev: false
669 |
670 | /call-bind@1.0.2:
671 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
672 | dependencies:
673 | function-bind: 1.1.1
674 | get-intrinsic: 1.2.1
675 | dev: true
676 |
677 | /callsites@3.1.0:
678 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
679 | engines: {node: '>=6'}
680 | dev: true
681 |
682 | /camelcase-css@2.0.1:
683 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
684 | engines: {node: '>= 6'}
685 | dev: true
686 |
687 | /camelize@1.0.1:
688 | resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==}
689 | dev: false
690 |
691 | /caniuse-lite@1.0.30001504:
692 | resolution: {integrity: sha512-5uo7eoOp2mKbWyfMXnGO9rJWOGU8duvzEiYITW+wivukL7yHH4gX9yuRaobu6El4jPxo6jKZfG+N6fB621GD/Q==}
693 | dev: true
694 |
695 | /caniuse-lite@1.0.30001576:
696 | resolution: {integrity: sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==}
697 | dev: false
698 |
699 | /chalk@4.1.2:
700 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
701 | engines: {node: '>=10'}
702 | dependencies:
703 | ansi-styles: 4.3.0
704 | supports-color: 7.2.0
705 | dev: true
706 |
707 | /chokidar@3.5.3:
708 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
709 | engines: {node: '>= 8.10.0'}
710 | dependencies:
711 | anymatch: 3.1.3
712 | braces: 3.0.2
713 | glob-parent: 5.1.2
714 | is-binary-path: 2.1.0
715 | is-glob: 4.0.3
716 | normalize-path: 3.0.0
717 | readdirp: 3.6.0
718 | optionalDependencies:
719 | fsevents: 2.3.3
720 | dev: true
721 |
722 | /client-only@0.0.1:
723 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
724 | dev: false
725 |
726 | /color-convert@2.0.1:
727 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
728 | engines: {node: '>=7.0.0'}
729 | dependencies:
730 | color-name: 1.1.4
731 | dev: true
732 |
733 | /color-name@1.1.4:
734 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
735 | dev: true
736 |
737 | /commander@4.1.1:
738 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
739 | engines: {node: '>= 6'}
740 | dev: true
741 |
742 | /concat-map@0.0.1:
743 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
744 | dev: true
745 |
746 | /cross-spawn@7.0.3:
747 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
748 | engines: {node: '>= 8'}
749 | dependencies:
750 | path-key: 3.1.1
751 | shebang-command: 2.0.0
752 | which: 2.0.2
753 | dev: true
754 |
755 | /css-background-parser@0.1.0:
756 | resolution: {integrity: sha512-2EZLisiZQ+7m4wwur/qiYJRniHX4K5Tc9w93MT3AS0WS1u5kaZ4FKXlOTBhOjc+CgEgPiGY+fX1yWD8UwpEqUA==}
757 | dev: false
758 |
759 | /css-box-shadow@1.0.0-3:
760 | resolution: {integrity: sha512-9jaqR6e7Ohds+aWwmhe6wILJ99xYQbfmK9QQB9CcMjDbTxPZjwEmUQpU91OG05Xgm8BahT5fW+svbsQGjS/zPg==}
761 | dev: false
762 |
763 | /css-color-keywords@1.0.0:
764 | resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==}
765 | engines: {node: '>=4'}
766 | dev: false
767 |
768 | /css-to-react-native@3.2.0:
769 | resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==}
770 | dependencies:
771 | camelize: 1.0.1
772 | css-color-keywords: 1.0.0
773 | postcss-value-parser: 4.2.0
774 | dev: false
775 |
776 | /cssesc@3.0.0:
777 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
778 | engines: {node: '>=4'}
779 | hasBin: true
780 | dev: true
781 |
782 | /csstype@3.1.2:
783 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
784 | dev: true
785 |
786 | /damerau-levenshtein@1.0.8:
787 | resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
788 | dev: true
789 |
790 | /debug@3.2.7:
791 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
792 | peerDependencies:
793 | supports-color: '*'
794 | peerDependenciesMeta:
795 | supports-color:
796 | optional: true
797 | dependencies:
798 | ms: 2.1.3
799 | dev: true
800 |
801 | /debug@4.3.4:
802 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
803 | engines: {node: '>=6.0'}
804 | peerDependencies:
805 | supports-color: '*'
806 | peerDependenciesMeta:
807 | supports-color:
808 | optional: true
809 | dependencies:
810 | ms: 2.1.2
811 | dev: true
812 |
813 | /deep-is@0.1.4:
814 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
815 | dev: true
816 |
817 | /default-browser-id@3.0.0:
818 | resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==}
819 | engines: {node: '>=12'}
820 | dependencies:
821 | bplist-parser: 0.2.0
822 | untildify: 4.0.0
823 | dev: true
824 |
825 | /default-browser@4.0.0:
826 | resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==}
827 | engines: {node: '>=14.16'}
828 | dependencies:
829 | bundle-name: 3.0.0
830 | default-browser-id: 3.0.0
831 | execa: 7.1.1
832 | titleize: 3.0.0
833 | dev: true
834 |
835 | /define-lazy-prop@3.0.0:
836 | resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
837 | engines: {node: '>=12'}
838 | dev: true
839 |
840 | /define-properties@1.2.0:
841 | resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==}
842 | engines: {node: '>= 0.4'}
843 | dependencies:
844 | has-property-descriptors: 1.0.0
845 | object-keys: 1.1.1
846 | dev: true
847 |
848 | /dequal@2.0.3:
849 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
850 | engines: {node: '>=6'}
851 | dev: true
852 |
853 | /didyoumean@1.2.2:
854 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
855 | dev: true
856 |
857 | /dir-glob@3.0.1:
858 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
859 | engines: {node: '>=8'}
860 | dependencies:
861 | path-type: 4.0.0
862 | dev: true
863 |
864 | /dlv@1.1.3:
865 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
866 | dev: true
867 |
868 | /doctrine@2.1.0:
869 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
870 | engines: {node: '>=0.10.0'}
871 | dependencies:
872 | esutils: 2.0.3
873 | dev: true
874 |
875 | /doctrine@3.0.0:
876 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
877 | engines: {node: '>=6.0.0'}
878 | dependencies:
879 | esutils: 2.0.3
880 | dev: true
881 |
882 | /dotenv@16.0.3:
883 | resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==}
884 | engines: {node: '>=12'}
885 | dev: false
886 |
887 | /electron-to-chromium@1.4.433:
888 | resolution: {integrity: sha512-MGO1k0w1RgrfdbLVwmXcDhHHuxCn2qRgR7dYsJvWFKDttvYPx6FNzCGG0c/fBBvzK2LDh3UV7Tt9awnHnvAAUQ==}
889 | dev: true
890 |
891 | /emoji-regex@10.2.1:
892 | resolution: {integrity: sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==}
893 | dev: false
894 |
895 | /emoji-regex@9.2.2:
896 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
897 | dev: true
898 |
899 | /enhanced-resolve@5.15.0:
900 | resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==}
901 | engines: {node: '>=10.13.0'}
902 | dependencies:
903 | graceful-fs: 4.2.11
904 | tapable: 2.2.1
905 | dev: true
906 |
907 | /es-abstract@1.21.2:
908 | resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==}
909 | engines: {node: '>= 0.4'}
910 | dependencies:
911 | array-buffer-byte-length: 1.0.0
912 | available-typed-arrays: 1.0.5
913 | call-bind: 1.0.2
914 | es-set-tostringtag: 2.0.1
915 | es-to-primitive: 1.2.1
916 | function.prototype.name: 1.1.5
917 | get-intrinsic: 1.2.1
918 | get-symbol-description: 1.0.0
919 | globalthis: 1.0.3
920 | gopd: 1.0.1
921 | has: 1.0.3
922 | has-property-descriptors: 1.0.0
923 | has-proto: 1.0.1
924 | has-symbols: 1.0.3
925 | internal-slot: 1.0.5
926 | is-array-buffer: 3.0.2
927 | is-callable: 1.2.7
928 | is-negative-zero: 2.0.2
929 | is-regex: 1.1.4
930 | is-shared-array-buffer: 1.0.2
931 | is-string: 1.0.7
932 | is-typed-array: 1.1.10
933 | is-weakref: 1.0.2
934 | object-inspect: 1.12.3
935 | object-keys: 1.1.1
936 | object.assign: 4.1.4
937 | regexp.prototype.flags: 1.5.0
938 | safe-regex-test: 1.0.0
939 | string.prototype.trim: 1.2.7
940 | string.prototype.trimend: 1.0.6
941 | string.prototype.trimstart: 1.0.6
942 | typed-array-length: 1.0.4
943 | unbox-primitive: 1.0.2
944 | which-typed-array: 1.1.9
945 | dev: true
946 |
947 | /es-set-tostringtag@2.0.1:
948 | resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==}
949 | engines: {node: '>= 0.4'}
950 | dependencies:
951 | get-intrinsic: 1.2.1
952 | has: 1.0.3
953 | has-tostringtag: 1.0.0
954 | dev: true
955 |
956 | /es-shim-unscopables@1.0.0:
957 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==}
958 | dependencies:
959 | has: 1.0.3
960 | dev: true
961 |
962 | /es-to-primitive@1.2.1:
963 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
964 | engines: {node: '>= 0.4'}
965 | dependencies:
966 | is-callable: 1.2.7
967 | is-date-object: 1.0.5
968 | is-symbol: 1.0.4
969 | dev: true
970 |
971 | /escalade@3.1.1:
972 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
973 | engines: {node: '>=6'}
974 | dev: true
975 |
976 | /escape-string-regexp@4.0.0:
977 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
978 | engines: {node: '>=10'}
979 | dev: true
980 |
981 | /eslint-config-next@13.3.1(eslint@8.39.0)(typescript@5.1.3):
982 | resolution: {integrity: sha512-DieA5djybeE3Q0IqnDXihmhgRSp44x1ywWBBpVRA9pSx+m5Icj8hFclx7ffXlAvb9MMLN6cgj/hqJ4lka/QmvA==}
983 | peerDependencies:
984 | eslint: ^7.23.0 || ^8.0.0
985 | typescript: '>=3.3.1'
986 | peerDependenciesMeta:
987 | typescript:
988 | optional: true
989 | dependencies:
990 | '@next/eslint-plugin-next': 13.3.1
991 | '@rushstack/eslint-patch': 1.3.2
992 | '@typescript-eslint/parser': 5.59.11(eslint@8.39.0)(typescript@5.1.3)
993 | eslint: 8.39.0
994 | eslint-import-resolver-node: 0.3.7
995 | eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.39.0)
996 | eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0)
997 | eslint-plugin-jsx-a11y: 6.7.1(eslint@8.39.0)
998 | eslint-plugin-react: 7.32.2(eslint@8.39.0)
999 | eslint-plugin-react-hooks: 4.6.0(eslint@8.39.0)
1000 | typescript: 5.1.3
1001 | transitivePeerDependencies:
1002 | - eslint-import-resolver-webpack
1003 | - supports-color
1004 | dev: true
1005 |
1006 | /eslint-import-resolver-node@0.3.7:
1007 | resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==}
1008 | dependencies:
1009 | debug: 3.2.7
1010 | is-core-module: 2.12.1
1011 | resolve: 1.22.2
1012 | transitivePeerDependencies:
1013 | - supports-color
1014 | dev: true
1015 |
1016 | /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.39.0):
1017 | resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==}
1018 | engines: {node: ^14.18.0 || >=16.0.0}
1019 | peerDependencies:
1020 | eslint: '*'
1021 | eslint-plugin-import: '*'
1022 | dependencies:
1023 | debug: 4.3.4
1024 | enhanced-resolve: 5.15.0
1025 | eslint: 8.39.0
1026 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0)
1027 | eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0)
1028 | get-tsconfig: 4.6.0
1029 | globby: 13.2.0
1030 | is-core-module: 2.12.1
1031 | is-glob: 4.0.3
1032 | synckit: 0.8.5
1033 | transitivePeerDependencies:
1034 | - '@typescript-eslint/parser'
1035 | - eslint-import-resolver-node
1036 | - eslint-import-resolver-webpack
1037 | - supports-color
1038 | dev: true
1039 |
1040 | /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0):
1041 | resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
1042 | engines: {node: '>=4'}
1043 | peerDependencies:
1044 | '@typescript-eslint/parser': '*'
1045 | eslint: '*'
1046 | eslint-import-resolver-node: '*'
1047 | eslint-import-resolver-typescript: '*'
1048 | eslint-import-resolver-webpack: '*'
1049 | peerDependenciesMeta:
1050 | '@typescript-eslint/parser':
1051 | optional: true
1052 | eslint:
1053 | optional: true
1054 | eslint-import-resolver-node:
1055 | optional: true
1056 | eslint-import-resolver-typescript:
1057 | optional: true
1058 | eslint-import-resolver-webpack:
1059 | optional: true
1060 | dependencies:
1061 | '@typescript-eslint/parser': 5.59.11(eslint@8.39.0)(typescript@5.1.3)
1062 | debug: 3.2.7
1063 | eslint: 8.39.0
1064 | eslint-import-resolver-node: 0.3.7
1065 | eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.39.0)
1066 | transitivePeerDependencies:
1067 | - supports-color
1068 | dev: true
1069 |
1070 | /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0):
1071 | resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==}
1072 | engines: {node: '>=4'}
1073 | peerDependencies:
1074 | '@typescript-eslint/parser': '*'
1075 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
1076 | peerDependenciesMeta:
1077 | '@typescript-eslint/parser':
1078 | optional: true
1079 | dependencies:
1080 | '@typescript-eslint/parser': 5.59.11(eslint@8.39.0)(typescript@5.1.3)
1081 | array-includes: 3.1.6
1082 | array.prototype.flat: 1.3.1
1083 | array.prototype.flatmap: 1.3.1
1084 | debug: 3.2.7
1085 | doctrine: 2.1.0
1086 | eslint: 8.39.0
1087 | eslint-import-resolver-node: 0.3.7
1088 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0)
1089 | has: 1.0.3
1090 | is-core-module: 2.12.1
1091 | is-glob: 4.0.3
1092 | minimatch: 3.1.2
1093 | object.values: 1.1.6
1094 | resolve: 1.22.2
1095 | semver: 6.3.0
1096 | tsconfig-paths: 3.14.2
1097 | transitivePeerDependencies:
1098 | - eslint-import-resolver-typescript
1099 | - eslint-import-resolver-webpack
1100 | - supports-color
1101 | dev: true
1102 |
1103 | /eslint-plugin-jsx-a11y@6.7.1(eslint@8.39.0):
1104 | resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==}
1105 | engines: {node: '>=4.0'}
1106 | peerDependencies:
1107 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
1108 | dependencies:
1109 | '@babel/runtime': 7.22.5
1110 | aria-query: 5.2.1
1111 | array-includes: 3.1.6
1112 | array.prototype.flatmap: 1.3.1
1113 | ast-types-flow: 0.0.7
1114 | axe-core: 4.7.2
1115 | axobject-query: 3.2.1
1116 | damerau-levenshtein: 1.0.8
1117 | emoji-regex: 9.2.2
1118 | eslint: 8.39.0
1119 | has: 1.0.3
1120 | jsx-ast-utils: 3.3.3
1121 | language-tags: 1.0.5
1122 | minimatch: 3.1.2
1123 | object.entries: 1.1.6
1124 | object.fromentries: 2.0.6
1125 | semver: 6.3.0
1126 | dev: true
1127 |
1128 | /eslint-plugin-react-hooks@4.6.0(eslint@8.39.0):
1129 | resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==}
1130 | engines: {node: '>=10'}
1131 | peerDependencies:
1132 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
1133 | dependencies:
1134 | eslint: 8.39.0
1135 | dev: true
1136 |
1137 | /eslint-plugin-react@7.32.2(eslint@8.39.0):
1138 | resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==}
1139 | engines: {node: '>=4'}
1140 | peerDependencies:
1141 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
1142 | dependencies:
1143 | array-includes: 3.1.6
1144 | array.prototype.flatmap: 1.3.1
1145 | array.prototype.tosorted: 1.1.1
1146 | doctrine: 2.1.0
1147 | eslint: 8.39.0
1148 | estraverse: 5.3.0
1149 | jsx-ast-utils: 3.3.3
1150 | minimatch: 3.1.2
1151 | object.entries: 1.1.6
1152 | object.fromentries: 2.0.6
1153 | object.hasown: 1.1.2
1154 | object.values: 1.1.6
1155 | prop-types: 15.8.1
1156 | resolve: 2.0.0-next.4
1157 | semver: 6.3.0
1158 | string.prototype.matchall: 4.0.8
1159 | dev: true
1160 |
1161 | /eslint-scope@7.2.0:
1162 | resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==}
1163 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1164 | dependencies:
1165 | esrecurse: 4.3.0
1166 | estraverse: 5.3.0
1167 | dev: true
1168 |
1169 | /eslint-visitor-keys@3.4.1:
1170 | resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==}
1171 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1172 | dev: true
1173 |
1174 | /eslint@8.39.0:
1175 | resolution: {integrity: sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==}
1176 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1177 | hasBin: true
1178 | dependencies:
1179 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0)
1180 | '@eslint-community/regexpp': 4.5.1
1181 | '@eslint/eslintrc': 2.0.3
1182 | '@eslint/js': 8.39.0
1183 | '@humanwhocodes/config-array': 0.11.10
1184 | '@humanwhocodes/module-importer': 1.0.1
1185 | '@nodelib/fs.walk': 1.2.8
1186 | ajv: 6.12.6
1187 | chalk: 4.1.2
1188 | cross-spawn: 7.0.3
1189 | debug: 4.3.4
1190 | doctrine: 3.0.0
1191 | escape-string-regexp: 4.0.0
1192 | eslint-scope: 7.2.0
1193 | eslint-visitor-keys: 3.4.1
1194 | espree: 9.5.2
1195 | esquery: 1.5.0
1196 | esutils: 2.0.3
1197 | fast-deep-equal: 3.1.3
1198 | file-entry-cache: 6.0.1
1199 | find-up: 5.0.0
1200 | glob-parent: 6.0.2
1201 | globals: 13.20.0
1202 | grapheme-splitter: 1.0.4
1203 | ignore: 5.2.4
1204 | import-fresh: 3.3.0
1205 | imurmurhash: 0.1.4
1206 | is-glob: 4.0.3
1207 | is-path-inside: 3.0.3
1208 | js-sdsl: 4.4.1
1209 | js-yaml: 4.1.0
1210 | json-stable-stringify-without-jsonify: 1.0.1
1211 | levn: 0.4.1
1212 | lodash.merge: 4.6.2
1213 | minimatch: 3.1.2
1214 | natural-compare: 1.4.0
1215 | optionator: 0.9.1
1216 | strip-ansi: 6.0.1
1217 | strip-json-comments: 3.1.1
1218 | text-table: 0.2.0
1219 | transitivePeerDependencies:
1220 | - supports-color
1221 | dev: true
1222 |
1223 | /espree@9.5.2:
1224 | resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==}
1225 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1226 | dependencies:
1227 | acorn: 8.9.0
1228 | acorn-jsx: 5.3.2(acorn@8.9.0)
1229 | eslint-visitor-keys: 3.4.1
1230 | dev: true
1231 |
1232 | /esquery@1.5.0:
1233 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
1234 | engines: {node: '>=0.10'}
1235 | dependencies:
1236 | estraverse: 5.3.0
1237 | dev: true
1238 |
1239 | /esrecurse@4.3.0:
1240 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
1241 | engines: {node: '>=4.0'}
1242 | dependencies:
1243 | estraverse: 5.3.0
1244 | dev: true
1245 |
1246 | /estraverse@5.3.0:
1247 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1248 | engines: {node: '>=4.0'}
1249 | dev: true
1250 |
1251 | /esutils@2.0.3:
1252 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1253 | engines: {node: '>=0.10.0'}
1254 | dev: true
1255 |
1256 | /execa@5.1.1:
1257 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
1258 | engines: {node: '>=10'}
1259 | dependencies:
1260 | cross-spawn: 7.0.3
1261 | get-stream: 6.0.1
1262 | human-signals: 2.1.0
1263 | is-stream: 2.0.1
1264 | merge-stream: 2.0.0
1265 | npm-run-path: 4.0.1
1266 | onetime: 5.1.2
1267 | signal-exit: 3.0.7
1268 | strip-final-newline: 2.0.0
1269 | dev: true
1270 |
1271 | /execa@7.1.1:
1272 | resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==}
1273 | engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0}
1274 | dependencies:
1275 | cross-spawn: 7.0.3
1276 | get-stream: 6.0.1
1277 | human-signals: 4.3.1
1278 | is-stream: 3.0.0
1279 | merge-stream: 2.0.0
1280 | npm-run-path: 5.1.0
1281 | onetime: 6.0.0
1282 | signal-exit: 3.0.7
1283 | strip-final-newline: 3.0.0
1284 | dev: true
1285 |
1286 | /fast-deep-equal@3.1.3:
1287 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1288 | dev: true
1289 |
1290 | /fast-glob@3.2.12:
1291 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
1292 | engines: {node: '>=8.6.0'}
1293 | dependencies:
1294 | '@nodelib/fs.stat': 2.0.5
1295 | '@nodelib/fs.walk': 1.2.8
1296 | glob-parent: 5.1.2
1297 | merge2: 1.4.1
1298 | micromatch: 4.0.5
1299 | dev: true
1300 |
1301 | /fast-json-stable-stringify@2.1.0:
1302 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
1303 | dev: true
1304 |
1305 | /fast-levenshtein@2.0.6:
1306 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
1307 | dev: true
1308 |
1309 | /fastq@1.15.0:
1310 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
1311 | dependencies:
1312 | reusify: 1.0.4
1313 | dev: true
1314 |
1315 | /fflate@0.7.4:
1316 | resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==}
1317 | dev: false
1318 |
1319 | /file-entry-cache@6.0.1:
1320 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
1321 | engines: {node: ^10.12.0 || >=12.0.0}
1322 | dependencies:
1323 | flat-cache: 3.0.4
1324 | dev: true
1325 |
1326 | /fill-range@7.0.1:
1327 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
1328 | engines: {node: '>=8'}
1329 | dependencies:
1330 | to-regex-range: 5.0.1
1331 | dev: true
1332 |
1333 | /find-up@5.0.0:
1334 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
1335 | engines: {node: '>=10'}
1336 | dependencies:
1337 | locate-path: 6.0.0
1338 | path-exists: 4.0.0
1339 | dev: true
1340 |
1341 | /flat-cache@3.0.4:
1342 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
1343 | engines: {node: ^10.12.0 || >=12.0.0}
1344 | dependencies:
1345 | flatted: 3.2.7
1346 | rimraf: 3.0.2
1347 | dev: true
1348 |
1349 | /flatted@3.2.7:
1350 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
1351 | dev: true
1352 |
1353 | /for-each@0.3.3:
1354 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
1355 | dependencies:
1356 | is-callable: 1.2.7
1357 | dev: true
1358 |
1359 | /fraction.js@4.2.0:
1360 | resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
1361 | dev: true
1362 |
1363 | /framer-motion@10.12.16(react-dom@18.2.0)(react@18.2.0):
1364 | resolution: {integrity: sha512-w/SfWEIWJkYSgRHYBmln7EhcNo31ao8Xexol8lGXf1pR/tlnBtf1HcxoUmEiEh6pacB4/geku5ami53AAQWHMQ==}
1365 | peerDependencies:
1366 | react: ^18.0.0
1367 | react-dom: ^18.0.0
1368 | peerDependenciesMeta:
1369 | react:
1370 | optional: true
1371 | react-dom:
1372 | optional: true
1373 | dependencies:
1374 | react: 18.2.0
1375 | react-dom: 18.2.0(react@18.2.0)
1376 | tslib: 2.5.3
1377 | optionalDependencies:
1378 | '@emotion/is-prop-valid': 0.8.8
1379 | dev: false
1380 |
1381 | /fs.realpath@1.0.0:
1382 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
1383 | dev: true
1384 |
1385 | /fsevents@2.3.3:
1386 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
1387 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1388 | os: [darwin]
1389 | requiresBuild: true
1390 | dev: true
1391 | optional: true
1392 |
1393 | /function-bind@1.1.1:
1394 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
1395 | dev: true
1396 |
1397 | /function.prototype.name@1.1.5:
1398 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==}
1399 | engines: {node: '>= 0.4'}
1400 | dependencies:
1401 | call-bind: 1.0.2
1402 | define-properties: 1.2.0
1403 | es-abstract: 1.21.2
1404 | functions-have-names: 1.2.3
1405 | dev: true
1406 |
1407 | /functions-have-names@1.2.3:
1408 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
1409 | dev: true
1410 |
1411 | /get-intrinsic@1.2.1:
1412 | resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==}
1413 | dependencies:
1414 | function-bind: 1.1.1
1415 | has: 1.0.3
1416 | has-proto: 1.0.1
1417 | has-symbols: 1.0.3
1418 | dev: true
1419 |
1420 | /get-stream@6.0.1:
1421 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
1422 | engines: {node: '>=10'}
1423 | dev: true
1424 |
1425 | /get-symbol-description@1.0.0:
1426 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
1427 | engines: {node: '>= 0.4'}
1428 | dependencies:
1429 | call-bind: 1.0.2
1430 | get-intrinsic: 1.2.1
1431 | dev: true
1432 |
1433 | /get-tsconfig@4.6.0:
1434 | resolution: {integrity: sha512-lgbo68hHTQnFddybKbbs/RDRJnJT5YyGy2kQzVwbq+g67X73i+5MVTval34QxGkOe9X5Ujf1UYpCaphLyltjEg==}
1435 | dependencies:
1436 | resolve-pkg-maps: 1.0.0
1437 | dev: true
1438 |
1439 | /glob-parent@5.1.2:
1440 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1441 | engines: {node: '>= 6'}
1442 | dependencies:
1443 | is-glob: 4.0.3
1444 | dev: true
1445 |
1446 | /glob-parent@6.0.2:
1447 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1448 | engines: {node: '>=10.13.0'}
1449 | dependencies:
1450 | is-glob: 4.0.3
1451 | dev: true
1452 |
1453 | /glob-to-regexp@0.4.1:
1454 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
1455 | dev: false
1456 |
1457 | /glob@7.1.6:
1458 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
1459 | dependencies:
1460 | fs.realpath: 1.0.0
1461 | inflight: 1.0.6
1462 | inherits: 2.0.4
1463 | minimatch: 3.1.2
1464 | once: 1.4.0
1465 | path-is-absolute: 1.0.1
1466 | dev: true
1467 |
1468 | /glob@7.1.7:
1469 | resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==}
1470 | dependencies:
1471 | fs.realpath: 1.0.0
1472 | inflight: 1.0.6
1473 | inherits: 2.0.4
1474 | minimatch: 3.1.2
1475 | once: 1.4.0
1476 | path-is-absolute: 1.0.1
1477 | dev: true
1478 |
1479 | /glob@7.2.3:
1480 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
1481 | dependencies:
1482 | fs.realpath: 1.0.0
1483 | inflight: 1.0.6
1484 | inherits: 2.0.4
1485 | minimatch: 3.1.2
1486 | once: 1.4.0
1487 | path-is-absolute: 1.0.1
1488 | dev: true
1489 |
1490 | /globals@13.20.0:
1491 | resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==}
1492 | engines: {node: '>=8'}
1493 | dependencies:
1494 | type-fest: 0.20.2
1495 | dev: true
1496 |
1497 | /globalthis@1.0.3:
1498 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
1499 | engines: {node: '>= 0.4'}
1500 | dependencies:
1501 | define-properties: 1.2.0
1502 | dev: true
1503 |
1504 | /globby@11.1.0:
1505 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
1506 | engines: {node: '>=10'}
1507 | dependencies:
1508 | array-union: 2.1.0
1509 | dir-glob: 3.0.1
1510 | fast-glob: 3.2.12
1511 | ignore: 5.2.4
1512 | merge2: 1.4.1
1513 | slash: 3.0.0
1514 | dev: true
1515 |
1516 | /globby@13.2.0:
1517 | resolution: {integrity: sha512-jWsQfayf13NvqKUIL3Ta+CIqMnvlaIDFveWE/dpOZ9+3AMEJozsxDvKA02zync9UuvOM8rOXzsD5GqKP4OnWPQ==}
1518 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1519 | dependencies:
1520 | dir-glob: 3.0.1
1521 | fast-glob: 3.2.12
1522 | ignore: 5.2.4
1523 | merge2: 1.4.1
1524 | slash: 4.0.0
1525 | dev: true
1526 |
1527 | /gopd@1.0.1:
1528 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
1529 | dependencies:
1530 | get-intrinsic: 1.2.1
1531 | dev: true
1532 |
1533 | /graceful-fs@4.2.11:
1534 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
1535 |
1536 | /grapheme-splitter@1.0.4:
1537 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
1538 | dev: true
1539 |
1540 | /has-bigints@1.0.2:
1541 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
1542 | dev: true
1543 |
1544 | /has-flag@4.0.0:
1545 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1546 | engines: {node: '>=8'}
1547 | dev: true
1548 |
1549 | /has-property-descriptors@1.0.0:
1550 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
1551 | dependencies:
1552 | get-intrinsic: 1.2.1
1553 | dev: true
1554 |
1555 | /has-proto@1.0.1:
1556 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
1557 | engines: {node: '>= 0.4'}
1558 | dev: true
1559 |
1560 | /has-symbols@1.0.3:
1561 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
1562 | engines: {node: '>= 0.4'}
1563 | dev: true
1564 |
1565 | /has-tostringtag@1.0.0:
1566 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
1567 | engines: {node: '>= 0.4'}
1568 | dependencies:
1569 | has-symbols: 1.0.3
1570 | dev: true
1571 |
1572 | /has@1.0.3:
1573 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
1574 | engines: {node: '>= 0.4.0'}
1575 | dependencies:
1576 | function-bind: 1.1.1
1577 | dev: true
1578 |
1579 | /human-signals@2.1.0:
1580 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
1581 | engines: {node: '>=10.17.0'}
1582 | dev: true
1583 |
1584 | /human-signals@4.3.1:
1585 | resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==}
1586 | engines: {node: '>=14.18.0'}
1587 | dev: true
1588 |
1589 | /ignore@5.2.4:
1590 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
1591 | engines: {node: '>= 4'}
1592 | dev: true
1593 |
1594 | /import-fresh@3.3.0:
1595 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
1596 | engines: {node: '>=6'}
1597 | dependencies:
1598 | parent-module: 1.0.1
1599 | resolve-from: 4.0.0
1600 | dev: true
1601 |
1602 | /imurmurhash@0.1.4:
1603 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
1604 | engines: {node: '>=0.8.19'}
1605 | dev: true
1606 |
1607 | /inflight@1.0.6:
1608 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1609 | dependencies:
1610 | once: 1.4.0
1611 | wrappy: 1.0.2
1612 | dev: true
1613 |
1614 | /inherits@2.0.4:
1615 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1616 | dev: true
1617 |
1618 | /internal-slot@1.0.5:
1619 | resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
1620 | engines: {node: '>= 0.4'}
1621 | dependencies:
1622 | get-intrinsic: 1.2.1
1623 | has: 1.0.3
1624 | side-channel: 1.0.4
1625 | dev: true
1626 |
1627 | /is-array-buffer@3.0.2:
1628 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
1629 | dependencies:
1630 | call-bind: 1.0.2
1631 | get-intrinsic: 1.2.1
1632 | is-typed-array: 1.1.10
1633 | dev: true
1634 |
1635 | /is-bigint@1.0.4:
1636 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
1637 | dependencies:
1638 | has-bigints: 1.0.2
1639 | dev: true
1640 |
1641 | /is-binary-path@2.1.0:
1642 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
1643 | engines: {node: '>=8'}
1644 | dependencies:
1645 | binary-extensions: 2.2.0
1646 | dev: true
1647 |
1648 | /is-boolean-object@1.1.2:
1649 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
1650 | engines: {node: '>= 0.4'}
1651 | dependencies:
1652 | call-bind: 1.0.2
1653 | has-tostringtag: 1.0.0
1654 | dev: true
1655 |
1656 | /is-callable@1.2.7:
1657 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
1658 | engines: {node: '>= 0.4'}
1659 | dev: true
1660 |
1661 | /is-core-module@2.12.1:
1662 | resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==}
1663 | dependencies:
1664 | has: 1.0.3
1665 | dev: true
1666 |
1667 | /is-date-object@1.0.5:
1668 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
1669 | engines: {node: '>= 0.4'}
1670 | dependencies:
1671 | has-tostringtag: 1.0.0
1672 | dev: true
1673 |
1674 | /is-docker@2.2.1:
1675 | resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
1676 | engines: {node: '>=8'}
1677 | hasBin: true
1678 | dev: true
1679 |
1680 | /is-docker@3.0.0:
1681 | resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
1682 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1683 | hasBin: true
1684 | dev: true
1685 |
1686 | /is-extglob@2.1.1:
1687 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1688 | engines: {node: '>=0.10.0'}
1689 | dev: true
1690 |
1691 | /is-glob@4.0.3:
1692 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1693 | engines: {node: '>=0.10.0'}
1694 | dependencies:
1695 | is-extglob: 2.1.1
1696 | dev: true
1697 |
1698 | /is-inside-container@1.0.0:
1699 | resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
1700 | engines: {node: '>=14.16'}
1701 | hasBin: true
1702 | dependencies:
1703 | is-docker: 3.0.0
1704 | dev: true
1705 |
1706 | /is-negative-zero@2.0.2:
1707 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
1708 | engines: {node: '>= 0.4'}
1709 | dev: true
1710 |
1711 | /is-number-object@1.0.7:
1712 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
1713 | engines: {node: '>= 0.4'}
1714 | dependencies:
1715 | has-tostringtag: 1.0.0
1716 | dev: true
1717 |
1718 | /is-number@7.0.0:
1719 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1720 | engines: {node: '>=0.12.0'}
1721 | dev: true
1722 |
1723 | /is-path-inside@3.0.3:
1724 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
1725 | engines: {node: '>=8'}
1726 | dev: true
1727 |
1728 | /is-regex@1.1.4:
1729 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
1730 | engines: {node: '>= 0.4'}
1731 | dependencies:
1732 | call-bind: 1.0.2
1733 | has-tostringtag: 1.0.0
1734 | dev: true
1735 |
1736 | /is-shared-array-buffer@1.0.2:
1737 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
1738 | dependencies:
1739 | call-bind: 1.0.2
1740 | dev: true
1741 |
1742 | /is-stream@2.0.1:
1743 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
1744 | engines: {node: '>=8'}
1745 | dev: true
1746 |
1747 | /is-stream@3.0.0:
1748 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
1749 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1750 | dev: true
1751 |
1752 | /is-string@1.0.7:
1753 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
1754 | engines: {node: '>= 0.4'}
1755 | dependencies:
1756 | has-tostringtag: 1.0.0
1757 | dev: true
1758 |
1759 | /is-symbol@1.0.4:
1760 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
1761 | engines: {node: '>= 0.4'}
1762 | dependencies:
1763 | has-symbols: 1.0.3
1764 | dev: true
1765 |
1766 | /is-typed-array@1.1.10:
1767 | resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==}
1768 | engines: {node: '>= 0.4'}
1769 | dependencies:
1770 | available-typed-arrays: 1.0.5
1771 | call-bind: 1.0.2
1772 | for-each: 0.3.3
1773 | gopd: 1.0.1
1774 | has-tostringtag: 1.0.0
1775 | dev: true
1776 |
1777 | /is-weakref@1.0.2:
1778 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
1779 | dependencies:
1780 | call-bind: 1.0.2
1781 | dev: true
1782 |
1783 | /is-wsl@2.2.0:
1784 | resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
1785 | engines: {node: '>=8'}
1786 | dependencies:
1787 | is-docker: 2.2.1
1788 | dev: true
1789 |
1790 | /isexe@2.0.0:
1791 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1792 | dev: true
1793 |
1794 | /jiti@1.18.2:
1795 | resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==}
1796 | hasBin: true
1797 | dev: true
1798 |
1799 | /js-sdsl@4.4.1:
1800 | resolution: {integrity: sha512-6Gsx8R0RucyePbWqPssR8DyfuXmLBooYN5cZFZKjHGnQuaf7pEzhtpceagJxVu4LqhYY5EYA7nko3FmeHZ1KbA==}
1801 | dev: true
1802 |
1803 | /js-tokens@4.0.0:
1804 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1805 |
1806 | /js-yaml@4.1.0:
1807 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1808 | hasBin: true
1809 | dependencies:
1810 | argparse: 2.0.1
1811 | dev: true
1812 |
1813 | /json-schema-traverse@0.4.1:
1814 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1815 | dev: true
1816 |
1817 | /json-stable-stringify-without-jsonify@1.0.1:
1818 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1819 | dev: true
1820 |
1821 | /json5@1.0.2:
1822 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
1823 | hasBin: true
1824 | dependencies:
1825 | minimist: 1.2.8
1826 | dev: true
1827 |
1828 | /jsx-ast-utils@3.3.3:
1829 | resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==}
1830 | engines: {node: '>=4.0'}
1831 | dependencies:
1832 | array-includes: 3.1.6
1833 | object.assign: 4.1.4
1834 | dev: true
1835 |
1836 | /language-subtag-registry@0.3.22:
1837 | resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==}
1838 | dev: true
1839 |
1840 | /language-tags@1.0.5:
1841 | resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==}
1842 | dependencies:
1843 | language-subtag-registry: 0.3.22
1844 | dev: true
1845 |
1846 | /levn@0.4.1:
1847 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1848 | engines: {node: '>= 0.8.0'}
1849 | dependencies:
1850 | prelude-ls: 1.2.1
1851 | type-check: 0.4.0
1852 | dev: true
1853 |
1854 | /lilconfig@2.1.0:
1855 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
1856 | engines: {node: '>=10'}
1857 | dev: true
1858 |
1859 | /linebreak@1.1.0:
1860 | resolution: {integrity: sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==}
1861 | dependencies:
1862 | base64-js: 0.0.8
1863 | unicode-trie: 2.0.0
1864 | dev: false
1865 |
1866 | /lines-and-columns@1.2.4:
1867 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
1868 | dev: true
1869 |
1870 | /locate-path@6.0.0:
1871 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1872 | engines: {node: '>=10'}
1873 | dependencies:
1874 | p-locate: 5.0.0
1875 | dev: true
1876 |
1877 | /lodash.merge@4.6.2:
1878 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1879 | dev: true
1880 |
1881 | /loose-envify@1.4.0:
1882 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
1883 | hasBin: true
1884 | dependencies:
1885 | js-tokens: 4.0.0
1886 |
1887 | /lru-cache@6.0.0:
1888 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
1889 | engines: {node: '>=10'}
1890 | dependencies:
1891 | yallist: 4.0.0
1892 | dev: true
1893 |
1894 | /merge-stream@2.0.0:
1895 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
1896 | dev: true
1897 |
1898 | /merge2@1.4.1:
1899 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1900 | engines: {node: '>= 8'}
1901 | dev: true
1902 |
1903 | /micromatch@4.0.5:
1904 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
1905 | engines: {node: '>=8.6'}
1906 | dependencies:
1907 | braces: 3.0.2
1908 | picomatch: 2.3.1
1909 | dev: true
1910 |
1911 | /mimic-fn@2.1.0:
1912 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
1913 | engines: {node: '>=6'}
1914 | dev: true
1915 |
1916 | /mimic-fn@4.0.0:
1917 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
1918 | engines: {node: '>=12'}
1919 | dev: true
1920 |
1921 | /minimatch@3.1.2:
1922 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1923 | dependencies:
1924 | brace-expansion: 1.1.11
1925 | dev: true
1926 |
1927 | /minimist@1.2.8:
1928 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
1929 | dev: true
1930 |
1931 | /ms@2.1.2:
1932 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1933 | dev: true
1934 |
1935 | /ms@2.1.3:
1936 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
1937 | dev: true
1938 |
1939 | /mz@2.7.0:
1940 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
1941 | dependencies:
1942 | any-promise: 1.3.0
1943 | object-assign: 4.1.1
1944 | thenify-all: 1.6.0
1945 | dev: true
1946 |
1947 | /nanoid@3.3.6:
1948 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
1949 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1950 | hasBin: true
1951 | dev: true
1952 |
1953 | /nanoid@3.3.7:
1954 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
1955 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1956 | hasBin: true
1957 | dev: false
1958 |
1959 | /natural-compare@1.4.0:
1960 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
1961 | dev: true
1962 |
1963 | /next@14.0.4(react-dom@18.2.0)(react@18.2.0):
1964 | resolution: {integrity: sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==}
1965 | engines: {node: '>=18.17.0'}
1966 | hasBin: true
1967 | peerDependencies:
1968 | '@opentelemetry/api': ^1.1.0
1969 | react: ^18.2.0
1970 | react-dom: ^18.2.0
1971 | sass: ^1.3.0
1972 | peerDependenciesMeta:
1973 | '@opentelemetry/api':
1974 | optional: true
1975 | sass:
1976 | optional: true
1977 | dependencies:
1978 | '@next/env': 14.0.4
1979 | '@swc/helpers': 0.5.2
1980 | busboy: 1.6.0
1981 | caniuse-lite: 1.0.30001576
1982 | graceful-fs: 4.2.11
1983 | postcss: 8.4.31
1984 | react: 18.2.0
1985 | react-dom: 18.2.0(react@18.2.0)
1986 | styled-jsx: 5.1.1(react@18.2.0)
1987 | watchpack: 2.4.0
1988 | optionalDependencies:
1989 | '@next/swc-darwin-arm64': 14.0.4
1990 | '@next/swc-darwin-x64': 14.0.4
1991 | '@next/swc-linux-arm64-gnu': 14.0.4
1992 | '@next/swc-linux-arm64-musl': 14.0.4
1993 | '@next/swc-linux-x64-gnu': 14.0.4
1994 | '@next/swc-linux-x64-musl': 14.0.4
1995 | '@next/swc-win32-arm64-msvc': 14.0.4
1996 | '@next/swc-win32-ia32-msvc': 14.0.4
1997 | '@next/swc-win32-x64-msvc': 14.0.4
1998 | transitivePeerDependencies:
1999 | - '@babel/core'
2000 | - babel-plugin-macros
2001 | dev: false
2002 |
2003 | /node-releases@2.0.12:
2004 | resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==}
2005 | dev: true
2006 |
2007 | /normalize-path@3.0.0:
2008 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
2009 | engines: {node: '>=0.10.0'}
2010 | dev: true
2011 |
2012 | /normalize-range@0.1.2:
2013 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
2014 | engines: {node: '>=0.10.0'}
2015 | dev: true
2016 |
2017 | /npm-run-path@4.0.1:
2018 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
2019 | engines: {node: '>=8'}
2020 | dependencies:
2021 | path-key: 3.1.1
2022 | dev: true
2023 |
2024 | /npm-run-path@5.1.0:
2025 | resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==}
2026 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
2027 | dependencies:
2028 | path-key: 4.0.0
2029 | dev: true
2030 |
2031 | /object-assign@4.1.1:
2032 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
2033 | engines: {node: '>=0.10.0'}
2034 | dev: true
2035 |
2036 | /object-hash@3.0.0:
2037 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
2038 | engines: {node: '>= 6'}
2039 | dev: true
2040 |
2041 | /object-inspect@1.12.3:
2042 | resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
2043 | dev: true
2044 |
2045 | /object-keys@1.1.1:
2046 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
2047 | engines: {node: '>= 0.4'}
2048 | dev: true
2049 |
2050 | /object.assign@4.1.4:
2051 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==}
2052 | engines: {node: '>= 0.4'}
2053 | dependencies:
2054 | call-bind: 1.0.2
2055 | define-properties: 1.2.0
2056 | has-symbols: 1.0.3
2057 | object-keys: 1.1.1
2058 | dev: true
2059 |
2060 | /object.entries@1.1.6:
2061 | resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==}
2062 | engines: {node: '>= 0.4'}
2063 | dependencies:
2064 | call-bind: 1.0.2
2065 | define-properties: 1.2.0
2066 | es-abstract: 1.21.2
2067 | dev: true
2068 |
2069 | /object.fromentries@2.0.6:
2070 | resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==}
2071 | engines: {node: '>= 0.4'}
2072 | dependencies:
2073 | call-bind: 1.0.2
2074 | define-properties: 1.2.0
2075 | es-abstract: 1.21.2
2076 | dev: true
2077 |
2078 | /object.hasown@1.1.2:
2079 | resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==}
2080 | dependencies:
2081 | define-properties: 1.2.0
2082 | es-abstract: 1.21.2
2083 | dev: true
2084 |
2085 | /object.values@1.1.6:
2086 | resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==}
2087 | engines: {node: '>= 0.4'}
2088 | dependencies:
2089 | call-bind: 1.0.2
2090 | define-properties: 1.2.0
2091 | es-abstract: 1.21.2
2092 | dev: true
2093 |
2094 | /once@1.4.0:
2095 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
2096 | dependencies:
2097 | wrappy: 1.0.2
2098 | dev: true
2099 |
2100 | /onetime@5.1.2:
2101 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
2102 | engines: {node: '>=6'}
2103 | dependencies:
2104 | mimic-fn: 2.1.0
2105 | dev: true
2106 |
2107 | /onetime@6.0.0:
2108 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
2109 | engines: {node: '>=12'}
2110 | dependencies:
2111 | mimic-fn: 4.0.0
2112 | dev: true
2113 |
2114 | /open@9.1.0:
2115 | resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==}
2116 | engines: {node: '>=14.16'}
2117 | dependencies:
2118 | default-browser: 4.0.0
2119 | define-lazy-prop: 3.0.0
2120 | is-inside-container: 1.0.0
2121 | is-wsl: 2.2.0
2122 | dev: true
2123 |
2124 | /optionator@0.9.1:
2125 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==}
2126 | engines: {node: '>= 0.8.0'}
2127 | dependencies:
2128 | deep-is: 0.1.4
2129 | fast-levenshtein: 2.0.6
2130 | levn: 0.4.1
2131 | prelude-ls: 1.2.1
2132 | type-check: 0.4.0
2133 | word-wrap: 1.2.3
2134 | dev: true
2135 |
2136 | /p-limit@3.1.0:
2137 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
2138 | engines: {node: '>=10'}
2139 | dependencies:
2140 | yocto-queue: 0.1.0
2141 | dev: true
2142 |
2143 | /p-locate@5.0.0:
2144 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
2145 | engines: {node: '>=10'}
2146 | dependencies:
2147 | p-limit: 3.1.0
2148 | dev: true
2149 |
2150 | /pako@0.2.9:
2151 | resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==}
2152 | dev: false
2153 |
2154 | /parent-module@1.0.1:
2155 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
2156 | engines: {node: '>=6'}
2157 | dependencies:
2158 | callsites: 3.1.0
2159 | dev: true
2160 |
2161 | /path-exists@4.0.0:
2162 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
2163 | engines: {node: '>=8'}
2164 | dev: true
2165 |
2166 | /path-is-absolute@1.0.1:
2167 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
2168 | engines: {node: '>=0.10.0'}
2169 | dev: true
2170 |
2171 | /path-key@3.1.1:
2172 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
2173 | engines: {node: '>=8'}
2174 | dev: true
2175 |
2176 | /path-key@4.0.0:
2177 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
2178 | engines: {node: '>=12'}
2179 | dev: true
2180 |
2181 | /path-parse@1.0.7:
2182 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
2183 | dev: true
2184 |
2185 | /path-type@4.0.0:
2186 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
2187 | engines: {node: '>=8'}
2188 | dev: true
2189 |
2190 | /picocolors@1.0.0:
2191 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
2192 |
2193 | /picomatch@2.3.1:
2194 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
2195 | engines: {node: '>=8.6'}
2196 | dev: true
2197 |
2198 | /pify@2.3.0:
2199 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
2200 | engines: {node: '>=0.10.0'}
2201 | dev: true
2202 |
2203 | /pirates@4.0.5:
2204 | resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==}
2205 | engines: {node: '>= 6'}
2206 | dev: true
2207 |
2208 | /postcss-import@15.1.0(postcss@8.4.24):
2209 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
2210 | engines: {node: '>=14.0.0'}
2211 | peerDependencies:
2212 | postcss: ^8.0.0
2213 | dependencies:
2214 | postcss: 8.4.24
2215 | postcss-value-parser: 4.2.0
2216 | read-cache: 1.0.0
2217 | resolve: 1.22.2
2218 | dev: true
2219 |
2220 | /postcss-js@4.0.1(postcss@8.4.24):
2221 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
2222 | engines: {node: ^12 || ^14 || >= 16}
2223 | peerDependencies:
2224 | postcss: ^8.4.21
2225 | dependencies:
2226 | camelcase-css: 2.0.1
2227 | postcss: 8.4.24
2228 | dev: true
2229 |
2230 | /postcss-load-config@4.0.1(postcss@8.4.24):
2231 | resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==}
2232 | engines: {node: '>= 14'}
2233 | peerDependencies:
2234 | postcss: '>=8.0.9'
2235 | ts-node: '>=9.0.0'
2236 | peerDependenciesMeta:
2237 | postcss:
2238 | optional: true
2239 | ts-node:
2240 | optional: true
2241 | dependencies:
2242 | lilconfig: 2.1.0
2243 | postcss: 8.4.24
2244 | yaml: 2.3.1
2245 | dev: true
2246 |
2247 | /postcss-nested@6.0.1(postcss@8.4.24):
2248 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
2249 | engines: {node: '>=12.0'}
2250 | peerDependencies:
2251 | postcss: ^8.2.14
2252 | dependencies:
2253 | postcss: 8.4.24
2254 | postcss-selector-parser: 6.0.13
2255 | dev: true
2256 |
2257 | /postcss-selector-parser@6.0.13:
2258 | resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
2259 | engines: {node: '>=4'}
2260 | dependencies:
2261 | cssesc: 3.0.0
2262 | util-deprecate: 1.0.2
2263 | dev: true
2264 |
2265 | /postcss-value-parser@4.2.0:
2266 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
2267 |
2268 | /postcss@8.4.21:
2269 | resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==}
2270 | engines: {node: ^10 || ^12 || >=14}
2271 | dependencies:
2272 | nanoid: 3.3.6
2273 | picocolors: 1.0.0
2274 | source-map-js: 1.0.2
2275 | dev: true
2276 |
2277 | /postcss@8.4.24:
2278 | resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==}
2279 | engines: {node: ^10 || ^12 || >=14}
2280 | dependencies:
2281 | nanoid: 3.3.6
2282 | picocolors: 1.0.0
2283 | source-map-js: 1.0.2
2284 | dev: true
2285 |
2286 | /postcss@8.4.31:
2287 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
2288 | engines: {node: ^10 || ^12 || >=14}
2289 | dependencies:
2290 | nanoid: 3.3.7
2291 | picocolors: 1.0.0
2292 | source-map-js: 1.0.2
2293 | dev: false
2294 |
2295 | /prelude-ls@1.2.1:
2296 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
2297 | engines: {node: '>= 0.8.0'}
2298 | dev: true
2299 |
2300 | /prettier@2.8.8:
2301 | resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
2302 | engines: {node: '>=10.13.0'}
2303 | hasBin: true
2304 | dev: true
2305 |
2306 | /prop-types@15.8.1:
2307 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
2308 | dependencies:
2309 | loose-envify: 1.4.0
2310 | object-assign: 4.1.1
2311 | react-is: 16.13.1
2312 | dev: true
2313 |
2314 | /punycode@2.3.0:
2315 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
2316 | engines: {node: '>=6'}
2317 | dev: true
2318 |
2319 | /queue-microtask@1.2.3:
2320 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
2321 | dev: true
2322 |
2323 | /react-dom@18.2.0(react@18.2.0):
2324 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
2325 | peerDependencies:
2326 | react: ^18.2.0
2327 | dependencies:
2328 | loose-envify: 1.4.0
2329 | react: 18.2.0
2330 | scheduler: 0.23.0
2331 | dev: false
2332 |
2333 | /react-icons@4.7.1(react@18.2.0):
2334 | resolution: {integrity: sha512-yHd3oKGMgm7zxo3EA7H2n7vxSoiGmHk5t6Ou4bXsfcgWyhfDKMpyKfhHR6Bjnn63c+YXBLBPUql9H4wPJM6sXw==}
2335 | peerDependencies:
2336 | react: '*'
2337 | dependencies:
2338 | react: 18.2.0
2339 | dev: false
2340 |
2341 | /react-is@16.13.1:
2342 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
2343 | dev: true
2344 |
2345 | /react@18.2.0:
2346 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
2347 | engines: {node: '>=0.10.0'}
2348 | dependencies:
2349 | loose-envify: 1.4.0
2350 | dev: false
2351 |
2352 | /read-cache@1.0.0:
2353 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
2354 | dependencies:
2355 | pify: 2.3.0
2356 | dev: true
2357 |
2358 | /readdirp@3.6.0:
2359 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
2360 | engines: {node: '>=8.10.0'}
2361 | dependencies:
2362 | picomatch: 2.3.1
2363 | dev: true
2364 |
2365 | /regenerator-runtime@0.13.11:
2366 | resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
2367 | dev: true
2368 |
2369 | /regexp.prototype.flags@1.5.0:
2370 | resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==}
2371 | engines: {node: '>= 0.4'}
2372 | dependencies:
2373 | call-bind: 1.0.2
2374 | define-properties: 1.2.0
2375 | functions-have-names: 1.2.3
2376 | dev: true
2377 |
2378 | /resolve-from@4.0.0:
2379 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
2380 | engines: {node: '>=4'}
2381 | dev: true
2382 |
2383 | /resolve-pkg-maps@1.0.0:
2384 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
2385 | dev: true
2386 |
2387 | /resolve@1.22.2:
2388 | resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
2389 | hasBin: true
2390 | dependencies:
2391 | is-core-module: 2.12.1
2392 | path-parse: 1.0.7
2393 | supports-preserve-symlinks-flag: 1.0.0
2394 | dev: true
2395 |
2396 | /resolve@2.0.0-next.4:
2397 | resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==}
2398 | hasBin: true
2399 | dependencies:
2400 | is-core-module: 2.12.1
2401 | path-parse: 1.0.7
2402 | supports-preserve-symlinks-flag: 1.0.0
2403 | dev: true
2404 |
2405 | /reusify@1.0.4:
2406 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
2407 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
2408 | dev: true
2409 |
2410 | /rimraf@3.0.2:
2411 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
2412 | hasBin: true
2413 | dependencies:
2414 | glob: 7.2.3
2415 | dev: true
2416 |
2417 | /run-applescript@5.0.0:
2418 | resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==}
2419 | engines: {node: '>=12'}
2420 | dependencies:
2421 | execa: 5.1.1
2422 | dev: true
2423 |
2424 | /run-parallel@1.2.0:
2425 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
2426 | dependencies:
2427 | queue-microtask: 1.2.3
2428 | dev: true
2429 |
2430 | /safe-regex-test@1.0.0:
2431 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
2432 | dependencies:
2433 | call-bind: 1.0.2
2434 | get-intrinsic: 1.2.1
2435 | is-regex: 1.1.4
2436 | dev: true
2437 |
2438 | /satori@0.4.4:
2439 | resolution: {integrity: sha512-UCgoY7CXibFQmgI4ay4QSWUOca07nI9pY56w8NKrBq+bkGgiMbcPXZWj9bxukyJkEl/cgAICGjjxvwlDF2NYRw==}
2440 | engines: {node: '>=16'}
2441 | dependencies:
2442 | '@shuding/opentype.js': 1.4.0-beta.0
2443 | css-background-parser: 0.1.0
2444 | css-box-shadow: 1.0.0-3
2445 | css-to-react-native: 3.2.0
2446 | emoji-regex: 10.2.1
2447 | linebreak: 1.1.0
2448 | postcss-value-parser: 4.2.0
2449 | yoga-wasm-web: 0.3.3
2450 | dev: false
2451 |
2452 | /scheduler@0.23.0:
2453 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
2454 | dependencies:
2455 | loose-envify: 1.4.0
2456 | dev: false
2457 |
2458 | /semver@6.3.0:
2459 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
2460 | hasBin: true
2461 | dev: true
2462 |
2463 | /semver@7.5.2:
2464 | resolution: {integrity: sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==}
2465 | engines: {node: '>=10'}
2466 | hasBin: true
2467 | dependencies:
2468 | lru-cache: 6.0.0
2469 | dev: true
2470 |
2471 | /server-only@0.0.1:
2472 | resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==}
2473 | dev: false
2474 |
2475 | /shebang-command@2.0.0:
2476 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
2477 | engines: {node: '>=8'}
2478 | dependencies:
2479 | shebang-regex: 3.0.0
2480 | dev: true
2481 |
2482 | /shebang-regex@3.0.0:
2483 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
2484 | engines: {node: '>=8'}
2485 | dev: true
2486 |
2487 | /side-channel@1.0.4:
2488 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
2489 | dependencies:
2490 | call-bind: 1.0.2
2491 | get-intrinsic: 1.2.1
2492 | object-inspect: 1.12.3
2493 | dev: true
2494 |
2495 | /signal-exit@3.0.7:
2496 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
2497 | dev: true
2498 |
2499 | /slash@3.0.0:
2500 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
2501 | engines: {node: '>=8'}
2502 | dev: true
2503 |
2504 | /slash@4.0.0:
2505 | resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
2506 | engines: {node: '>=12'}
2507 | dev: true
2508 |
2509 | /source-map-js@1.0.2:
2510 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
2511 | engines: {node: '>=0.10.0'}
2512 |
2513 | /streamsearch@1.1.0:
2514 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
2515 | engines: {node: '>=10.0.0'}
2516 | dev: false
2517 |
2518 | /string.prototype.codepointat@0.2.1:
2519 | resolution: {integrity: sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==}
2520 | dev: false
2521 |
2522 | /string.prototype.matchall@4.0.8:
2523 | resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==}
2524 | dependencies:
2525 | call-bind: 1.0.2
2526 | define-properties: 1.2.0
2527 | es-abstract: 1.21.2
2528 | get-intrinsic: 1.2.1
2529 | has-symbols: 1.0.3
2530 | internal-slot: 1.0.5
2531 | regexp.prototype.flags: 1.5.0
2532 | side-channel: 1.0.4
2533 | dev: true
2534 |
2535 | /string.prototype.trim@1.2.7:
2536 | resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==}
2537 | engines: {node: '>= 0.4'}
2538 | dependencies:
2539 | call-bind: 1.0.2
2540 | define-properties: 1.2.0
2541 | es-abstract: 1.21.2
2542 | dev: true
2543 |
2544 | /string.prototype.trimend@1.0.6:
2545 | resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==}
2546 | dependencies:
2547 | call-bind: 1.0.2
2548 | define-properties: 1.2.0
2549 | es-abstract: 1.21.2
2550 | dev: true
2551 |
2552 | /string.prototype.trimstart@1.0.6:
2553 | resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==}
2554 | dependencies:
2555 | call-bind: 1.0.2
2556 | define-properties: 1.2.0
2557 | es-abstract: 1.21.2
2558 | dev: true
2559 |
2560 | /strip-ansi@6.0.1:
2561 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
2562 | engines: {node: '>=8'}
2563 | dependencies:
2564 | ansi-regex: 5.0.1
2565 | dev: true
2566 |
2567 | /strip-bom@3.0.0:
2568 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
2569 | engines: {node: '>=4'}
2570 | dev: true
2571 |
2572 | /strip-final-newline@2.0.0:
2573 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
2574 | engines: {node: '>=6'}
2575 | dev: true
2576 |
2577 | /strip-final-newline@3.0.0:
2578 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
2579 | engines: {node: '>=12'}
2580 | dev: true
2581 |
2582 | /strip-json-comments@3.1.1:
2583 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
2584 | engines: {node: '>=8'}
2585 | dev: true
2586 |
2587 | /styled-jsx@5.1.1(react@18.2.0):
2588 | resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
2589 | engines: {node: '>= 12.0.0'}
2590 | peerDependencies:
2591 | '@babel/core': '*'
2592 | babel-plugin-macros: '*'
2593 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0'
2594 | peerDependenciesMeta:
2595 | '@babel/core':
2596 | optional: true
2597 | babel-plugin-macros:
2598 | optional: true
2599 | dependencies:
2600 | client-only: 0.0.1
2601 | react: 18.2.0
2602 | dev: false
2603 |
2604 | /sucrase@3.32.0:
2605 | resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==}
2606 | engines: {node: '>=8'}
2607 | hasBin: true
2608 | dependencies:
2609 | '@jridgewell/gen-mapping': 0.3.3
2610 | commander: 4.1.1
2611 | glob: 7.1.6
2612 | lines-and-columns: 1.2.4
2613 | mz: 2.7.0
2614 | pirates: 4.0.5
2615 | ts-interface-checker: 0.1.13
2616 | dev: true
2617 |
2618 | /supports-color@7.2.0:
2619 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
2620 | engines: {node: '>=8'}
2621 | dependencies:
2622 | has-flag: 4.0.0
2623 | dev: true
2624 |
2625 | /supports-preserve-symlinks-flag@1.0.0:
2626 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
2627 | engines: {node: '>= 0.4'}
2628 | dev: true
2629 |
2630 | /synckit@0.8.5:
2631 | resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==}
2632 | engines: {node: ^14.18.0 || >=16.0.0}
2633 | dependencies:
2634 | '@pkgr/utils': 2.4.1
2635 | tslib: 2.5.3
2636 | dev: true
2637 |
2638 | /tailwindcss@3.3.2:
2639 | resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==}
2640 | engines: {node: '>=14.0.0'}
2641 | hasBin: true
2642 | dependencies:
2643 | '@alloc/quick-lru': 5.2.0
2644 | arg: 5.0.2
2645 | chokidar: 3.5.3
2646 | didyoumean: 1.2.2
2647 | dlv: 1.1.3
2648 | fast-glob: 3.2.12
2649 | glob-parent: 6.0.2
2650 | is-glob: 4.0.3
2651 | jiti: 1.18.2
2652 | lilconfig: 2.1.0
2653 | micromatch: 4.0.5
2654 | normalize-path: 3.0.0
2655 | object-hash: 3.0.0
2656 | picocolors: 1.0.0
2657 | postcss: 8.4.24
2658 | postcss-import: 15.1.0(postcss@8.4.24)
2659 | postcss-js: 4.0.1(postcss@8.4.24)
2660 | postcss-load-config: 4.0.1(postcss@8.4.24)
2661 | postcss-nested: 6.0.1(postcss@8.4.24)
2662 | postcss-selector-parser: 6.0.13
2663 | postcss-value-parser: 4.2.0
2664 | resolve: 1.22.2
2665 | sucrase: 3.32.0
2666 | transitivePeerDependencies:
2667 | - ts-node
2668 | dev: true
2669 |
2670 | /tapable@2.2.1:
2671 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
2672 | engines: {node: '>=6'}
2673 | dev: true
2674 |
2675 | /text-table@0.2.0:
2676 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
2677 | dev: true
2678 |
2679 | /thenify-all@1.6.0:
2680 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
2681 | engines: {node: '>=0.8'}
2682 | dependencies:
2683 | thenify: 3.3.1
2684 | dev: true
2685 |
2686 | /thenify@3.3.1:
2687 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
2688 | dependencies:
2689 | any-promise: 1.3.0
2690 | dev: true
2691 |
2692 | /tiny-inflate@1.0.3:
2693 | resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==}
2694 | dev: false
2695 |
2696 | /titleize@3.0.0:
2697 | resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==}
2698 | engines: {node: '>=12'}
2699 | dev: true
2700 |
2701 | /to-regex-range@5.0.1:
2702 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
2703 | engines: {node: '>=8.0'}
2704 | dependencies:
2705 | is-number: 7.0.0
2706 | dev: true
2707 |
2708 | /ts-interface-checker@0.1.13:
2709 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
2710 | dev: true
2711 |
2712 | /tsconfig-paths@3.14.2:
2713 | resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==}
2714 | dependencies:
2715 | '@types/json5': 0.0.29
2716 | json5: 1.0.2
2717 | minimist: 1.2.8
2718 | strip-bom: 3.0.0
2719 | dev: true
2720 |
2721 | /tslib@1.14.1:
2722 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
2723 | dev: true
2724 |
2725 | /tslib@2.5.3:
2726 | resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==}
2727 |
2728 | /tslib@2.6.2:
2729 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
2730 |
2731 | /tsutils@3.21.0(typescript@5.1.3):
2732 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
2733 | engines: {node: '>= 6'}
2734 | peerDependencies:
2735 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
2736 | dependencies:
2737 | tslib: 1.14.1
2738 | typescript: 5.1.3
2739 | dev: true
2740 |
2741 | /type-check@0.4.0:
2742 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
2743 | engines: {node: '>= 0.8.0'}
2744 | dependencies:
2745 | prelude-ls: 1.2.1
2746 | dev: true
2747 |
2748 | /type-fest@0.20.2:
2749 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
2750 | engines: {node: '>=10'}
2751 | dev: true
2752 |
2753 | /typed-array-length@1.0.4:
2754 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
2755 | dependencies:
2756 | call-bind: 1.0.2
2757 | for-each: 0.3.3
2758 | is-typed-array: 1.1.10
2759 | dev: true
2760 |
2761 | /typescript@5.1.3:
2762 | resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==}
2763 | engines: {node: '>=14.17'}
2764 | hasBin: true
2765 |
2766 | /unbox-primitive@1.0.2:
2767 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
2768 | dependencies:
2769 | call-bind: 1.0.2
2770 | has-bigints: 1.0.2
2771 | has-symbols: 1.0.3
2772 | which-boxed-primitive: 1.0.2
2773 | dev: true
2774 |
2775 | /unicode-trie@2.0.0:
2776 | resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==}
2777 | dependencies:
2778 | pako: 0.2.9
2779 | tiny-inflate: 1.0.3
2780 | dev: false
2781 |
2782 | /untildify@4.0.0:
2783 | resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==}
2784 | engines: {node: '>=8'}
2785 | dev: true
2786 |
2787 | /update-browserslist-db@1.0.11(browserslist@4.21.9):
2788 | resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
2789 | hasBin: true
2790 | peerDependencies:
2791 | browserslist: '>= 4.21.0'
2792 | dependencies:
2793 | browserslist: 4.21.9
2794 | escalade: 3.1.1
2795 | picocolors: 1.0.0
2796 | dev: true
2797 |
2798 | /uri-js@4.4.1:
2799 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
2800 | dependencies:
2801 | punycode: 2.3.0
2802 | dev: true
2803 |
2804 | /util-deprecate@1.0.2:
2805 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
2806 | dev: true
2807 |
2808 | /watchpack@2.4.0:
2809 | resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==}
2810 | engines: {node: '>=10.13.0'}
2811 | dependencies:
2812 | glob-to-regexp: 0.4.1
2813 | graceful-fs: 4.2.11
2814 | dev: false
2815 |
2816 | /which-boxed-primitive@1.0.2:
2817 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
2818 | dependencies:
2819 | is-bigint: 1.0.4
2820 | is-boolean-object: 1.1.2
2821 | is-number-object: 1.0.7
2822 | is-string: 1.0.7
2823 | is-symbol: 1.0.4
2824 | dev: true
2825 |
2826 | /which-typed-array@1.1.9:
2827 | resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==}
2828 | engines: {node: '>= 0.4'}
2829 | dependencies:
2830 | available-typed-arrays: 1.0.5
2831 | call-bind: 1.0.2
2832 | for-each: 0.3.3
2833 | gopd: 1.0.1
2834 | has-tostringtag: 1.0.0
2835 | is-typed-array: 1.1.10
2836 | dev: true
2837 |
2838 | /which@2.0.2:
2839 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
2840 | engines: {node: '>= 8'}
2841 | hasBin: true
2842 | dependencies:
2843 | isexe: 2.0.0
2844 | dev: true
2845 |
2846 | /word-wrap@1.2.3:
2847 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
2848 | engines: {node: '>=0.10.0'}
2849 | dev: true
2850 |
2851 | /wrappy@1.0.2:
2852 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
2853 | dev: true
2854 |
2855 | /yallist@4.0.0:
2856 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
2857 | dev: true
2858 |
2859 | /yaml@2.3.1:
2860 | resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==}
2861 | engines: {node: '>= 14'}
2862 | dev: true
2863 |
2864 | /yocto-queue@0.1.0:
2865 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
2866 | engines: {node: '>=10'}
2867 | dev: true
2868 |
2869 | /yoga-wasm-web@0.3.3:
2870 | resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==}
2871 | dev: false
2872 |
2873 | /zod@3.20.2:
2874 | resolution: {integrity: sha512-1MzNQdAvO+54H+EaK5YpyEy0T+Ejo/7YLHS93G3RnYWh5gaotGHwGeN/ZO687qEDU2y4CdStQYXVHIgrUl5UVQ==}
2875 | dev: false
2876 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xataio/xmdb/b0bc8caba5a5dec825de188b63523e5743b39a8d/public/favicon.ico
--------------------------------------------------------------------------------
/public/placeholder.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xataio/xmdb/b0bc8caba5a5dec825de188b63523e5743b39a8d/public/placeholder.jpg
--------------------------------------------------------------------------------
/public/xata-logo-primary@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xataio/xmdb/b0bc8caba5a5dec825de188b63523e5743b39a8d/public/xata-logo-primary@2x.png
--------------------------------------------------------------------------------
/public/xatafly-colored.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/public/xatafly-white.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/public/xatafly.svg:
--------------------------------------------------------------------------------
1 |
25 |
--------------------------------------------------------------------------------
/public/xmdb-hero@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xataio/xmdb/b0bc8caba5a5dec825de188b63523e5743b39a8d/public/xmdb-hero@2x.png
--------------------------------------------------------------------------------
/public/xmdb-og.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xataio/xmdb/b0bc8caba5a5dec825de188b63523e5743b39a8d/public/xmdb-og.png
--------------------------------------------------------------------------------
/schema.json:
--------------------------------------------------------------------------------
1 | {
2 | "tables": [
3 | {
4 | "name": "titles",
5 | "columns": [
6 | {
7 | "name": "titleType",
8 | "type": "string"
9 | },
10 | {
11 | "name": "primaryTitle",
12 | "type": "string"
13 | },
14 | {
15 | "name": "originalTitle",
16 | "type": "string"
17 | },
18 | {
19 | "name": "isAdult",
20 | "type": "bool"
21 | },
22 | {
23 | "name": "startYear",
24 | "type": "int"
25 | },
26 | {
27 | "name": "endYear",
28 | "type": "int"
29 | },
30 | {
31 | "name": "runtimeMinutes",
32 | "type": "float"
33 | },
34 | {
35 | "name": "genres",
36 | "type": "multiple"
37 | },
38 | {
39 | "name": "numVotes",
40 | "type": "int"
41 | },
42 | {
43 | "name": "averageRating",
44 | "type": "float"
45 | },
46 | {
47 | "name": "coverUrl",
48 | "type": "string"
49 | },
50 | {
51 | "name": "summary",
52 | "type": "text"
53 | }
54 | ]
55 | }
56 | ]
57 | }
58 |
--------------------------------------------------------------------------------
/scripts/one-click.mjs:
--------------------------------------------------------------------------------
1 | //@ts-check
2 | import { exec } from 'node:child_process'
3 | import dotenv from 'dotenv'
4 |
5 | dotenv.config({
6 | path: '.env.local',
7 | })
8 |
9 | try {
10 | console.log(`❯ Link and Setup database at ${process.env.XATA_DATABASE_URL}`)
11 |
12 | exec(
13 | `pnpm -s dlx @xata.io/cli@latest init --schema=schema.json --codegen=lib/xata.codegen.ts --db=${process.env.XATA_DATABASE_URL} --yes --force`,
14 | (_error, stdout, stderr) => {
15 | console.log('❯ Running pnpm dlx')
16 |
17 | if (stderr) {
18 | console.error(`Finished with issues: \n${stderr}`)
19 | return
20 | }
21 | console.log(stdout)
22 | }
23 | )
24 | } catch {
25 | console.warn('Setup gone wrong.')
26 | }
27 |
--------------------------------------------------------------------------------
/scripts/seed.mjs:
--------------------------------------------------------------------------------
1 | // @ts-check
2 | import { faker } from '@faker-js/faker'
3 | import { buildClient } from '@xata.io/client'
4 | import dotenv from 'dotenv'
5 |
6 | const MOVIE_GENRES = [
7 | 'action',
8 | 'sci-fi',
9 | 'fantasy',
10 | 'comedy',
11 | 'drama',
12 | 'animation',
13 | ]
14 |
15 | dotenv.config({
16 | path: '.env.local',
17 | })
18 |
19 | dotenv.config() // Load the default .env file
20 |
21 | class XataClient extends buildClient() {
22 | /**
23 | *
24 | * @param {{}} options
25 | */
26 | constructor(options) {
27 | super({
28 | ...options,
29 | })
30 | }
31 | }
32 |
33 | const xata = new XataClient({
34 | databaseURL: process.env.XATA_DATABASE_URL,
35 | apiKey: process.env.XATA_API_KEY,
36 | branch: process.env.XATA_BRANCH || 'main',
37 | })
38 |
39 | /**
40 | *
41 | * @param {number} rows
42 | */
43 | function setMockData(rows = 100) {
44 | const titles = []
45 |
46 | for (let i = 0; i < rows; i++) {
47 | const title = faker.music.songName()
48 | const year = faker.date.past(10).getFullYear()
49 |
50 | titles.push({
51 | titleType: faker.helpers.arrayElement(['movie', 'short']),
52 | primaryTitle: title,
53 | originalTitle: title,
54 | startYear: year,
55 | endYear: year + 1,
56 | isAdult: faker.datatype.boolean(),
57 | runtimeMinutes: faker.datatype.number({ min: 30, max: 180 }),
58 | genres: faker.helpers.arrayElements(MOVIE_GENRES),
59 | numVotes: faker.datatype.number({ min: 19000, max: 2000000 }),
60 | averageRating: faker.datatype.number({ min: 6, max: 10 }),
61 | coverUrl: faker.image.imageUrl(),
62 | summary: faker.lorem.paragraph(),
63 | })
64 | }
65 |
66 | return titles
67 | }
68 |
69 | async function isDBpopulated() {
70 | const { aggs } = await xata.db.titles.aggregate({
71 | totalCount: {
72 | count: '*',
73 | },
74 | })
75 |
76 | if (aggs.totalCount > 0) {
77 | return true
78 | }
79 |
80 | return false
81 | }
82 |
83 | export async function seed() {
84 | if (await isDBpopulated()) {
85 | console.warn('Database is not empty. Skip seeding...')
86 | return
87 | }
88 |
89 | const data = setMockData()
90 |
91 | try {
92 | await xata.db.titles.create(data)
93 |
94 | console.log(`🎉 100 records successfully inserted!`)
95 |
96 | return 'success'
97 | } catch (err) {
98 | console.error('Gone wrong: ', err)
99 | }
100 | }
101 |
102 | try {
103 | console.log(`❯ Pushing sample data to: ${process.env.XATA_DATABASE_URL}`)
104 |
105 | seed()
106 | } catch {
107 | console.warn('Seeding gone wrong.')
108 | }
109 |
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | module.exports = {
3 | content: ['./app/**/*.{js,ts,jsx,tsx}', './components/**/*.{ts,tsx}'],
4 | theme: {
5 | extend: {},
6 | },
7 | plugins: [],
8 | }
9 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "baseUrl": ".",
4 | "paths": {
5 | "~/*": ["./*"]
6 | },
7 | "target": "es5",
8 | "lib": ["dom", "dom.iterable", "esnext"],
9 | "allowJs": true,
10 | "skipLibCheck": true,
11 | "strict": true,
12 | "forceConsistentCasingInFileNames": true,
13 | "noEmit": true,
14 | "esModuleInterop": true,
15 | "module": "esnext",
16 | "moduleResolution": "node",
17 | "resolveJsonModule": true,
18 | "isolatedModules": true,
19 | "jsx": "preserve",
20 | "incremental": true,
21 | "plugins": [
22 | {
23 | "name": "next"
24 | }
25 | ]
26 | },
27 | "include": [
28 | "next-env.d.ts",
29 | "**/*.ts",
30 | "**/*.tsx",
31 | ".next/types/**/*.ts",
32 | "scripts/seed.mjs",
33 | "scripts/one-click.mjs",
34 | "app/@modal/.default.tsx"
35 | ],
36 | "exclude": ["node_modules"]
37 | }
38 |
--------------------------------------------------------------------------------