From 158973d3b6d293338858725ce1cd24065a4a299d Mon Sep 17 00:00:00 2001 From: Ryan Freeman Date: Sat, 29 Jul 2023 23:40:36 +0100 Subject: [PATCH] Migrated to app router --- app/about/page.tsx | 134 +++ app/api/rpi/[slug]/route.ts | 26 + .../api/spotify/currently-playing/route.ts | 16 +- .../api/spotify/last-played/route.ts | 15 +- app/api/views/[slug]/route.ts | 41 + app/dashboard/loading.tsx | 12 + app/dashboard/page.tsx | 88 ++ app/favicon.ico | Bin 0 -> 34494 bytes app/layout.tsx | 34 + pages/index.tsx => app/page.tsx | 91 +- app/projects/page.tsx | 57 ++ app/providers.tsx | 15 + app/sitemap.ts | 18 + app/uses/page.tsx | 107 +++ .../page.mdx | 21 +- .../ian-taylor-jOqJbvo1P9g-unsplash.jpg | Bin .../writing/docker-cheat-sheet/page.mdx | 20 +- .../page.mdx | 16 +- app/writing/page.tsx | 54 ++ components/common/Header.tsx | 52 +- components/layouts/ArticleLayout.tsx | 140 +-- components/layouts/SimpleLayout.tsx | 16 +- components/ui/Avatar.tsx | 4 +- components/ui/Navigation.tsx | 8 +- components/ui/SpotifyPlayer.tsx | 2 + components/ui/ThemeButton.tsx | 62 ++ components/ui/Views.tsx | 9 +- lib/dashboard.ts | 58 +- lib/generateRssFeed.tsx | 4 +- lib/getAllArticles.ts | 12 +- mdx-components.tsx | 15 + middleware.ts | 11 + package-lock.json | 888 ++++++++---------- package.json | 19 +- pages/_app.tsx | 50 - pages/_document.tsx | 79 -- pages/about.tsx | 146 --- pages/api/grafana/ram.ts | 8 - pages/api/grafana/rootfs.ts | 8 - pages/api/grafana/sysload.ts | 8 - pages/api/grafana/temp.ts | 8 - pages/api/grafana/uptime.ts | 8 - pages/api/views/[slug].ts | 39 - pages/dashboard.tsx | 113 --- pages/projects.tsx | 80 -- pages/uses.tsx | 122 --- pages/writing/index.tsx | 74 -- ...aws-certified-cloud-practitioner-badge.png | Bin .../ian-taylor-jOqJbvo1P9g-unsplash.jpg | Bin public/images/me.jpg | Bin 0 -> 164535 bytes public/static/icons/apple-touch-icon.png | Bin 54193 -> 0 bytes public/static/icons/favicon-16x16.png | Bin 850 -> 0 bytes public/static/icons/favicon-32x32.png | Bin 2503 -> 0 bytes public/static/icons/favicon.ico | Bin 34494 -> 0 bytes public/static/images/avatar.jpg | Bin 297964 -> 0 bytes public/static/images/photo-of-me-og.jpg | Bin 170026 -> 0 bytes public/static/images/photo-of-me.jpg | Bin 493503 -> 0 bytes tailwind.config.ts | 6 +- tsconfig.json | 10 +- 59 files changed, 1240 insertions(+), 1584 deletions(-) create mode 100644 app/about/page.tsx create mode 100644 app/api/rpi/[slug]/route.ts rename pages/api/spotify/currently-playing.ts => app/api/spotify/currently-playing/route.ts (74%) rename pages/api/spotify/last-played.ts => app/api/spotify/last-played/route.ts (80%) create mode 100644 app/api/views/[slug]/route.ts create mode 100644 app/dashboard/loading.tsx create mode 100644 app/dashboard/page.tsx create mode 100644 app/favicon.ico create mode 100644 app/layout.tsx rename pages/index.tsx => app/page.tsx (56%) create mode 100644 app/projects/page.tsx create mode 100644 app/providers.tsx create mode 100644 app/sitemap.ts create mode 100644 app/uses/page.tsx rename pages/writing/a-personal-journey-in-software-engineering.mdx => app/writing/a-personal-journey-in-software-engineering/page.mdx (81%) rename {pages => app}/writing/docker-cheat-sheet/ian-taylor-jOqJbvo1P9g-unsplash.jpg (100%) rename pages/writing/docker-cheat-sheet/index.mdx => app/writing/docker-cheat-sheet/page.mdx (82%) rename pages/writing/how-to-add-typescript-to-an-existing-next-js-project.mdx => app/writing/how-to-add-typescript-to-an-existing-next-js-project/page.mdx (82%) create mode 100644 app/writing/page.tsx create mode 100644 components/ui/ThemeButton.tsx create mode 100644 mdx-components.tsx create mode 100644 middleware.ts delete mode 100644 pages/_app.tsx delete mode 100644 pages/_document.tsx delete mode 100644 pages/about.tsx delete mode 100644 pages/api/grafana/ram.ts delete mode 100644 pages/api/grafana/rootfs.ts delete mode 100644 pages/api/grafana/sysload.ts delete mode 100644 pages/api/grafana/temp.ts delete mode 100644 pages/api/grafana/uptime.ts delete mode 100644 pages/api/views/[slug].ts delete mode 100644 pages/dashboard.tsx delete mode 100644 pages/projects.tsx delete mode 100644 pages/uses.tsx delete mode 100644 pages/writing/index.tsx rename public/{static => }/images/aws-certified-cloud-practitioner-badge.png (100%) rename public/{static => }/images/ian-taylor-jOqJbvo1P9g-unsplash.jpg (100%) create mode 100644 public/images/me.jpg delete mode 100644 public/static/icons/apple-touch-icon.png delete mode 100644 public/static/icons/favicon-16x16.png delete mode 100644 public/static/icons/favicon-32x32.png delete mode 100644 public/static/icons/favicon.ico delete mode 100644 public/static/images/avatar.jpg delete mode 100644 public/static/images/photo-of-me-og.jpg delete mode 100644 public/static/images/photo-of-me.jpg diff --git a/app/about/page.tsx b/app/about/page.tsx new file mode 100644 index 0000000..3025c80 --- /dev/null +++ b/app/about/page.tsx @@ -0,0 +1,134 @@ +import React, {ElementType, ReactNode} from 'react' +import Link from 'next/link' +import Image from 'next/image' +import {Container} from '@/components/common/Container' +import {MailIcon} from '@/components/icons/MailIcon' +import {GitHubIcon, LinkedInIcon} from '@/components/icons/SocialIcons' +import clsx from 'clsx' +import me from '@/public/images/me.jpg' +import awsCCPBadge from '@/public/images/aws-certified-cloud-practitioner-badge.png' + +export const metadata = { + title: 'About - Ryan Freeman', + description: 'I’m Ryan. I live in Dublin, Ireland where I work as a software engineer.' +} + +function SocialLink({ + className, + href, + children, + icon: Icon + }: + { + className: string, + href: string, + children: ReactNode, + icon: ElementType + }) { + return ( +
  • + + + {children} + +
  • + ) +} + +export default async function About() { + return ( + +
    +
    +
    + +
    +
    +
    +

    + I’m Ryan. I live in Dublin, Ireland where I work as a software engineer. +

    +
    +

    + I've always had an affinity for technology, and loved making things for as long as I can + remember. My first computer was an Amstrad CPC 464 way back in the 90s, which is ancient by modern + standards. My passion for tinkering continued through my teens and into adulthood where I + eventually found my way into software engineering. +

    +

    + In terms of my experience to date, I have a strong foundation in both front-end and back-end + development. I enjoy working with React to create dynamic and responsive user interfaces, + and I have a deep understanding of Java for building robust and scalable applications. + Recently, I achieved one of my milestones which was to get AWS certified by the end of 2022. +

    +

    + Currently, I work in the aviation industry for Aer Lingus as a software engineer where I work + on exciting software projects for the airline. This includes everything from bug fixing, to + working on legacy code and greenfield projects, to building customer-facing websites and services. + I am responsible for ensuring that our software is of the highest quality, and that it meets the + needs of our customers and stakeholders. The most fulfilling part of my job is knowing that the + software I contribute to will be used by many thousands of people. +

    +

    + In my free time, I enjoy staying up-to-date on the latest developments in the world of software + engineering, and I am always looking for new ways to push the boundaries of what is possible with + technology. I'm a huge advocate of free and open-source software and maintain a small + Raspberry Pi server which I use to experiment with Docker containers for self-hosted + services like Bitwarden, Nextcloud and Octoprint. +

    +

    + On the hardware side, I build and maintain my own computers and I like to upgrade and modernise + retro video game systems. When I'm not tinkering, I mostly spend time with my + family and enjoy travelling whenever I can get away. +

    +

    + That's me in a nutshell, thank you for visiting my website, I hope that you find the + information here to be insightful. If you have any questions or would like to work with me, please + don't hesitate to get in touch. +

    +
    +
    +
    +
      + + Follow on GitHub + + + Follow on LinkedIn + + + hello@ryanfreeman.dev + +
    + + AWS Certified Cloud Practitioner + +
    +
    +
    + ) +} \ No newline at end of file diff --git a/app/api/rpi/[slug]/route.ts b/app/api/rpi/[slug]/route.ts new file mode 100644 index 0000000..8af2230 --- /dev/null +++ b/app/api/rpi/[slug]/route.ts @@ -0,0 +1,26 @@ +import {NextResponse} from 'next/server' +import {getRamUsage, getRootFsUsage, getSysLoad, getTemp, getUptime} from '@/lib/grafana' + +export const fetchCache = 'force-no-store' + +export async function GET(request: Request, {params}: { params: { slug: string } }) { + const slug = params.slug + let response + if (slug === 'ram') { + response = await getRamUsage() + } else if (slug === 'rootfs') { + response = await getRootFsUsage() + } else if (slug === 'sysload') { + response = await getSysLoad() + } else if (slug === 'temp') { + response = await getTemp() + } else if (slug === 'uptime') { + response = await getUptime() + } else { + return new Response('Not Found', { + status: 404 + }) + } + + return NextResponse.json(response) +} \ No newline at end of file diff --git a/pages/api/spotify/currently-playing.ts b/app/api/spotify/currently-playing/route.ts similarity index 74% rename from pages/api/spotify/currently-playing.ts rename to app/api/spotify/currently-playing/route.ts index 62c212b..1539053 100644 --- a/pages/api/spotify/currently-playing.ts +++ b/app/api/spotify/currently-playing/route.ts @@ -1,5 +1,5 @@ +import {NextResponse} from 'next/server' import {getCurrentlyPlaying} from '@/lib/spotify' -import {NextApiRequest, NextApiResponse} from 'next' type Song = { item: { @@ -24,24 +24,18 @@ type Song = { is_playing: boolean } -export default async function handler(req: NextApiRequest, res: NextApiResponse) { +export async function GET(request: Request) { const response = await getCurrentlyPlaying() if (response.status === 204 || response.status > 400) { - return res.status(200).json({ - isPlaying: false + return new Response(JSON.stringify({isPlaying: false}), { + status: 200 }) } const song = await response.json() as Song const {item} = song - if (item === null) { - return res.status(200).json({ - isPlaying: false - }) - } - const artist = item.artists.map(artist => artist.name).join(', ') const title = item.name; const songUrl = item.external_urls.spotify @@ -49,7 +43,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) const albumImageUrl = item.album.images[0].url const isPlaying = song.is_playing; - return res.status(200).json({ + return NextResponse.json({ artist, title, songUrl, diff --git a/pages/api/spotify/last-played.ts b/app/api/spotify/last-played/route.ts similarity index 80% rename from pages/api/spotify/last-played.ts rename to app/api/spotify/last-played/route.ts index 88d611e..4a910af 100644 --- a/pages/api/spotify/last-played.ts +++ b/app/api/spotify/last-played/route.ts @@ -1,5 +1,5 @@ +import {NextResponse} from 'next/server' import {getRecentlyPlayed} from '@/lib/spotify' -import {NextApiRequest, NextApiResponse} from 'next' type Tracks = { items: [ @@ -28,19 +28,16 @@ type Tracks = { ] } -export default async function handler(req: NextApiRequest, res: NextApiResponse) { +export async function GET(request: Request) { const response = await getRecentlyPlayed() if (response.status > 400) { - return res.status(200).json({}) + return new Response(JSON.stringify({status: response.statusText}), { + status: response.status + }) } const tracks = await response.json() as Tracks - - if (tracks === null) { - return res.status(200).json({}) - } - const {track} = tracks.items.reduce((r, a) => r.played_at > a.played_at ? r : a) const title = track.name; @@ -49,7 +46,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) const album = track.album.name const albumImageUrl = track.album.images[0].url - return res.status(200).json({ + return NextResponse.json({ artist, title, songUrl, diff --git a/app/api/views/[slug]/route.ts b/app/api/views/[slug]/route.ts new file mode 100644 index 0000000..a211c8b --- /dev/null +++ b/app/api/views/[slug]/route.ts @@ -0,0 +1,41 @@ +import {NextResponse} from 'next/server' +import {cookies} from 'next/headers' +import {createServerComponentClient} from '@supabase/auth-helpers-nextjs' +import type {Database} from '@/types/database.types' + +export async function GET(request: Request, {params}: { params: { slug: string } }) { + if (typeof params.slug !== 'undefined') { + try { + const supabase = createServerComponentClient({cookies}) + const slug = params.slug.toString() + const response = await supabase + .from('analytics') + .select('views') + .eq('slug', slug) + .returns() + + const {views} = response.data[0] + if (typeof views !== 'undefined') { + return NextResponse.json({views}) + } + } catch (e) { + return new Response(JSON.stringify({status: 'Internal Server Error'}), {status: 500}) + } + } + return new Response(JSON.stringify({status: 'Not Found'}), {status: 404}) +} + +export async function POST(request: Request, {params}: { params: { slug: string } }) { + if (typeof params.slug !== 'undefined') { + try { + const supabase = createServerComponentClient({cookies}) + const slug = params.slug.toString() + // @ts-ignore + await supabase.rpc('increment_views', {page_slug: slug}) + return NextResponse.json({}) + } catch (e) { + return new Response(JSON.stringify({status: 'Internal Server Error'}), {status: 500}) + } + } + return new Response(JSON.stringify({status: 'Not Found'}), {status: 404}) +} \ No newline at end of file diff --git a/app/dashboard/loading.tsx b/app/dashboard/loading.tsx new file mode 100644 index 0000000..7300483 --- /dev/null +++ b/app/dashboard/loading.tsx @@ -0,0 +1,12 @@ +import {metadata} from './page' +import {SimpleLayout} from '@/components/layouts/SimpleLayout' + +export default function LoadingSkeleton() { + return ( + + + + ) +} \ No newline at end of file diff --git a/app/dashboard/page.tsx b/app/dashboard/page.tsx new file mode 100644 index 0000000..4df6d09 --- /dev/null +++ b/app/dashboard/page.tsx @@ -0,0 +1,88 @@ +import {SimpleLayout} from '@/components/layouts/SimpleLayout' +import {Card} from '@/components/ui/Card' +import {CardGroup} from '@/components/ui/CardGroup' +import {getDashboardData} from '@/lib/dashboard' +import {numberFormat} from '@/lib/numberFormat' + +export const metadata = { + title: 'Dashboard - Ryan Freeman', + description: 'This is my digital life in numbers, I use this dashboard to keep track of various metrics across platforms like Spotify, GitHub, Twitter and for monitoring the performance of my Raspberry Pi using Grafana and Prometheus.' +} + +const config = { + refreshInterval: 30000 +} + +export const dynamic = 'force-dynamic' + +export default async function Dashboard() { + const metrics = await getDashboardData() + // const tempData = (useSWR('api/grafana/temp', fetcher, config)).data as { temp: string } + // const sysLoadData = (useSWR('api/grafana/sysload', fetcher, config)).data as { sysLoad: string } + // const ramData = (useSWR('api/grafana/ram', fetcher, config)).data as { ramUsage: string } + // const rootFsData = (useSWR('api/grafana/rootfs', fetcher, config)).data as { rootFsUsage: string } + // const uptimeData = (useSWR('api/grafana/uptime', fetcher, config)).data as { days: number } + + return ( + + {metrics.map(({groupName, groupItems}) => ( + + {groupItems.map((item) => ( + +

    + {item.title} +

    + + {typeof item.value === "number" ? numberFormat(item.value) : item.value} + +
    + ))} +
    + ))} + {/**/} + {/* */} + {/*

    */} + {/* Temperature*/} + {/*

    */} + {/* */} + {/* {tempData ? `${tempData.temp}℃` : "—"}*/} + {/* */} + {/*
    */} + {/* */} + {/*

    */} + {/* Sys load (5m avg)*/} + {/*

    */} + {/* */} + {/* {sysLoadData ? `${sysLoadData.sysLoad}%` : "—"}*/} + {/* */} + {/*
    */} + {/* */} + {/*

    */} + {/* RAM usage*/} + {/*

    */} + {/* */} + {/* {ramData ? `${ramData.ramUsage}%` : "—"}*/} + {/* */} + {/*
    */} + {/* */} + {/*

    */} + {/* Root FS usage*/} + {/*

    */} + {/* */} + {/* {rootFsData ? `${rootFsData.rootFsUsage}%` : "—"}*/} + {/* */} + {/*
    */} + {/* */} + {/*

    */} + {/* Uptime days*/} + {/*

    */} + {/* */} + {/* {uptimeData ? `${numberFormat(uptimeData.days)}` : "—"}*/} + {/* */} + {/*
    */} + {/*
    */} +
    + ) +} \ No newline at end of file diff --git a/app/favicon.ico b/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..69f6ccc4ee846f1c7b1f324bdea43f030180c273 GIT binary patch literal 34494 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 literal 0 HcmV?d00001 diff --git a/app/layout.tsx b/app/layout.tsx new file mode 100644 index 0000000..4e773bd --- /dev/null +++ b/app/layout.tsx @@ -0,0 +1,34 @@ +import {ReactNode} from 'react' +import {Providers} from '@/app/providers' +import {Header} from '@/components/common/Header' +import {Footer} from '@/components/common/Footer' + +import '@/styles/tailwind.css' + +export const metadata = { + title: 'Ryan Freeman - Full-stack software engineer from Dublin, Ireland.', + description: 'Full-stack software engineer who enjoys building cloud-native applications.' +} + +export default function RootLayout({children}: { children: ReactNode }) { + return ( + + +
    +
    +
    +
    +
    +
    + +
    +
    + {children} +
    +
    + +
    + + + ) +} \ No newline at end of file diff --git a/pages/index.tsx b/app/page.tsx similarity index 56% rename from pages/index.tsx rename to app/page.tsx index dac658e..8fa7c83 100644 --- a/pages/index.tsx +++ b/app/page.tsx @@ -1,20 +1,13 @@ import React from 'react' -import Head from 'next/head' -import {GetStaticProps} from 'next' import {Card} from '@/components/ui/Card' -import {Resume} from '@/components/ui/Resume' -import {Container} from '@/components/common/Container' -import { - GitHubIcon, - LinkedInIcon -} from '@/components/icons/SocialIcons' -import {SocialLink} from '@/components/ui/SocialLink' import {Views} from '@/components/ui/Views' -import {formatDate} from '@/lib/formatDate' -import {generateRssFeed} from '@/lib/generateRssFeed' -import {generateSitemap} from '@/lib/generateSitemap' +import {Resume} from '@/components/ui/Resume' +import {SocialLink} from '@/components/ui/SocialLink' +import {Container} from '@/components/common/Container' +import {GitHubIcon, LinkedInIcon} from '@/components/icons/SocialIcons' import {getAllArticles} from '@/lib/getAllArticles' -import {Article} from 'types' +import {formatDate} from '@/lib/formatDate' +import type {Article} from '@/types' function Article(article: Article) { return ( @@ -38,58 +31,13 @@ function Article(article: Article) { ) } -export default function Home({articles}: { articles: Article[] }) { +export default async function Home() { + const articles = (await getAllArticles()) + .slice(0, 3) + .map(component => component) + return ( <> - - - Ryan Freeman - Full-stack software engineer from Dublin, Ireland. - - - - - - - - - - - - - -

    @@ -135,19 +83,4 @@ export default function Home({articles}: { articles: Article[] }) { ) -} - -export const getStaticProps: GetStaticProps = async () => { - if (process.env.NODE_ENV === 'production') { - await generateRssFeed() - await generateSitemap() - } - - return { - props: { - articles: (await getAllArticles()) - .slice(0, 3) - .map(({component, ...meta}) => meta), - } - } -} +} \ No newline at end of file diff --git a/app/projects/page.tsx b/app/projects/page.tsx new file mode 100644 index 0000000..5cbeb03 --- /dev/null +++ b/app/projects/page.tsx @@ -0,0 +1,57 @@ +import {ShareIcon} from '@/components/icons/ShareIcon' +import {SparklesIcon} from '@/components/icons/SparklesIcon' +import {SimpleLayout} from '@/components/layouts/SimpleLayout' +import {Card} from '@/components/ui/Card' +import {getPinnedRepos} from '@/lib/github' +import {numberFormat} from '@/lib/numberFormat' + +export const metadata = { + title: 'Projects - Ryan Freeman', + description: 'Here\'s a selection of academic and personal projects that I have worked on. Many of them are open-source, so if you see something that piques your interest, check out the code and contribute if you have ideas for how it can be improved.' +} + +export default async function Projects() { + const pinnedRepos = (await getPinnedRepos()).sort((a, b) => b.stargazerCount - a.stargazerCount) + + return ( + +
      + {pinnedRepos.map((repo) => ( + +

      + {repo.name} +

      + {repo.description} +
      +

      + {repo.primaryLanguage.name} + +

      +
      +

      + {numberFormat(repo.stargazerCount)} + +

      +

      + {numberFormat(repo.forkCount)} + +

      +
      +
      +
      + ))} +
    +
    + ) +} \ No newline at end of file diff --git a/app/providers.tsx b/app/providers.tsx new file mode 100644 index 0000000..fb49c44 --- /dev/null +++ b/app/providers.tsx @@ -0,0 +1,15 @@ +'use client' + +import {ReactNode} from 'react' +import {ThemeProvider} from 'next-themes' + +export function Providers({children}: { + children: ReactNode +}) { + + return ( + + {children} + + ) +} \ No newline at end of file diff --git a/app/sitemap.ts b/app/sitemap.ts new file mode 100644 index 0000000..baacad6 --- /dev/null +++ b/app/sitemap.ts @@ -0,0 +1,18 @@ +import { MetadataRoute } from 'next' + +export default function sitemap(): MetadataRoute.Sitemap { + return [ + { + url: 'https://acme.com', + lastModified: new Date(), + }, + { + url: 'https://acme.com/about', + lastModified: new Date(), + }, + { + url: 'https://acme.com/blog', + lastModified: new Date(), + }, + ] +} \ No newline at end of file diff --git a/app/uses/page.tsx b/app/uses/page.tsx new file mode 100644 index 0000000..d3c61ba --- /dev/null +++ b/app/uses/page.tsx @@ -0,0 +1,107 @@ +import {ReactNode} from 'react' +import {SimpleLayout} from '@/components/layouts/SimpleLayout' +import {Card} from '@/components/ui/Card' +import {Section} from '@/components/ui/Section' + +export const metadata = { + title: 'Uses - Ryan Freeman', + description: 'Software I use, equipment that makes my job easier, and other things I recommend.' +} + +function ToolsSection({children, title}: { children: ReactNode, title: string }) { + return ( +
    +
      + {children} +
    +
    + ) +} + +function Tool({title, href, children}: { title: string, href: string, children: ReactNode }) { + return ( + + + {title} + + {children} + + ) +} + +export default function Uses() { + return ( + +
    + + + This is my main Intel-based computer which I built in 2022. I've recently added more storage and + a new monitor. Click here to see a comprehensive listing of all the parts used in this build on + PCPartPicker. + + + I bought this chair second-hand when I started working for Apple, it's extremely comfortable and + ergonomic for those long hours spent at the desk. + + + + + I use a mix of JetBrain apps for my IDEs depending on what I'm working on. For JavaScript + projects, I use WebStorm. PyCharm for python and IntelliJ IDEA Ultimate for Java. I use the same + keyboard shortcuts across these apps which is great for productivity. + + + Good tool for designing and testing REST APIs. I used to use Postman but I found the interface too + cluttered and prefer the simplicity of Insomnia. + + + + + Great app for Windows which allows you share a region of the screen, handy for single monitor + set ups such as ultrawides when you don't want to share the entire screen. + + + + + I use this software for creating low-fidelity wireframes and interfaces. It's great for + experimenting with ideas. + + + Color Picker is included in the PowerToys set of enhancements for Windows. Using the eye dropper you + can easily identify colours on the screen and copy the colour's code to your clipboard for use + in other applications. + + + + + AutoHotKey features it's own scripting language and allows you to create keyboard macros for + automating common tasks. For example, I use AutoHotKey to toggle between dark and light themes in + Windows on the fly. + + + + + Bitwarden is a free, open-source password manager, this Chrome Extension connects to a self-hosted + instance of Bitwarden which lives on my Raspberry Pi. It is really useful for syncing passwords across + devices. + + + Great extension for blocking those annoying YouTube ads and nasty tracking scripts. + + + Floccus syncs your bookmarks across browsers and devices. It connects to my Nextcloud server via + WebDAV and keeps my bookmarks in sync, so no matter which device I'm using, I always have the + same set of bookmarks. + + +
    +
    + ) +} \ No newline at end of file diff --git a/pages/writing/a-personal-journey-in-software-engineering.mdx b/app/writing/a-personal-journey-in-software-engineering/page.mdx similarity index 81% rename from pages/writing/a-personal-journey-in-software-engineering.mdx rename to app/writing/a-personal-journey-in-software-engineering/page.mdx index 68ac9cd..4d635e2 100644 --- a/pages/writing/a-personal-journey-in-software-engineering.mdx +++ b/app/writing/a-personal-journey-in-software-engineering/page.mdx @@ -1,19 +1,18 @@ -import {ArticleLayout} from '@/components/layouts/ArticleLayout' -import {createSlug} from '@/lib/createSlug' +import {ArticleLayout} from '../../../components/layouts/ArticleLayout' +import {createSlug} from '../../../lib/createSlug' -export const meta = { - author: 'Ryan Freeman', - date: '2022-12-04', +export const metadata = { + authors: 'Ryan Freeman', title: 'A personal journey in software engineering', - description: 'Hello there! If you\'re reading this, you\'ve likely stumbled upon my website — welcome! My name is Ryan Freeman, and I\'m a full-stack developer with a passion for creating intuitive and dynamic web applications.', + date: '2022-12-04', + description: 'Hello there! If you\'re reading this, you\'ve likely stumbled upon my website — welcome! My name is Ryan Freeman, and I\'m a full-stack developer with a passion for creating intuitive and dynamic web applications.' } export default (props) => Hello there! diff --git a/pages/writing/docker-cheat-sheet/ian-taylor-jOqJbvo1P9g-unsplash.jpg b/app/writing/docker-cheat-sheet/ian-taylor-jOqJbvo1P9g-unsplash.jpg similarity index 100% rename from pages/writing/docker-cheat-sheet/ian-taylor-jOqJbvo1P9g-unsplash.jpg rename to app/writing/docker-cheat-sheet/ian-taylor-jOqJbvo1P9g-unsplash.jpg diff --git a/pages/writing/docker-cheat-sheet/index.mdx b/app/writing/docker-cheat-sheet/page.mdx similarity index 82% rename from pages/writing/docker-cheat-sheet/index.mdx rename to app/writing/docker-cheat-sheet/page.mdx index fd1cc2c..cefcf82 100644 --- a/pages/writing/docker-cheat-sheet/index.mdx +++ b/app/writing/docker-cheat-sheet/page.mdx @@ -1,23 +1,23 @@ import Image from 'next/image' -import {ArticleLayout} from '@/components/layouts/ArticleLayout' -import {createSlug} from '@/lib/createSlug' +import {ArticleLayout} from '../../../components/layouts/ArticleLayout' +import {createSlug} from '../../../lib/createSlug' import cargoShipImage from './ian-taylor-jOqJbvo1P9g-unsplash.jpg' -export const meta = { +export const metadata = { author: 'Ryan Freeman', date: '2023-02-11', title: 'Docker cheat sheet', description: 'This is a living document of useful commands for maintaining and using Docker, and should function as a handy reference for developers and DevOps engineers.', - ogImage: '/static/images/ian-taylor-jOqJbvo1P9g-unsplash.jpg' + ogImage: '/images/ian-taylor-jOqJbvo1P9g-unsplash.jpg' } export default (props) => This is a living document of useful commands for maintaining and using Docker, and should function as a handy reference for developers and DevOps engineers. diff --git a/pages/writing/how-to-add-typescript-to-an-existing-next-js-project.mdx b/app/writing/how-to-add-typescript-to-an-existing-next-js-project/page.mdx similarity index 82% rename from pages/writing/how-to-add-typescript-to-an-existing-next-js-project.mdx rename to app/writing/how-to-add-typescript-to-an-existing-next-js-project/page.mdx index 7fbdb87..6c21337 100644 --- a/pages/writing/how-to-add-typescript-to-an-existing-next-js-project.mdx +++ b/app/writing/how-to-add-typescript-to-an-existing-next-js-project/page.mdx @@ -1,7 +1,7 @@ -import {ArticleLayout} from '@/components/layouts/ArticleLayout' -import {createSlug} from '@/lib/createSlug' +import {ArticleLayout} from '../../../components/layouts/ArticleLayout' +import {createSlug} from '../../../lib/createSlug' -export const meta = { +export const metadata = { author: 'Ryan Freeman', date: '2023-01-02', title: 'How to add TypeScript to an existing Next.js project', @@ -9,11 +9,11 @@ export const meta = { } export default (props) => # Next.js includes support for TypeScript by default. To add TypeScript to an existing Next.js project create a _tsconfig.json_ file in the project root with `touch tsconfig.json`. diff --git a/app/writing/page.tsx b/app/writing/page.tsx new file mode 100644 index 0000000..332d2f4 --- /dev/null +++ b/app/writing/page.tsx @@ -0,0 +1,54 @@ +import React from 'react' +import {SimpleLayout} from '@/components/layouts/SimpleLayout' +import {Card} from '@/components/ui/Card' +import {Views} from '@/components/ui/Views' +import {formatDate} from '@/lib/formatDate' +import {getAllArticles} from '@/lib/getAllArticles' +import type {Article} from '@/types' + +export const metadata = { + title: 'Writing - Ryan Freeman', + description: 'All of my long-form thoughts on software engineering, and more, displayed in chronological order.' +} + +function Article({article}: { article: Article }) { + return ( +
    + + + {article.title} + +

    + + {formatDate(article.date)} + + +

    +
    +
    + ) +} + +export default async function Writing() { + const articles = (await getAllArticles()).map(({component, ...meta}) => meta) + + return ( + +
    +
    + {articles.map((article) => ( +
    + ))} +
    +
    +
    + ) +} \ No newline at end of file diff --git a/components/common/Header.tsx b/components/common/Header.tsx index 980c1c8..a4b9060 100644 --- a/components/common/Header.tsx +++ b/components/common/Header.tsx @@ -1,47 +1,11 @@ -import {useRouter} from 'next/router' +'use client' + import {useEffect, useRef} from 'react' +import {usePathname} from 'next/navigation' import {Container} from './Container' -import {MobileNavigation, DesktopNavigation} from '@/components/ui/Navigation' +import {ThemeButton} from '@/components/ui/ThemeButton' +import {DesktopNavigation, MobileNavigation} from '@/components/ui/Navigation' import {Avatar, AvatarContainer} from '@/components/ui/Avatar' -import {MoonIcon} from '@/components/icons/MoonIcon' -import {SunIcon} from '@/components/icons/SunIcon' - -function ModeToggle() { - function disableTransitionsTemporarily() { - document.documentElement.classList.add('[&_*]:!transition-none') - window.setTimeout(() => { - document.documentElement.classList.remove('[&_*]:!transition-none') - }, 0) - } - - function toggleMode() { - disableTransitionsTemporarily() - - let darkModeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)') - let isSystemDarkMode = darkModeMediaQuery.matches - let isDarkMode = document.documentElement.classList.toggle('dark') - - if (isDarkMode === isSystemDarkMode) { - delete window.localStorage.isDarkMode - } else { - window.localStorage.isDarkMode = isDarkMode - } - } - - return ( - - ) -} function clamp(num: number, a: number, b: number) { let min = Math.min(a, b) @@ -50,8 +14,8 @@ function clamp(num: number, a: number, b: number) { } export function Header() { - const router = useRouter() - const isHomePage = router.pathname === '/' + const pathname = usePathname() + const isHomePage = pathname === '/' const headerRef = useRef(null) const avatarRef = useRef(null) @@ -227,7 +191,7 @@ export function Header() {

    - +
    diff --git a/components/layouts/ArticleLayout.tsx b/components/layouts/ArticleLayout.tsx index 8a15351..ee669ee 100644 --- a/components/layouts/ArticleLayout.tsx +++ b/components/layouts/ArticleLayout.tsx @@ -1,6 +1,4 @@ import React, {ReactNode} from 'react' -import * as process from 'process' -import Head from 'next/head' import Link from 'next/link' import {Container} from '@/components/common/Container' import {Prose} from '@/components/ui/Prose' @@ -9,112 +7,66 @@ import {ArrowDownIcon} from '@/components/icons/ArrowDownIcon' import {formatDate} from '@/lib/formatDate' type ArticleLayout = { - children?: ReactNode - isRssFeed: boolean title: string - description: string - ogImage: string date: string + description: string slug: string + children?: ReactNode + ogImage?: string + isRssFeed?: boolean } +const gradients = [ + 'bg-gradient-to-r from-blue-500 to-blue-600', + 'bg-[conic-gradient(at_left,_var(--tw-gradient-stops))] from-rose-500 to-indigo-700', + 'bg-[conic-gradient(at_left,_var(--tw-gradient-stops))] from-sky-400 to-blue-800', + 'bg-gradient-to-r from-orange-400 to-rose-400', + 'bg-gradient-to-r from-sky-400 to-blue-500' +] + export function ArticleLayout({ - children, - isRssFeed = false, title, - description, - ogImage, date, - slug + description, + slug, + children, + ogImage, + isRssFeed = false }: ArticleLayout) { if (isRssFeed) { return children } return ( - <> - - {`${title} - Ryan Freeman`} - - - - - - {ogImage && - <> - - - - - } - - - - - - -
    -
    - - - -
    -
    -

    - {title} -

    -

    - - -

    -
    - {children} -
    -
    + +
    +
    + + + +
    +
    +

    + {title} +

    +

    + + +

    +
    + {children} +
    - - +
    +
    ) } diff --git a/components/layouts/SimpleLayout.tsx b/components/layouts/SimpleLayout.tsx index d65f16d..898c116 100644 --- a/components/layouts/SimpleLayout.tsx +++ b/components/layouts/SimpleLayout.tsx @@ -2,19 +2,19 @@ import {ReactNode} from 'react' import {Container} from '@/components/common/Container' import {twMerge} from 'tailwind-merge' -type SimpleLayout = { - title: string - intro: string +export type SimpleLayoutProps = { + heading: string + description: string children: ReactNode gradient: string } export function SimpleLayout({ - title, - intro, + heading, + description, children, gradient - }: SimpleLayout) { + }: SimpleLayoutProps) { return (
    @@ -28,10 +28,10 @@ export function SimpleLayout({ sm:text-5xl ${gradient ? `${gradient} bg-clip-text dark:text-transparent` : ''} `)}> - {title} + {heading}

    - {intro} + {description}

    {children}
    diff --git a/components/ui/Avatar.tsx b/components/ui/Avatar.tsx index 6320932..cec7945 100644 --- a/components/ui/Avatar.tsx +++ b/components/ui/Avatar.tsx @@ -2,7 +2,7 @@ import {Props} from '@/types' import clsx from 'clsx' import Link from 'next/link' import Image from 'next/image' -import avatar from '@/public/static/images/avatar.jpg' +import me from '/public/images/me.jpg' export function AvatarContainer({className, ...props}: { style?: Object } & Props) { return ( @@ -25,7 +25,7 @@ export function Avatar({large = false, className, ...props}: { large?: boolean, {...props} > diff --git a/components/ui/SpotifyPlayer.tsx b/components/ui/SpotifyPlayer.tsx index 7f39de1..43076ef 100644 --- a/components/ui/SpotifyPlayer.tsx +++ b/components/ui/SpotifyPlayer.tsx @@ -1,3 +1,5 @@ +'use client' + import useSWR from 'swr' import fetcher from '@/lib/fetcher' import Image from 'next/image' diff --git a/components/ui/ThemeButton.tsx b/components/ui/ThemeButton.tsx new file mode 100644 index 0000000..2f078a7 --- /dev/null +++ b/components/ui/ThemeButton.tsx @@ -0,0 +1,62 @@ +'use client' + +import {useEffect, useState} from 'react' +import {useTheme} from 'next-themes' +import {SunIcon} from '@/components/icons/SunIcon' +import {MoonIcon} from '@/components/icons/MoonIcon' + +export function ThemeButton() { + const [mounted, setMounted] = useState(false) + const {theme, setTheme} = useTheme() + + useEffect(() => { + const timeout = setTimeout(() => setMounted(true), 500) + return () => clearTimeout(timeout) + }, []) + + function disableTransitionsTemporarily() { + document.documentElement.classList.add('[&_*]:!transition-none') + window.setTimeout(() => { + document.documentElement.classList.remove('[&_*]:!transition-none') + }, 0) + } + + function toggleTheme() { + disableTransitionsTemporarily() + + let darkModeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)') + let isSystemDarkMode = darkModeMediaQuery.matches + let isDarkMode = theme === 'dark' + + if (isDarkMode === isSystemDarkMode) { + setTheme('light') + } else { + setTheme('dark') + } + } + + if (!mounted) return + + return ( + + ) +} + +ThemeButton.Skeleton = function ThemeButtonSkeleton() { + return ( +
    +
    +
    + ) +} \ No newline at end of file diff --git a/components/ui/Views.tsx b/components/ui/Views.tsx index a9ae7b5..25c00da 100644 --- a/components/ui/Views.tsx +++ b/components/ui/Views.tsx @@ -1,4 +1,6 @@ -import {useSupabaseClient} from '@supabase/auth-helpers-react' +'use client' + +import {createPagesBrowserClient} from '@supabase/auth-helpers-nextjs' import {ElementType, useEffect} from 'react' import useSWR, {useSWRConfig} from 'swr' import fetcher from '@/lib/fetcher' @@ -12,15 +14,16 @@ type ViewsProps = { shouldRender?: boolean } +const supabase = createPagesBrowserClient() + export function Views({as: Component = 'span', slug, className, shouldUpdateViews = true, shouldRender = true}: ViewsProps) { - const supabaseClient = useSupabaseClient() const {data} = useSWR(`/api/views/${slug}`, fetcher) as { data: { views: number } } const {mutate} = useSWRConfig() useEffect(() => { if (shouldUpdateViews) { // subscribe to analytics table and react to updates at row level - const sub = supabaseClient + const sub = supabase .channel('any') .on('postgres_changes', { event: 'UPDATE', diff --git a/lib/dashboard.ts b/lib/dashboard.ts index cc7d318..ab3716e 100644 --- a/lib/dashboard.ts +++ b/lib/dashboard.ts @@ -1,20 +1,14 @@ -import {GetServerSidePropsContext} from 'next' -import {createServerSupabaseClient} from '@supabase/auth-helpers-nextjs' -import { - getTopRepo, - getTotalFollowers, - getTotalForks, - getTotalRepos, - getTotalStars -} from '@/lib/github' +import {cookies} from 'next/headers' +import {createServerComponentClient} from '@supabase/auth-helpers-nextjs' +import {getTopRepo, getTotalFollowers, getTotalForks, getTotalRepos, getTotalStars} from '@/lib/github' import {getAllArticles} from '@/lib/getAllArticles' import {getTopArtist, getTopGenre} from '@/lib/spotify' -import {getStats} from '@/lib/statsfm' import {Metric} from '@/types' +import {getStats} from "@/lib/statsfm"; -export async function getDashboardData(context: GetServerSidePropsContext) { - const supabaseClient = createServerSupabaseClient(context) - const {data: views} = await supabaseClient.rpc('total_views') +export async function getDashboardData() { + const supabase = createServerComponentClient({cookies}) + const {data: views} = await supabase.rpc('total_views') const [totalRepos, totalFollowers] = await Promise.all([ getTotalRepos(), getTotalFollowers() @@ -26,27 +20,27 @@ export async function getDashboardData(context: GetServerSidePropsContext) { const totalArticles = (await getAllArticles()).length const topArtist = await getTopArtist() const {genre} = await getTopGenre() - // const {hoursListened, minutesListened, streams} = await getStats() + const {hoursListened, minutesListened, streams} = await getStats() const metrics: Metric[] = [ - // { - // title: "Streams", - // value: +streams, - // group: "Spotify", - // href: "https://open.spotify.com/?" - // }, - // { - // title: "Hours listened", - // value: +hoursListened, - // group: "Spotify", - // href: "https://open.spotify.com/?" - // }, - // { - // title: "Minutes listened", - // value: +minutesListened, - // group: "Spotify", - // href: "https://open.spotify.com/?" - // }, + { + title: "Streams", + value: +streams, + group: "Spotify", + href: "https://open.spotify.com/?" + }, + { + title: "Hours listened", + value: +hoursListened, + group: "Spotify", + href: "https://open.spotify.com/?" + }, + { + title: "Minutes listened", + value: +minutesListened, + group: "Spotify", + href: "https://open.spotify.com/?" + }, { title: "Top genre", value: genre, diff --git a/lib/generateRssFeed.tsx b/lib/generateRssFeed.tsx index 4b3c7e2..10342e0 100644 --- a/lib/generateRssFeed.tsx +++ b/lib/generateRssFeed.tsx @@ -18,8 +18,8 @@ export async function generateRssFeed() { author, id: siteUrl!, link: siteUrl, - image: `${siteUrl}/static/icons/favicon.ico`, - favicon: `${siteUrl}/static/icons/favicon.ico`, + image: `${siteUrl}/favicon.ico`, + favicon: `${siteUrl}/favicon.ico`, copyright: `All rights reserved ${new Date().getFullYear()}`, feedLinks: { rss2: `${siteUrl}/rss/feed.xml`, diff --git a/lib/getAllArticles.ts b/lib/getAllArticles.ts index fe5b0cb..fcbac42 100644 --- a/lib/getAllArticles.ts +++ b/lib/getAllArticles.ts @@ -2,19 +2,19 @@ import glob from 'fast-glob' import * as path from 'path' async function importArticle(articleFilename: string) { - let {meta, default: component} = await import( - `/pages/writing/${articleFilename}` + let {metadata, default: component} = await import( + `/app/writing/${articleFilename}` ) return { - slug: articleFilename.replace(/(\/index)?\.mdx$/, ''), - ...meta, + slug: articleFilename.replace(/(\/page)?\.mdx$/, ''), + ...metadata, component, } } export async function getAllArticles() { - let articleFilenames = await glob(['*.mdx', '*/index.mdx'], { - cwd: path.join(process.cwd(), './pages/writing'), + let articleFilenames = await glob(['*.mdx', '*/page.mdx'], { + cwd: path.join(process.cwd(), './app/writing'), }) let articles = await Promise.all(articleFilenames.map(importArticle)) diff --git a/mdx-components.tsx b/mdx-components.tsx new file mode 100644 index 0000000..2592b0d --- /dev/null +++ b/mdx-components.tsx @@ -0,0 +1,15 @@ +import type { MDXComponents } from 'mdx/types' + +// This file allows you to provide custom React components +// to be used in MDX files. You can import and use any +// React component you want, including components from +// other libraries. + +// This file is required to use MDX in `app` directory. +export function useMDXComponents(components: MDXComponents): MDXComponents { + return { + // Allows customizing built-in components, e.g. to add styling. + // h1: ({ children }) =>

    {children}

    , + ...components, + } +} \ No newline at end of file diff --git a/middleware.ts b/middleware.ts new file mode 100644 index 0000000..73ea1f6 --- /dev/null +++ b/middleware.ts @@ -0,0 +1,11 @@ +import {createMiddlewareClient} from '@supabase/auth-helpers-nextjs' +import type {NextRequest} from 'next/server' +import {NextResponse} from 'next/server' +import type {Database} from '@/types/database.types' + +export async function middleware(req: NextRequest) { + const res = NextResponse.next() + const supabase = createMiddlewareClient({req, res}) + await supabase.auth.getSession() + return res +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 74842b9..5843a7a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,25 +10,28 @@ "dependencies": { "@headlessui/react": "^1.7.7", "@mapbox/rehype-prism": "^0.7.0", - "@next/mdx": "^13.1.1", - "@supabase/auth-helpers-nextjs": "^0.6.0", - "@supabase/auth-helpers-react": "^0.3.1", + "@mdx-js/loader": "^2.3.0", + "@mdx-js/react": "^2.3.0", + "@next/mdx": "^13.4.10", + "@supabase/auth-helpers-nextjs": "^0.7.3", + "@supabase/supabase-js": "^2.27.0", "@tailwindcss/typography": "^0.5.8", - "@types/mdx": "^2.0.3", + "@types/mdx": "^2.0.5", "@types/node": "^18.11.18", "@types/nprogress": "^0.2.0", "@types/react": "18.0.26", "@types/react-dom": "18.0.10", "autoprefixer": "^10.4.13", "clsx": "^1.2.1", + "encoding": "^0.1.13", "eslint": "8.31.0", "eslint-config-next": "^13.3.0", "fast-glob": "^3.2.12", "feed": "^4.2.2", "focus-visible": "^5.2.0", "motion": "^10.15.5", - "next": "^13.3.0", - "node-fetch": "^3.3.0", + "next": "^13.4.10", + "next-themes": "^0.2.1", "nprogress": "^0.2.0", "postcss": "^8.4.21", "postcss-focus-visible": "^7.1.0", @@ -36,14 +39,12 @@ "react-dom": "^18.2.0", "remark-gfm": "^3.0.1", "sharp": "^0.31.3", + "supabase": "^1.50.2", "swr": "^2.1.2", "tailwind-merge": "^1.9.0", "tailwindcss": "^3.3.0", "ts-node": "^10.9.1", "typescript": "4.9.4" - }, - "devDependencies": { - "supabase": "^1.50.2" } }, "node_modules/@babel/runtime": { @@ -214,10 +215,9 @@ } }, "node_modules/@mdx-js/loader": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-2.2.1.tgz", - "integrity": "sha512-J4E8A5H+xtk4otZiEZ5AXl61Tj04Avm5MqLQazITdI3+puVXVnTTuZUKM1oNHTtfDIfOl0uMt+o/Ij+x6Fvf+g==", - "peer": true, + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-2.3.0.tgz", + "integrity": "sha512-IqsscXh7Q3Rzb+f5DXYk0HU71PK+WuFsEhf+mSV3fOhpLcEpgsHvTQ2h0T6TlZ5gHOaBeFjkXwB52by7ypMyNg==", "dependencies": { "@mdx-js/mdx": "^2.0.0", "source-map": "^0.7.0" @@ -234,7 +234,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.2.1.tgz", "integrity": "sha512-hZ3ex7exYLJn6FfReq8yTvA6TE53uW9UHJQM9IlSauOuS55J9y8RtA7W+dzp6Yrzr00/U1sd7q+Wf61q6SfiTQ==", - "peer": true, "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/mdx": "^2.0.0", @@ -263,7 +262,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "peer": true, "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", @@ -275,10 +273,9 @@ } }, "node_modules/@mdx-js/react": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.2.1.tgz", - "integrity": "sha512-YdXcMcEnqZhzql98RNrqYo9cEhTTesBiCclEtoiQUbJwx87q9453GTapYU6kJ8ZZ2ek1Vp25SiAXEFy5O/eAPw==", - "peer": true, + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.3.0.tgz", + "integrity": "sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==", "dependencies": { "@types/mdx": "^2.0.0", "@types/react": ">=16" @@ -368,9 +365,9 @@ } }, "node_modules/@next/env": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.3.0.tgz", - "integrity": "sha512-AjppRV4uG3No7L1plinoTQETH+j2F10TEnrMfzbTUYwze5sBUPveeeBAPZPm8OkJZ1epq9OyYKhZrvbD6/9HCQ==" + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.10.tgz", + "integrity": "sha512-3G1yD/XKTSLdihyDSa8JEsaWOELY+OWe08o0LUYzfuHp1zHDA8SObQlzKt+v+wrkkPcnPweoLH1ImZeUa0A1NQ==" }, "node_modules/@next/eslint-plugin-next": { "version": "13.3.0", @@ -381,21 +378,29 @@ } }, "node_modules/@next/mdx": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/@next/mdx/-/mdx-13.1.2.tgz", - "integrity": "sha512-7SDyXOqTUHeklV2aJOTWEIW6x8E8i4agKwQVXrPtpZiTkIjR9v7155oMCV48fpwxjQCoH/5ek3EwzbXwO0qzHw==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/mdx/-/mdx-13.4.10.tgz", + "integrity": "sha512-0ZbUIr3yuFFfkaYth2kNFAT0fbyylJTMqZy5zTdb7YGqvYjKFD8n75L3UYAX0g5mibGp3iETJ0I7730sW13PKQ==", "dependencies": { "source-map": "^0.7.0" }, "peerDependencies": { "@mdx-js/loader": ">=0.15.0", - "@mdx-js/react": "*" + "@mdx-js/react": ">=0.15.0" + }, + "peerDependenciesMeta": { + "@mdx-js/loader": { + "optional": true + }, + "@mdx-js/react": { + "optional": true + } } }, "node_modules/@next/swc-darwin-arm64": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.3.0.tgz", - "integrity": "sha512-DmIQCNq6JtccLPPBzf0dgh2vzMWt5wjxbP71pCi5EWpWYE3MsP6FcRXi4MlAmFNDQOfcFXR2r7kBeG1LpZUh1w==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.10.tgz", + "integrity": "sha512-4bsdfKmmg7mgFGph0UorD1xWfZ5jZEw4kKRHYEeTK9bT1QnMbPVPlVXQRIiFPrhoDQnZUoa6duuPUJIEGLV1Jg==", "cpu": [ "arm64" ], @@ -408,9 +413,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.3.0.tgz", - "integrity": "sha512-oQoqFa88OGgwnYlnAGHVct618FRI/749se0N3S8t9Bzdv5CRbscnO0RcX901+YnNK4Q6yeiizfgO3b7kogtsZg==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.10.tgz", + "integrity": "sha512-ngXhUBbcZIWZWqNbQSNxQrB9T1V+wgfCzAor2olYuo/YpaL6mUYNUEgeBMhr8qwV0ARSgKaOp35lRvB7EmCRBg==", "cpu": [ "x64" ], @@ -423,9 +428,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.3.0.tgz", - "integrity": "sha512-Wzz2p/WqAJUqTVoLo6H18WMeAXo3i+9DkPDae4oQG8LMloJ3if4NEZTnOnTUlro6cq+S/W4pTGa97nWTrOjbGw==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.10.tgz", + "integrity": "sha512-SjCZZCOmHD4uyM75MVArSAmF5Y+IJSGroPRj2v9/jnBT36SYFTORN8Ag/lhw81W9EeexKY/CUg2e9mdebZOwsg==", "cpu": [ "arm64" ], @@ -438,9 +443,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.3.0.tgz", - "integrity": "sha512-xPVrIQOQo9WXJYgmoTlMnAD/HlR/1e1ZIWGbwIzEirXBVBqMARUulBEIKdC19zuvoJ477qZJgBDCKtKEykCpyQ==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.10.tgz", + "integrity": "sha512-F+VlcWijX5qteoYIOxNiBbNE8ruaWuRlcYyIRK10CugqI/BIeCDzEDyrHIHY8AWwbkTwe6GRHabMdE688Rqq4Q==", "cpu": [ "arm64" ], @@ -453,9 +458,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.3.0.tgz", - "integrity": "sha512-jOFlpGuPD7W2tuXVJP4wt9a3cpNxWAPcloq5EfMJRiXsBBOjLVFZA7boXYxEBzSVgUiVVr1V9T0HFM7pULJ1qA==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.10.tgz", + "integrity": "sha512-WDv1YtAV07nhfy3i1visr5p/tjiH6CeXp4wX78lzP1jI07t4PnHHG1WEDFOduXh3WT4hG6yN82EQBQHDi7hBrQ==", "cpu": [ "x64" ], @@ -468,9 +473,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.3.0.tgz", - "integrity": "sha512-2OwKlzaBgmuet9XYHc3KwsEilzb04F540rlRXkAcjMHL7eCxB7uZIGtsVvKOnQLvC/elrUegwSw1+5f7WmfyOw==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.10.tgz", + "integrity": "sha512-zFkzqc737xr6qoBgDa3AwC7jPQzGLjDlkNmt/ljvQJ/Veri5ECdHjZCUuiTUfVjshNIIpki6FuP0RaQYK9iCRg==", "cpu": [ "x64" ], @@ -483,9 +488,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.3.0.tgz", - "integrity": "sha512-OeHiA6YEvndxT46g+rzFK/MQTfftKxJmzslERMu9LDdC6Kez0bdrgEYed5eXFK2Z1viKZJCGRlhd06rBusyztA==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.10.tgz", + "integrity": "sha512-IboRS8IWz5mWfnjAdCekkl8s0B7ijpWeDwK2O8CdgZkoCDY0ZQHBSGiJ2KViAG6+BJVfLvcP+a2fh6cdyBr9QQ==", "cpu": [ "arm64" ], @@ -498,9 +503,9 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.3.0.tgz", - "integrity": "sha512-4aB7K9mcVK1lYEzpOpqWrXHEZympU3oK65fnNcY1Qc4HLJFLJj8AViuqQd4jjjPNuV4sl8jAwTz3gN5VNGWB7w==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.10.tgz", + "integrity": "sha512-bSA+4j8jY4EEiwD/M2bol4uVEu1lBlgsGdvM+mmBm/BbqofNBfaZ2qwSbwE2OwbAmzNdVJRFRXQZ0dkjopTRaQ==", "cpu": [ "ia32" ], @@ -513,9 +518,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.3.0.tgz", - "integrity": "sha512-Reer6rkLLcoOvB0dd66+Y7WrWVFH7sEEkF/4bJCIfsSKnTStTYaHtwIJAwbqnt9I392Tqvku0KkoqZOryWV9LQ==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.10.tgz", + "integrity": "sha512-g2+tU63yTWmcVQKDGY0MV1PjjqgZtwM4rB1oVVi/v0brdZAcrcTV+04agKzWtvWroyFz6IqtT0MoZJA7PNyLVw==", "cpu": [ "x64" ], @@ -584,67 +589,56 @@ "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==" }, "node_modules/@supabase/auth-helpers-nextjs": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-nextjs/-/auth-helpers-nextjs-0.6.0.tgz", - "integrity": "sha512-f1e5blmpt9F/Bnb2hKreWHqf3zEhl29P357d5fnXzQ3Ph7DuW2Wha7uwQVTgE2QH3niqVpJpY0Pg0zBT5NmNWQ==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-nextjs/-/auth-helpers-nextjs-0.7.3.tgz", + "integrity": "sha512-ikuBGHFnvyfneToj0Y2EfiqUnEr1bdqR6JZiFydPnzACQ2Q7TkcOhkoUSc9/sMEeG7EKX5PhH8riAz42oPdKRg==", "dependencies": { - "@supabase/auth-helpers-shared": "0.3.3" + "@supabase/auth-helpers-shared": "0.4.1", + "set-cookie-parser": "^2.6.0" }, "peerDependencies": { - "@supabase/supabase-js": "^2.0.4" - } - }, - "node_modules/@supabase/auth-helpers-react": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-react/-/auth-helpers-react-0.3.1.tgz", - "integrity": "sha512-g3SFv08Dz9FapNif/ZY1b7qKGlMJDyTLSayHBz3kb3FuYxg7aLWgQtydDhm5AGbc0XtvpIBuhGTIOVevwpdosA==", - "peerDependencies": { - "@supabase/supabase-js": "^2.0.4" + "@supabase/supabase-js": "^2.19.0" } }, "node_modules/@supabase/auth-helpers-shared": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.3.3.tgz", - "integrity": "sha512-ZwZGffApfyz9MiT3knnZoF1DMWE56H/Q0Mrsn22J9ubhss7/+e7TP3dChxxwlUYqtDmjmLV6OV8W0BANENfUew==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.4.1.tgz", + "integrity": "sha512-IEDX9JzWkIjQiLUaP4Qy5YDiG0jFQatWfS+jw8cCQs6QfbNdEPd2Y3qonwGHnM90CZom9SvjuylBv2pFVAL7Lw==", "dependencies": { - "js-base64": "^3.7.5" + "jose": "^4.14.3" }, "peerDependencies": { - "@supabase/supabase-js": "^2.0.4" + "@supabase/supabase-js": "^2.19.0" } }, "node_modules/@supabase/functions-js": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.1.0.tgz", - "integrity": "sha512-vRziB+AqRXRaGHjEFHwBo0kuNDTuAxI7VUeqU24Fe86ISoD8YEQm0dGdpleJEcqgDGWaO6pxT1tfj1BRY5PwMg==", - "peer": true, + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.1.2.tgz", + "integrity": "sha512-QCR6pwJs9exCl37bmpMisUd6mf+0SUBJ6mUpiAjEkSJ/+xW8TCuO14bvkWHADd5hElJK9MxNlMQXxSA4DRz9nQ==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/gotrue-js": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.20.1.tgz", - "integrity": "sha512-TvXAhLpB/ghLAMNRX5Du3EAc9t0W1w9OFKFn9FNgX3mCAvyhJOni2DVdeSYas4xKbUuyMt4Mp3NDSculLtD0DA==", - "peer": true, + "version": "2.45.0", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.45.0.tgz", + "integrity": "sha512-ctHQqk9foMHvU9pyGXbSbyalmyJ4dkpK/72jIytH5DbXxawqPIjUmJ+Ww9yyJLFP6wCsjPdeYBI+NW070WESvg==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/postgrest-js": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.5.0.tgz", - "integrity": "sha512-YaU1HBE43Ba+FGmnXuvK+xYeHylkDKd04PYeKDUCoE2bUHoxSDqnjHbOwmLjnusGZi3X1MrFeUH1Wwb4bHYyIg==", - "peer": true, + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.7.2.tgz", + "integrity": "sha512-GK80JpRq8l6Qll85erICypAfQCied8tdlXfsDN14W844HqXCSOisk8AaE01DAwGJanieaoN5fuqhzA2yKxDvEQ==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/realtime-js": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.7.2.tgz", - "integrity": "sha512-Fi6xAl5PUkqnjl3wo4rdcQIbMG3+yTRX1aUZe/yfvTG84RMvmCXJ1yN6MmafVLeZpU1xkaz5Vx4L0tnHcLiy6w==", - "peer": true, + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.7.3.tgz", + "integrity": "sha512-c7TzL81sx2kqyxsxcDduJcHL9KJdCOoKimGP6lQSqiZKX42ATlBZpWbyy9KFGFBjAP4nyopMf5JhPi2ZH9jyNw==", "dependencies": { "@types/phoenix": "^1.5.4", "@types/websocket": "^1.0.3", @@ -652,32 +646,30 @@ } }, "node_modules/@supabase/storage-js": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.4.0.tgz", - "integrity": "sha512-uCT6WjeZsyxH/Br1MnXieJnXrYxS3DpIkdNxEFTKCoaPX/KZ2t62v++R2IMNB/XGI1LMuJfN5wM28uuK6DMpfw==", - "peer": true, + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.5.1.tgz", + "integrity": "sha512-nkR0fQA9ScAtIKA3vNoPEqbZv1k5B5HVRYEvRWdlP6mUpFphM9TwPL2jZ/ztNGMTG5xT6SrHr+H7Ykz8qzbhjw==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/supabase-js": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.15.0.tgz", - "integrity": "sha512-gtgq8Tyb4AJoTGeUH3EISOiobdSYwUPcjV+mqL8zGMND+mfqh6l90fnxVPxepnIFXeppJh67YIFTu2bZhr6AMA==", - "peer": true, + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.27.0.tgz", + "integrity": "sha512-XGDBcjmOqa4z9RtY6wJtAArCdD4yPV38dUQdEddenZE8fwubIBnEu4IOHElrWI64rxWIhhEG9HXNQrmSQhutdA==", "dependencies": { "@supabase/functions-js": "^2.1.0", - "@supabase/gotrue-js": "^2.18.1", - "@supabase/postgrest-js": "^1.1.1", - "@supabase/realtime-js": "^2.7.1", - "@supabase/storage-js": "^2.4.0", + "@supabase/gotrue-js": "^2.45.0", + "@supabase/postgrest-js": "^1.7.0", + "@supabase/realtime-js": "^2.7.3", + "@supabase/storage-js": "^2.5.1", "cross-fetch": "^3.1.5" } }, "node_modules/@swc/helpers": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", - "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz", + "integrity": "sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==", "dependencies": { "tslib": "^2.4.0" } @@ -720,7 +712,6 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", - "peer": true, "dependencies": { "@types/estree": "*" } @@ -756,14 +747,12 @@ "node_modules/@types/estree": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", - "peer": true + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" }, "node_modules/@types/estree-jsx": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.0.tgz", "integrity": "sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==", - "peer": true, "dependencies": { "@types/estree": "*" } @@ -796,9 +785,9 @@ } }, "node_modules/@types/mdx": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.3.tgz", - "integrity": "sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.5.tgz", + "integrity": "sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg==" }, "node_modules/@types/ms": { "version": "0.7.31", @@ -816,10 +805,9 @@ "integrity": "sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A==" }, "node_modules/@types/phoenix": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.5.5.tgz", - "integrity": "sha512-1eWWT19k0L4ZiTvdXjAvJ9KvW0B8SdiVftQmFPJGTEx78Q4PCSIQDpz+EfkFVR1N4U9gREjlW4JXL8YCIlY0bw==", - "peer": true + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.0.tgz", + "integrity": "sha512-qwfpsHmFuhAS/dVd4uBIraMxRd56vwBUYQGZ6GpXnFuM2XMRFJbIyruFKKlW2daQliuYZwe0qfn/UjFCDKic5g==" }, "node_modules/@types/prop-types": { "version": "15.7.5", @@ -858,7 +846,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz", "integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==", - "peer": true, "dependencies": { "@types/node": "*" } @@ -1307,7 +1294,6 @@ "version": "1.8.4", "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.4.tgz", "integrity": "sha512-97a+l2LBU3Op3bBQEff79i/E4jMD2ZLFD8rHx9B6mXyB2uQwhJQYfiDqUwtfjF4QA1F2qs//N6Cw8LetMbQjcw==", - "peer": true, "bin": { "astring": "bin/astring" } @@ -1408,7 +1394,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.1.tgz", "integrity": "sha512-bmFEM39CyX336ZGGRsGPlc6jZHriIoHacOQcTt72MktIjpPhZoP4te2jOyUXF3BLILmJ8aNLncoPVeIIFlrDeA==", - "dev": true, "dependencies": { "cmd-shim": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", @@ -1518,7 +1503,6 @@ "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", "hasInstallScript": true, - "peer": true, "dependencies": { "node-gyp-build": "^4.3.0" }, @@ -1566,9 +1550,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001444", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001444.tgz", - "integrity": "sha512-ecER9xgJQVMqcrxThKptsW0pPxSae8R2RB87LNa+ivW9ppNWRHEplXcDzkCOP4LYWGj8hunXLqaiC41iBATNyg==", + "version": "1.0.30001517", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz", + "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==", "funding": [ { "type": "opencollective", @@ -1577,6 +1561,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ] }, @@ -1617,7 +1605,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -1709,7 +1696,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.1.tgz", "integrity": "sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==", - "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -1755,7 +1741,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -1778,19 +1763,17 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" }, "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "peer": true, + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", "dependencies": { - "node-fetch": "2.6.7" + "node-fetch": "^2.6.12" } }, "node_modules/cross-fetch/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "peer": true, + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -1839,7 +1822,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "peer": true, "dependencies": { "es5-ext": "^0.10.50", "type": "^1.0.1" @@ -2015,6 +1997,14 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -2148,7 +2138,6 @@ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", "hasInstallScript": true, - "peer": true, "dependencies": { "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.3", @@ -2162,7 +2151,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "peer": true, "dependencies": { "d": "1", "es5-ext": "^0.10.35", @@ -2173,7 +2161,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "peer": true, "dependencies": { "d": "^1.0.1", "ext": "^1.1.2" @@ -2634,7 +2621,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.0.tgz", "integrity": "sha512-rJz6I4L0GaXYtHpoMScgDIwM0/Vwbu5shbMeER596rB2D1EWF6+Gj0e0UKzJPZrpoOc87+Q2kgVFHfjAymIqmw==", - "peer": true, "dependencies": { "@types/estree": "^1.0.0" }, @@ -2647,7 +2633,6 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.2.tgz", "integrity": "sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==", - "peer": true, "dependencies": { "@types/estree-jsx": "^1.0.0", "estree-util-is-identifier-name": "^2.0.0", @@ -2662,7 +2647,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.0.1.tgz", "integrity": "sha512-rxZj1GkQhY4x1j/CSnybK9cGuMFQYFPLq0iNyopqf14aOVLFtMv7Esika+ObJWPWiOHuMOAHz3YkWoLYYRnzWQ==", - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -2672,7 +2656,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-1.1.0.tgz", "integrity": "sha512-490lbfCcpLk+ofK6HCgqDfYs4KAfq6QVvDw3+Bm1YoKRgiOjKiKYGAVQE1uwh7zVxBgWhqp4FDtp5SqunpUk1A==", - "peer": true, "dependencies": { "@types/estree-jsx": "^1.0.0", "astring": "^1.8.0", @@ -2687,7 +2670,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.0.tgz", "integrity": "sha512-wdsoqhWueuJKsh5hqLw3j8lwFqNStm92VcwtAOAny8g/KS/l5Y8RISjR4k5W6skCj3Nirag/WUCMS0Nfy3sgsg==", - "peer": true, "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^2.0.0" @@ -2700,8 +2682,7 @@ "node_modules/estree-walker": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.2.tgz", - "integrity": "sha512-C03BvXCQIH/po+PNPONx/zSM9ziPr9weX8xNhYb/IJtdJ9z+L4z9VKPTB+UTHdmhnIopA2kc419ueyVyHVktwA==", - "peer": true + "integrity": "sha512-C03BvXCQIH/po+PNPONx/zSM9ziPr9weX8xNhYb/IJtdJ9z+L4z9VKPTB+UTHdmhnIopA2kc419ueyVyHVktwA==" }, "node_modules/esutils": { "version": "2.0.3", @@ -2732,7 +2713,6 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "peer": true, "dependencies": { "type": "^2.7.2" } @@ -2740,8 +2720,7 @@ "node_modules/ext/node_modules/type": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", - "peer": true + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" }, "node_modules/extend": { "version": "3.0.2", @@ -2929,7 +2908,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, "dependencies": { "minipass": "^3.0.0" }, @@ -2941,7 +2919,6 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -3071,8 +3048,7 @@ "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "peer": true + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, "node_modules/globals": { "version": "13.19.0", @@ -3239,7 +3215,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.2.0.tgz", "integrity": "sha512-QFMTJsd3+lr0TKiObJ6PWwpWqFjD+T28dVSazcPAslHjHGMXxs5xFvjLbUf6e6O3/dfHb9iourepMlSh5x7lIA==", - "peer": true, "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", @@ -3275,7 +3250,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -3332,6 +3306,17 @@ "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -3404,8 +3389,7 @@ "node_modules/inline-style-parser": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", - "peer": true + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" }, "node_modules/internal-slot": { "version": "1.0.4", @@ -3685,7 +3669,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.1.tgz", "integrity": "sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==", - "peer": true, "dependencies": { "@types/estree": "*" } @@ -3773,8 +3756,7 @@ "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "peer": true + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, "node_modules/is-weakmap": { "version": "2.0.1", @@ -3865,10 +3847,13 @@ "jiti": "bin/jiti.js" } }, - "node_modules/js-base64": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.5.tgz", - "integrity": "sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==" + "node_modules/jose": { + "version": "4.14.4", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.14.4.tgz", + "integrity": "sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==", + "funding": { + "url": "https://github.com/sponsors/panva" + } }, "node_modules/js-sdsl": { "version": "4.2.0", @@ -4050,7 +4035,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -4068,7 +4052,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz", "integrity": "sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==", - "peer": true, "dependencies": { "@types/mdast": "^3.0.0", "@types/unist": "^2.0.0", @@ -4083,7 +4066,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "peer": true, "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", @@ -4234,7 +4216,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-2.0.0.tgz", "integrity": "sha512-M09lW0CcBT1VrJUaF/PYxemxxHa7SLDHdSn94Q9FhxjCQfuW7nMAWKWimTmA3OyDMSTH981NN1csW1X+HPSluw==", - "peer": true, "dependencies": { "mdast-util-mdx-expression": "^1.0.0", "mdast-util-mdx-jsx": "^2.0.0", @@ -4249,7 +4230,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.1.tgz", "integrity": "sha512-TTb6cKyTA1RD+1su1iStZ5PAv3rFfOUKcoU5EstUpv/IZo63uDX03R8+jXjMEhcobXnNOiG6/ccekvVl4eV1zQ==", - "peer": true, "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^2.0.0", @@ -4266,7 +4246,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.0.tgz", "integrity": "sha512-KzgzfWMhdteDkrY4mQtyvTU5bc/W4ppxhe9SzelO6QUUiwLAM+Et2Dnjjprik74a336kHdo0zKm7Tp+n6FFeRg==", - "peer": true, "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^2.0.0", @@ -4288,7 +4267,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4298,7 +4276,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4308,7 +4285,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4318,7 +4294,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "peer": true, "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" @@ -4332,7 +4307,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4342,7 +4316,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4352,7 +4325,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.0.tgz", "integrity": "sha512-5nk9Fn03x3rEhGaX1FU6IDwG/k+GxLXlFAkgrbM1asuAFl3BhdQWvASaIsmwWypRNcZKHPYnIuOSfIWEyEQnPQ==", - "peer": true, "dependencies": { "@types/unist": "^2.0.0", "character-entities": "^2.0.0", @@ -4372,7 +4344,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.0.tgz", "integrity": "sha512-7N5ihsOkAEGjFotIX9p/YPdl4TqUoMxL4ajNz7PbT89BqsdWJuBC9rvgt6wpbwTZqWWR0jKWqQbwsOWDBUZv4g==", - "peer": true, "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^2.0.0", @@ -4402,7 +4373,6 @@ "version": "12.2.5", "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.2.5.tgz", "integrity": "sha512-EFNhT35ZR/VZ85/EedDdCNTq0oFM+NM/+qBomVGQ0+Lcg0nhI8xIwmdCzNMlVlCJNXRprpobtKP/IUh8cfz6zQ==", - "peer": true, "dependencies": { "@types/hast": "^2.0.0", "@types/mdast": "^3.0.0", @@ -4423,7 +4393,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "peer": true, "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", @@ -4686,7 +4655,6 @@ "url": "https://opencollective.com/unified" } ], - "peer": true, "dependencies": { "micromark-factory-mdx-expression": "^1.0.0", "micromark-factory-space": "^1.0.0", @@ -4701,7 +4669,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.3.tgz", "integrity": "sha512-VfA369RdqUISF0qGgv2FfV7gGjHDfn9+Qfiv5hEwpyr1xscRj/CiVRkU7rywGFCO7JwJ5L0e7CJz60lY52+qOA==", - "peer": true, "dependencies": { "@types/acorn": "^4.0.0", "estree-util-is-identifier-name": "^2.0.0", @@ -4722,7 +4689,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.0.tgz", "integrity": "sha512-xaRAMoSkKdqZXDAoSgp20Azm0aRQKGOl0RrS81yGu8Hr/JhMsBmfs4wR7m9kgVUIO36cMUQjNyiyDKPrsv8gOw==", - "peer": true, "dependencies": { "micromark-util-types": "^1.0.0" }, @@ -4735,7 +4701,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.0.tgz", "integrity": "sha512-TZZRZgeHvtgm+IhtgC2+uDMR7h8eTKF0QUX9YsgoL9+bADBpBY6SiLvWqnBlLbCEevITmTqmEuY3FoxMKVs1rQ==", - "peer": true, "dependencies": { "acorn": "^8.0.0", "acorn-jsx": "^5.0.0", @@ -4755,7 +4720,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.3.tgz", "integrity": "sha512-2N13ol4KMoxb85rdDwTAC6uzs8lMX0zeqpcyx7FhS7PxXomOnLactu8WI8iBNXW8AVyea3KIJd/1CKnUmwrK9A==", - "peer": true, "dependencies": { "micromark-core-commonmark": "^1.0.0", "micromark-util-character": "^1.0.0", @@ -4826,7 +4790,6 @@ "url": "https://opencollective.com/unified" } ], - "peer": true, "dependencies": { "micromark-factory-space": "^1.0.0", "micromark-util-character": "^1.0.0", @@ -5044,7 +5007,6 @@ "url": "https://opencollective.com/unified" } ], - "peer": true, "dependencies": { "@types/acorn": "^4.0.0", "@types/estree": "^1.0.0", @@ -5233,7 +5195,6 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", - "dev": true, "engines": { "node": ">=8" } @@ -5242,7 +5203,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -5255,7 +5215,6 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -5267,7 +5226,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -5344,38 +5302,39 @@ "peer": true }, "node_modules/next": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/next/-/next-13.3.0.tgz", - "integrity": "sha512-OVTw8MpIPa12+DCUkPqRGPS3thlJPcwae2ZL4xti3iBff27goH024xy4q2lhlsdoYiKOi8Kz6uJoLW/GXwgfOA==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/next/-/next-13.4.10.tgz", + "integrity": "sha512-4ep6aKxVTQ7rkUW2fBLhpBr/5oceCuf4KmlUpvG/aXuDTIf9mexNSpabUD6RWPspu6wiJJvozZREhXhueYO36A==", "dependencies": { - "@next/env": "13.3.0", - "@swc/helpers": "0.4.14", + "@next/env": "13.4.10", + "@swc/helpers": "0.5.1", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001406", "postcss": "8.4.14", - "styled-jsx": "5.1.1" + "styled-jsx": "5.1.1", + "watchpack": "2.4.0", + "zod": "3.21.4" }, "bin": { "next": "dist/bin/next" }, "engines": { - "node": ">=14.6.0" + "node": ">=16.8.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "13.3.0", - "@next/swc-darwin-x64": "13.3.0", - "@next/swc-linux-arm64-gnu": "13.3.0", - "@next/swc-linux-arm64-musl": "13.3.0", - "@next/swc-linux-x64-gnu": "13.3.0", - "@next/swc-linux-x64-musl": "13.3.0", - "@next/swc-win32-arm64-msvc": "13.3.0", - "@next/swc-win32-ia32-msvc": "13.3.0", - "@next/swc-win32-x64-msvc": "13.3.0" + "@next/swc-darwin-arm64": "13.4.10", + "@next/swc-darwin-x64": "13.4.10", + "@next/swc-linux-arm64-gnu": "13.4.10", + "@next/swc-linux-arm64-musl": "13.4.10", + "@next/swc-linux-x64-gnu": "13.4.10", + "@next/swc-linux-x64-musl": "13.4.10", + "@next/swc-win32-arm64-msvc": "13.4.10", + "@next/swc-win32-ia32-msvc": "13.4.10", + "@next/swc-win32-x64-msvc": "13.4.10" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "fibers": ">= 3.1.0", - "node-sass": "^6.0.0 || ^7.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", "sass": "^1.3.0" @@ -5387,19 +5346,25 @@ "fibers": { "optional": true }, - "node-sass": { - "optional": true - }, "sass": { "optional": true } } }, + "node_modules/next-themes": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.2.1.tgz", + "integrity": "sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==", + "peerDependencies": { + "next": "*", + "react": "*", + "react-dom": "*" + } + }, "node_modules/next-tick": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "peer": true + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, "node_modules/next/node_modules/postcss": { "version": "8.4.14", @@ -5479,7 +5444,6 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", - "peer": true, "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -5511,7 +5475,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz", "integrity": "sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==", - "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -5788,7 +5751,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.0.4.tgz", "integrity": "sha512-SFx68DxCv0Iyo6APZuw/AKewkkThGwssmU0QWtTlvov3VAtPX+QJ4CadwSaz8nrT5jPIuxdvJWB4PnD2KNDxQg==", - "peer": true, "dependencies": { "estree-walker": "^3.0.0", "is-reference": "^3.0.0" @@ -6027,7 +5989,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.2.0.tgz", "integrity": "sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -6151,7 +6112,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz", "integrity": "sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==", - "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -6245,7 +6205,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.2.1.tgz", "integrity": "sha512-R9wcN+/THRXTKyRBp6Npo/mcbGA2iT3N4G8qUqLA5pOEg7kBidHv8K2hHidCMYZ6DXmwK18umu0K4cicgA2PPQ==", - "peer": true, "dependencies": { "mdast-util-mdx": "^2.0.0", "micromark-extension-mdxjs": "^1.0.0" @@ -6259,7 +6218,6 @@ "version": "10.0.1", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz", "integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==", - "peer": true, "dependencies": { "@types/mdast": "^3.0.0", "mdast-util-from-markdown": "^1.0.0", @@ -6274,7 +6232,6 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", - "peer": true, "dependencies": { "@types/hast": "^2.0.0", "@types/mdast": "^3.0.0", @@ -6398,6 +6355,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, "node_modules/sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -6452,6 +6414,11 @@ "randombytes": "^2.1.0" } }, + "node_modules/set-cookie-parser": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", + "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" + }, "node_modules/sharp": { "version": "0.31.3", "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.31.3.tgz", @@ -6509,8 +6476,7 @@ "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/simple-concat": { "version": "1.0.1", @@ -6635,7 +6601,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -6716,7 +6681,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", - "peer": true, "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" @@ -6730,7 +6694,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -6762,7 +6725,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.0.tgz", "integrity": "sha512-dAjq2m87tPn/TcYTeqMhXJRhu96WYWcxMFQxs3Y9jfYpq2jG+38u4tj0Lst6DOiYXmDuNxVJ2b1Z2uPC6wTEeg==", - "peer": true, "dependencies": { "inline-style-parser": "0.1.1" } @@ -6840,7 +6802,6 @@ "version": "1.50.2", "resolved": "https://registry.npmjs.org/supabase/-/supabase-1.50.2.tgz", "integrity": "sha512-LTUXxkEQQf53sG0dr9arY6bcxNA9envsc0436Nsh5K6500QYYwEF/DokXXxmY6DjJt3OGdTnMICDpGFNAcim3g==", - "dev": true, "hasInstallScript": true, "dependencies": { "bin-links": "^4.0.1", @@ -6969,7 +6930,6 @@ "version": "6.1.13", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", - "dev": true, "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -7012,7 +6972,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, "engines": { "node": ">=10" } @@ -7116,14 +7075,12 @@ "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "peer": true + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -7263,8 +7220,7 @@ "node_modules/type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "peer": true + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" }, "node_modules/type-check": { "version": "0.4.0", @@ -7305,7 +7261,6 @@ "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "peer": true, "dependencies": { "is-typedarray": "^1.0.0" } @@ -7358,7 +7313,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.0.tgz", "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", - "peer": true, "dependencies": { "@types/unist": "^2.0.0" }, @@ -7371,7 +7325,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==", - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -7390,7 +7343,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.3.tgz", "integrity": "sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==", - "peer": true, "dependencies": { "@types/unist": "^2.0.0" }, @@ -7403,7 +7355,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.1.tgz", "integrity": "sha512-xtoY50b5+7IH8tFbkw64gisG9tMSpxDjhX9TmaJJae/XuxQ9R/Kc8Nv1eOsf43Gt4KV/LkriMy9mptDr7XLcaw==", - "peer": true, "dependencies": { "@types/unist": "^2.0.0" }, @@ -7416,7 +7367,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.1.tgz", "integrity": "sha512-0yDkppiIhDlPrfHELgB+NLQD5mfjup3a8UYclHruTJWmY74je8g+CIFr79x5f6AkmzSwlvKLbs63hC0meOMowQ==", - "peer": true, "dependencies": { "@types/unist": "^2.0.0", "unist-util-visit": "^4.0.0" @@ -7430,7 +7380,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "peer": true, "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", @@ -7548,7 +7497,6 @@ "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", "hasInstallScript": true, - "peer": true, "dependencies": { "node-gyp-build": "^4.3.0" }, @@ -7610,7 +7558,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.0.1.tgz", "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", - "peer": true, "dependencies": { "@types/unist": "^2.0.0", "vfile": "^5.0.0" @@ -7637,7 +7584,6 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "peer": true, "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -7657,8 +7603,7 @@ "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "peer": true + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/webpack": { "version": "5.76.3", @@ -7748,7 +7693,6 @@ "version": "1.0.34", "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "peer": true, "dependencies": { "bufferutil": "^4.0.1", "debug": "^2.2.0", @@ -7765,7 +7709,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -7773,14 +7716,12 @@ "node_modules/websocket/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "peer": true, "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -7865,7 +7806,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", - "dev": true, "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -7897,7 +7837,6 @@ "version": "0.0.6", "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", - "peer": true, "engines": { "node": ">=0.10.32" } @@ -7926,6 +7865,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zod": { + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", + "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", @@ -8066,10 +8013,9 @@ } }, "@mdx-js/loader": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-2.2.1.tgz", - "integrity": "sha512-J4E8A5H+xtk4otZiEZ5AXl61Tj04Avm5MqLQazITdI3+puVXVnTTuZUKM1oNHTtfDIfOl0uMt+o/Ij+x6Fvf+g==", - "peer": true, + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-2.3.0.tgz", + "integrity": "sha512-IqsscXh7Q3Rzb+f5DXYk0HU71PK+WuFsEhf+mSV3fOhpLcEpgsHvTQ2h0T6TlZ5gHOaBeFjkXwB52by7ypMyNg==", "requires": { "@mdx-js/mdx": "^2.0.0", "source-map": "^0.7.0" @@ -8079,7 +8025,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.2.1.tgz", "integrity": "sha512-hZ3ex7exYLJn6FfReq8yTvA6TE53uW9UHJQM9IlSauOuS55J9y8RtA7W+dzp6Yrzr00/U1sd7q+Wf61q6SfiTQ==", - "peer": true, "requires": { "@types/estree-jsx": "^1.0.0", "@types/mdx": "^2.0.0", @@ -8104,7 +8049,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "peer": true, "requires": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", @@ -8114,10 +8058,9 @@ } }, "@mdx-js/react": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.2.1.tgz", - "integrity": "sha512-YdXcMcEnqZhzql98RNrqYo9cEhTTesBiCclEtoiQUbJwx87q9453GTapYU6kJ8ZZ2ek1Vp25SiAXEFy5O/eAPw==", - "peer": true, + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.3.0.tgz", + "integrity": "sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==", "requires": { "@types/mdx": "^2.0.0", "@types/react": ">=16" @@ -8200,9 +8143,9 @@ } }, "@next/env": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.3.0.tgz", - "integrity": "sha512-AjppRV4uG3No7L1plinoTQETH+j2F10TEnrMfzbTUYwze5sBUPveeeBAPZPm8OkJZ1epq9OyYKhZrvbD6/9HCQ==" + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.10.tgz", + "integrity": "sha512-3G1yD/XKTSLdihyDSa8JEsaWOELY+OWe08o0LUYzfuHp1zHDA8SObQlzKt+v+wrkkPcnPweoLH1ImZeUa0A1NQ==" }, "@next/eslint-plugin-next": { "version": "13.3.0", @@ -8213,65 +8156,65 @@ } }, "@next/mdx": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/@next/mdx/-/mdx-13.1.2.tgz", - "integrity": "sha512-7SDyXOqTUHeklV2aJOTWEIW6x8E8i4agKwQVXrPtpZiTkIjR9v7155oMCV48fpwxjQCoH/5ek3EwzbXwO0qzHw==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/mdx/-/mdx-13.4.10.tgz", + "integrity": "sha512-0ZbUIr3yuFFfkaYth2kNFAT0fbyylJTMqZy5zTdb7YGqvYjKFD8n75L3UYAX0g5mibGp3iETJ0I7730sW13PKQ==", "requires": { "source-map": "^0.7.0" } }, "@next/swc-darwin-arm64": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.3.0.tgz", - "integrity": "sha512-DmIQCNq6JtccLPPBzf0dgh2vzMWt5wjxbP71pCi5EWpWYE3MsP6FcRXi4MlAmFNDQOfcFXR2r7kBeG1LpZUh1w==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.10.tgz", + "integrity": "sha512-4bsdfKmmg7mgFGph0UorD1xWfZ5jZEw4kKRHYEeTK9bT1QnMbPVPlVXQRIiFPrhoDQnZUoa6duuPUJIEGLV1Jg==", "optional": true }, "@next/swc-darwin-x64": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.3.0.tgz", - "integrity": "sha512-oQoqFa88OGgwnYlnAGHVct618FRI/749se0N3S8t9Bzdv5CRbscnO0RcX901+YnNK4Q6yeiizfgO3b7kogtsZg==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.10.tgz", + "integrity": "sha512-ngXhUBbcZIWZWqNbQSNxQrB9T1V+wgfCzAor2olYuo/YpaL6mUYNUEgeBMhr8qwV0ARSgKaOp35lRvB7EmCRBg==", "optional": true }, "@next/swc-linux-arm64-gnu": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.3.0.tgz", - "integrity": "sha512-Wzz2p/WqAJUqTVoLo6H18WMeAXo3i+9DkPDae4oQG8LMloJ3if4NEZTnOnTUlro6cq+S/W4pTGa97nWTrOjbGw==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.10.tgz", + "integrity": "sha512-SjCZZCOmHD4uyM75MVArSAmF5Y+IJSGroPRj2v9/jnBT36SYFTORN8Ag/lhw81W9EeexKY/CUg2e9mdebZOwsg==", "optional": true }, "@next/swc-linux-arm64-musl": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.3.0.tgz", - "integrity": "sha512-xPVrIQOQo9WXJYgmoTlMnAD/HlR/1e1ZIWGbwIzEirXBVBqMARUulBEIKdC19zuvoJ477qZJgBDCKtKEykCpyQ==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.10.tgz", + "integrity": "sha512-F+VlcWijX5qteoYIOxNiBbNE8ruaWuRlcYyIRK10CugqI/BIeCDzEDyrHIHY8AWwbkTwe6GRHabMdE688Rqq4Q==", "optional": true }, "@next/swc-linux-x64-gnu": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.3.0.tgz", - "integrity": "sha512-jOFlpGuPD7W2tuXVJP4wt9a3cpNxWAPcloq5EfMJRiXsBBOjLVFZA7boXYxEBzSVgUiVVr1V9T0HFM7pULJ1qA==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.10.tgz", + "integrity": "sha512-WDv1YtAV07nhfy3i1visr5p/tjiH6CeXp4wX78lzP1jI07t4PnHHG1WEDFOduXh3WT4hG6yN82EQBQHDi7hBrQ==", "optional": true }, "@next/swc-linux-x64-musl": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.3.0.tgz", - "integrity": "sha512-2OwKlzaBgmuet9XYHc3KwsEilzb04F540rlRXkAcjMHL7eCxB7uZIGtsVvKOnQLvC/elrUegwSw1+5f7WmfyOw==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.10.tgz", + "integrity": "sha512-zFkzqc737xr6qoBgDa3AwC7jPQzGLjDlkNmt/ljvQJ/Veri5ECdHjZCUuiTUfVjshNIIpki6FuP0RaQYK9iCRg==", "optional": true }, "@next/swc-win32-arm64-msvc": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.3.0.tgz", - "integrity": "sha512-OeHiA6YEvndxT46g+rzFK/MQTfftKxJmzslERMu9LDdC6Kez0bdrgEYed5eXFK2Z1viKZJCGRlhd06rBusyztA==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.10.tgz", + "integrity": "sha512-IboRS8IWz5mWfnjAdCekkl8s0B7ijpWeDwK2O8CdgZkoCDY0ZQHBSGiJ2KViAG6+BJVfLvcP+a2fh6cdyBr9QQ==", "optional": true }, "@next/swc-win32-ia32-msvc": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.3.0.tgz", - "integrity": "sha512-4aB7K9mcVK1lYEzpOpqWrXHEZympU3oK65fnNcY1Qc4HLJFLJj8AViuqQd4jjjPNuV4sl8jAwTz3gN5VNGWB7w==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.10.tgz", + "integrity": "sha512-bSA+4j8jY4EEiwD/M2bol4uVEu1lBlgsGdvM+mmBm/BbqofNBfaZ2qwSbwE2OwbAmzNdVJRFRXQZ0dkjopTRaQ==", "optional": true }, "@next/swc-win32-x64-msvc": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.3.0.tgz", - "integrity": "sha512-Reer6rkLLcoOvB0dd66+Y7WrWVFH7sEEkF/4bJCIfsSKnTStTYaHtwIJAwbqnt9I392Tqvku0KkoqZOryWV9LQ==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.10.tgz", + "integrity": "sha512-g2+tU63yTWmcVQKDGY0MV1PjjqgZtwM4rB1oVVi/v0brdZAcrcTV+04agKzWtvWroyFz6IqtT0MoZJA7PNyLVw==", "optional": true }, "@nodelib/fs.scandir": { @@ -8316,59 +8259,50 @@ "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==" }, "@supabase/auth-helpers-nextjs": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-nextjs/-/auth-helpers-nextjs-0.6.0.tgz", - "integrity": "sha512-f1e5blmpt9F/Bnb2hKreWHqf3zEhl29P357d5fnXzQ3Ph7DuW2Wha7uwQVTgE2QH3niqVpJpY0Pg0zBT5NmNWQ==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-nextjs/-/auth-helpers-nextjs-0.7.3.tgz", + "integrity": "sha512-ikuBGHFnvyfneToj0Y2EfiqUnEr1bdqR6JZiFydPnzACQ2Q7TkcOhkoUSc9/sMEeG7EKX5PhH8riAz42oPdKRg==", "requires": { - "@supabase/auth-helpers-shared": "0.3.3" + "@supabase/auth-helpers-shared": "0.4.1", + "set-cookie-parser": "^2.6.0" } }, - "@supabase/auth-helpers-react": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-react/-/auth-helpers-react-0.3.1.tgz", - "integrity": "sha512-g3SFv08Dz9FapNif/ZY1b7qKGlMJDyTLSayHBz3kb3FuYxg7aLWgQtydDhm5AGbc0XtvpIBuhGTIOVevwpdosA==", - "requires": {} - }, "@supabase/auth-helpers-shared": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.3.3.tgz", - "integrity": "sha512-ZwZGffApfyz9MiT3knnZoF1DMWE56H/Q0Mrsn22J9ubhss7/+e7TP3dChxxwlUYqtDmjmLV6OV8W0BANENfUew==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.4.1.tgz", + "integrity": "sha512-IEDX9JzWkIjQiLUaP4Qy5YDiG0jFQatWfS+jw8cCQs6QfbNdEPd2Y3qonwGHnM90CZom9SvjuylBv2pFVAL7Lw==", "requires": { - "js-base64": "^3.7.5" + "jose": "^4.14.3" } }, "@supabase/functions-js": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.1.0.tgz", - "integrity": "sha512-vRziB+AqRXRaGHjEFHwBo0kuNDTuAxI7VUeqU24Fe86ISoD8YEQm0dGdpleJEcqgDGWaO6pxT1tfj1BRY5PwMg==", - "peer": true, + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.1.2.tgz", + "integrity": "sha512-QCR6pwJs9exCl37bmpMisUd6mf+0SUBJ6mUpiAjEkSJ/+xW8TCuO14bvkWHADd5hElJK9MxNlMQXxSA4DRz9nQ==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/gotrue-js": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.20.1.tgz", - "integrity": "sha512-TvXAhLpB/ghLAMNRX5Du3EAc9t0W1w9OFKFn9FNgX3mCAvyhJOni2DVdeSYas4xKbUuyMt4Mp3NDSculLtD0DA==", - "peer": true, + "version": "2.45.0", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.45.0.tgz", + "integrity": "sha512-ctHQqk9foMHvU9pyGXbSbyalmyJ4dkpK/72jIytH5DbXxawqPIjUmJ+Ww9yyJLFP6wCsjPdeYBI+NW070WESvg==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/postgrest-js": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.5.0.tgz", - "integrity": "sha512-YaU1HBE43Ba+FGmnXuvK+xYeHylkDKd04PYeKDUCoE2bUHoxSDqnjHbOwmLjnusGZi3X1MrFeUH1Wwb4bHYyIg==", - "peer": true, + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.7.2.tgz", + "integrity": "sha512-GK80JpRq8l6Qll85erICypAfQCied8tdlXfsDN14W844HqXCSOisk8AaE01DAwGJanieaoN5fuqhzA2yKxDvEQ==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/realtime-js": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.7.2.tgz", - "integrity": "sha512-Fi6xAl5PUkqnjl3wo4rdcQIbMG3+yTRX1aUZe/yfvTG84RMvmCXJ1yN6MmafVLeZpU1xkaz5Vx4L0tnHcLiy6w==", - "peer": true, + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.7.3.tgz", + "integrity": "sha512-c7TzL81sx2kqyxsxcDduJcHL9KJdCOoKimGP6lQSqiZKX42ATlBZpWbyy9KFGFBjAP4nyopMf5JhPi2ZH9jyNw==", "requires": { "@types/phoenix": "^1.5.4", "@types/websocket": "^1.0.3", @@ -8376,32 +8310,30 @@ } }, "@supabase/storage-js": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.4.0.tgz", - "integrity": "sha512-uCT6WjeZsyxH/Br1MnXieJnXrYxS3DpIkdNxEFTKCoaPX/KZ2t62v++R2IMNB/XGI1LMuJfN5wM28uuK6DMpfw==", - "peer": true, + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.5.1.tgz", + "integrity": "sha512-nkR0fQA9ScAtIKA3vNoPEqbZv1k5B5HVRYEvRWdlP6mUpFphM9TwPL2jZ/ztNGMTG5xT6SrHr+H7Ykz8qzbhjw==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/supabase-js": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.15.0.tgz", - "integrity": "sha512-gtgq8Tyb4AJoTGeUH3EISOiobdSYwUPcjV+mqL8zGMND+mfqh6l90fnxVPxepnIFXeppJh67YIFTu2bZhr6AMA==", - "peer": true, + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.27.0.tgz", + "integrity": "sha512-XGDBcjmOqa4z9RtY6wJtAArCdD4yPV38dUQdEddenZE8fwubIBnEu4IOHElrWI64rxWIhhEG9HXNQrmSQhutdA==", "requires": { "@supabase/functions-js": "^2.1.0", - "@supabase/gotrue-js": "^2.18.1", - "@supabase/postgrest-js": "^1.1.1", - "@supabase/realtime-js": "^2.7.1", - "@supabase/storage-js": "^2.4.0", + "@supabase/gotrue-js": "^2.45.0", + "@supabase/postgrest-js": "^1.7.0", + "@supabase/realtime-js": "^2.7.3", + "@supabase/storage-js": "^2.5.1", "cross-fetch": "^3.1.5" } }, "@swc/helpers": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", - "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz", + "integrity": "sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==", "requires": { "tslib": "^2.4.0" } @@ -8441,7 +8373,6 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", - "peer": true, "requires": { "@types/estree": "*" } @@ -8477,14 +8408,12 @@ "@types/estree": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", - "peer": true + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" }, "@types/estree-jsx": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.0.tgz", "integrity": "sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==", - "peer": true, "requires": { "@types/estree": "*" } @@ -8517,9 +8446,9 @@ } }, "@types/mdx": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.3.tgz", - "integrity": "sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.5.tgz", + "integrity": "sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg==" }, "@types/ms": { "version": "0.7.31", @@ -8537,10 +8466,9 @@ "integrity": "sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A==" }, "@types/phoenix": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.5.5.tgz", - "integrity": "sha512-1eWWT19k0L4ZiTvdXjAvJ9KvW0B8SdiVftQmFPJGTEx78Q4PCSIQDpz+EfkFVR1N4U9gREjlW4JXL8YCIlY0bw==", - "peer": true + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.0.tgz", + "integrity": "sha512-qwfpsHmFuhAS/dVd4uBIraMxRd56vwBUYQGZ6GpXnFuM2XMRFJbIyruFKKlW2daQliuYZwe0qfn/UjFCDKic5g==" }, "@types/prop-types": { "version": "15.7.5", @@ -8579,7 +8507,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz", "integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==", - "peer": true, "requires": { "@types/node": "*" } @@ -8930,8 +8857,7 @@ "astring": { "version": "1.8.4", "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.4.tgz", - "integrity": "sha512-97a+l2LBU3Op3bBQEff79i/E4jMD2ZLFD8rHx9B6mXyB2uQwhJQYfiDqUwtfjF4QA1F2qs//N6Cw8LetMbQjcw==", - "peer": true + "integrity": "sha512-97a+l2LBU3Op3bBQEff79i/E4jMD2ZLFD8rHx9B6mXyB2uQwhJQYfiDqUwtfjF4QA1F2qs//N6Cw8LetMbQjcw==" }, "autoprefixer": { "version": "10.4.13", @@ -8983,7 +8909,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.1.tgz", "integrity": "sha512-bmFEM39CyX336ZGGRsGPlc6jZHriIoHacOQcTt72MktIjpPhZoP4te2jOyUXF3BLILmJ8aNLncoPVeIIFlrDeA==", - "dev": true, "requires": { "cmd-shim": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", @@ -9053,7 +8978,6 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", - "peer": true, "requires": { "node-gyp-build": "^4.3.0" } @@ -9086,9 +9010,9 @@ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" }, "caniuse-lite": { - "version": "1.0.30001444", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001444.tgz", - "integrity": "sha512-ecER9xgJQVMqcrxThKptsW0pPxSae8R2RB87LNa+ivW9ppNWRHEplXcDzkCOP4LYWGj8hunXLqaiC41iBATNyg==" + "version": "1.0.30001517", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz", + "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==" }, "ccount": { "version": "2.0.1", @@ -9112,8 +9036,7 @@ "character-entities-html4": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "peer": true + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==" }, "character-entities-legacy": { "version": "1.1.4", @@ -9174,8 +9097,7 @@ "cmd-shim": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.1.tgz", - "integrity": "sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==", - "dev": true + "integrity": "sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==" }, "color": { "version": "4.2.3", @@ -9211,8 +9133,7 @@ "comma-separated-tokens": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "peer": true + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==" }, "commander": { "version": "2.20.3", @@ -9231,19 +9152,17 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" }, "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "peer": true, + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", "requires": { - "node-fetch": "2.6.7" + "node-fetch": "^2.6.12" }, "dependencies": { "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "peer": true, + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", "requires": { "whatwg-url": "^5.0.0" } @@ -9274,7 +9193,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "peer": true, "requires": { "es5-ext": "^0.10.50", "type": "^1.0.1" @@ -9405,6 +9323,14 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "requires": { + "iconv-lite": "^0.6.2" + } + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -9516,7 +9442,6 @@ "version": "0.10.62", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "peer": true, "requires": { "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.3", @@ -9527,7 +9452,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "peer": true, "requires": { "d": "1", "es5-ext": "^0.10.35", @@ -9538,7 +9462,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "peer": true, "requires": { "d": "^1.0.1", "ext": "^1.1.2" @@ -9879,7 +9802,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.0.tgz", "integrity": "sha512-rJz6I4L0GaXYtHpoMScgDIwM0/Vwbu5shbMeER596rB2D1EWF6+Gj0e0UKzJPZrpoOc87+Q2kgVFHfjAymIqmw==", - "peer": true, "requires": { "@types/estree": "^1.0.0" } @@ -9888,7 +9810,6 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.2.tgz", "integrity": "sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==", - "peer": true, "requires": { "@types/estree-jsx": "^1.0.0", "estree-util-is-identifier-name": "^2.0.0", @@ -9898,14 +9819,12 @@ "estree-util-is-identifier-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.0.1.tgz", - "integrity": "sha512-rxZj1GkQhY4x1j/CSnybK9cGuMFQYFPLq0iNyopqf14aOVLFtMv7Esika+ObJWPWiOHuMOAHz3YkWoLYYRnzWQ==", - "peer": true + "integrity": "sha512-rxZj1GkQhY4x1j/CSnybK9cGuMFQYFPLq0iNyopqf14aOVLFtMv7Esika+ObJWPWiOHuMOAHz3YkWoLYYRnzWQ==" }, "estree-util-to-js": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-1.1.0.tgz", "integrity": "sha512-490lbfCcpLk+ofK6HCgqDfYs4KAfq6QVvDw3+Bm1YoKRgiOjKiKYGAVQE1uwh7zVxBgWhqp4FDtp5SqunpUk1A==", - "peer": true, "requires": { "@types/estree-jsx": "^1.0.0", "astring": "^1.8.0", @@ -9916,7 +9835,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.0.tgz", "integrity": "sha512-wdsoqhWueuJKsh5hqLw3j8lwFqNStm92VcwtAOAny8g/KS/l5Y8RISjR4k5W6skCj3Nirag/WUCMS0Nfy3sgsg==", - "peer": true, "requires": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^2.0.0" @@ -9925,8 +9843,7 @@ "estree-walker": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.2.tgz", - "integrity": "sha512-C03BvXCQIH/po+PNPONx/zSM9ziPr9weX8xNhYb/IJtdJ9z+L4z9VKPTB+UTHdmhnIopA2kc419ueyVyHVktwA==", - "peer": true + "integrity": "sha512-C03BvXCQIH/po+PNPONx/zSM9ziPr9weX8xNhYb/IJtdJ9z+L4z9VKPTB+UTHdmhnIopA2kc419ueyVyHVktwA==" }, "esutils": { "version": "2.0.3", @@ -9948,7 +9865,6 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "peer": true, "requires": { "type": "^2.7.2" }, @@ -9956,8 +9872,7 @@ "type": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", - "peer": true + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" } } }, @@ -10102,7 +10017,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, "requires": { "minipass": "^3.0.0" }, @@ -10111,7 +10025,6 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, "requires": { "yallist": "^4.0.0" } @@ -10203,8 +10116,7 @@ "glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "peer": true + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, "globals": { "version": "13.19.0", @@ -10316,7 +10228,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.2.0.tgz", "integrity": "sha512-QFMTJsd3+lr0TKiObJ6PWwpWqFjD+T28dVSazcPAslHjHGMXxs5xFvjLbUf6e6O3/dfHb9iourepMlSh5x7lIA==", - "peer": true, "requires": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", @@ -10343,8 +10254,7 @@ "hast-util-whitespace": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", - "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", - "peer": true + "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==" }, "hastscript": { "version": "6.0.0", @@ -10383,6 +10293,14 @@ "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -10429,8 +10347,7 @@ "inline-style-parser": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", - "peer": true + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" }, "internal-slot": { "version": "1.0.4", @@ -10596,7 +10513,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.1.tgz", "integrity": "sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==", - "peer": true, "requires": { "@types/estree": "*" } @@ -10654,8 +10570,7 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "peer": true + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, "is-weakmap": { "version": "2.0.1", @@ -10724,10 +10639,10 @@ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz", "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==" }, - "js-base64": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.5.tgz", - "integrity": "sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==" + "jose": { + "version": "4.14.4", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.14.4.tgz", + "integrity": "sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==" }, "js-sdsl": { "version": "4.2.0", @@ -10870,8 +10785,7 @@ "markdown-extensions": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", - "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==", - "peer": true + "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==" }, "markdown-table": { "version": "3.0.3", @@ -10882,7 +10796,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz", "integrity": "sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==", - "peer": true, "requires": { "@types/mdast": "^3.0.0", "@types/unist": "^2.0.0", @@ -10893,7 +10806,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "peer": true, "requires": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", @@ -11006,7 +10918,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-2.0.0.tgz", "integrity": "sha512-M09lW0CcBT1VrJUaF/PYxemxxHa7SLDHdSn94Q9FhxjCQfuW7nMAWKWimTmA3OyDMSTH981NN1csW1X+HPSluw==", - "peer": true, "requires": { "mdast-util-mdx-expression": "^1.0.0", "mdast-util-mdx-jsx": "^2.0.0", @@ -11017,7 +10928,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.1.tgz", "integrity": "sha512-TTb6cKyTA1RD+1su1iStZ5PAv3rFfOUKcoU5EstUpv/IZo63uDX03R8+jXjMEhcobXnNOiG6/ccekvVl4eV1zQ==", - "peer": true, "requires": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^2.0.0", @@ -11030,7 +10940,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.0.tgz", "integrity": "sha512-KzgzfWMhdteDkrY4mQtyvTU5bc/W4ppxhe9SzelO6QUUiwLAM+Et2Dnjjprik74a336kHdo0zKm7Tp+n6FFeRg==", - "peer": true, "requires": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^2.0.0", @@ -11047,26 +10956,22 @@ "character-entities-legacy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "peer": true + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==" }, "character-reference-invalid": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", - "peer": true + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==" }, "is-alphabetical": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", - "peer": true + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==" }, "is-alphanumerical": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "peer": true, "requires": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" @@ -11075,20 +10980,17 @@ "is-decimal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", - "peer": true + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==" }, "is-hexadecimal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", - "peer": true + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==" }, "parse-entities": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.0.tgz", "integrity": "sha512-5nk9Fn03x3rEhGaX1FU6IDwG/k+GxLXlFAkgrbM1asuAFl3BhdQWvASaIsmwWypRNcZKHPYnIuOSfIWEyEQnPQ==", - "peer": true, "requires": { "@types/unist": "^2.0.0", "character-entities": "^2.0.0", @@ -11106,7 +11008,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.0.tgz", "integrity": "sha512-7N5ihsOkAEGjFotIX9p/YPdl4TqUoMxL4ajNz7PbT89BqsdWJuBC9rvgt6wpbwTZqWWR0jKWqQbwsOWDBUZv4g==", - "peer": true, "requires": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^2.0.0", @@ -11128,7 +11029,6 @@ "version": "12.2.5", "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.2.5.tgz", "integrity": "sha512-EFNhT35ZR/VZ85/EedDdCNTq0oFM+NM/+qBomVGQ0+Lcg0nhI8xIwmdCzNMlVlCJNXRprpobtKP/IUh8cfz6zQ==", - "peer": true, "requires": { "@types/hast": "^2.0.0", "@types/mdast": "^3.0.0", @@ -11145,7 +11045,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "peer": true, "requires": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", @@ -11335,7 +11234,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.3.tgz", "integrity": "sha512-TjYtjEMszWze51NJCZmhv7MEBcgYRgb3tJeMAJ+HQCAaZHHRBaDCccqQzGizR/H4ODefP44wRTgOn2vE5I6nZA==", - "peer": true, "requires": { "micromark-factory-mdx-expression": "^1.0.0", "micromark-factory-space": "^1.0.0", @@ -11350,7 +11248,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.3.tgz", "integrity": "sha512-VfA369RdqUISF0qGgv2FfV7gGjHDfn9+Qfiv5hEwpyr1xscRj/CiVRkU7rywGFCO7JwJ5L0e7CJz60lY52+qOA==", - "peer": true, "requires": { "@types/acorn": "^4.0.0", "estree-util-is-identifier-name": "^2.0.0", @@ -11367,7 +11264,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.0.tgz", "integrity": "sha512-xaRAMoSkKdqZXDAoSgp20Azm0aRQKGOl0RrS81yGu8Hr/JhMsBmfs4wR7m9kgVUIO36cMUQjNyiyDKPrsv8gOw==", - "peer": true, "requires": { "micromark-util-types": "^1.0.0" } @@ -11376,7 +11272,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.0.tgz", "integrity": "sha512-TZZRZgeHvtgm+IhtgC2+uDMR7h8eTKF0QUX9YsgoL9+bADBpBY6SiLvWqnBlLbCEevITmTqmEuY3FoxMKVs1rQ==", - "peer": true, "requires": { "acorn": "^8.0.0", "acorn-jsx": "^5.0.0", @@ -11392,7 +11287,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.3.tgz", "integrity": "sha512-2N13ol4KMoxb85rdDwTAC6uzs8lMX0zeqpcyx7FhS7PxXomOnLactu8WI8iBNXW8AVyea3KIJd/1CKnUmwrK9A==", - "peer": true, "requires": { "micromark-core-commonmark": "^1.0.0", "micromark-util-character": "^1.0.0", @@ -11429,7 +11323,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.6.tgz", "integrity": "sha512-WRQIc78FV7KrCfjsEf/sETopbYjElh3xAmNpLkd1ODPqxEngP42eVRGbiPEQWpRV27LzqW+XVTvQAMIIRLPnNA==", - "peer": true, "requires": { "micromark-factory-space": "^1.0.0", "micromark-util-character": "^1.0.0", @@ -11537,7 +11430,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.2.0.tgz", "integrity": "sha512-WWp3bf7xT9MppNuw3yPjpnOxa8cj5ACivEzXJKu0WwnjBYfzaBvIAT9KfeyI0Qkll+bfQtfftSwdgTH6QhTOKw==", - "peer": true, "requires": { "@types/acorn": "^4.0.0", "@types/estree": "^1.0.0", @@ -11640,14 +11532,12 @@ "minipass": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", - "dev": true + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==" }, "minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, "requires": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -11657,7 +11547,6 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, "requires": { "yallist": "^4.0.0" } @@ -11667,8 +11556,7 @@ "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, "mkdirp-classic": { "version": "0.5.3", @@ -11730,25 +11618,27 @@ "peer": true }, "next": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/next/-/next-13.3.0.tgz", - "integrity": "sha512-OVTw8MpIPa12+DCUkPqRGPS3thlJPcwae2ZL4xti3iBff27goH024xy4q2lhlsdoYiKOi8Kz6uJoLW/GXwgfOA==", + "version": "13.4.10", + "resolved": "https://registry.npmjs.org/next/-/next-13.4.10.tgz", + "integrity": "sha512-4ep6aKxVTQ7rkUW2fBLhpBr/5oceCuf4KmlUpvG/aXuDTIf9mexNSpabUD6RWPspu6wiJJvozZREhXhueYO36A==", "requires": { - "@next/env": "13.3.0", - "@next/swc-darwin-arm64": "13.3.0", - "@next/swc-darwin-x64": "13.3.0", - "@next/swc-linux-arm64-gnu": "13.3.0", - "@next/swc-linux-arm64-musl": "13.3.0", - "@next/swc-linux-x64-gnu": "13.3.0", - "@next/swc-linux-x64-musl": "13.3.0", - "@next/swc-win32-arm64-msvc": "13.3.0", - "@next/swc-win32-ia32-msvc": "13.3.0", - "@next/swc-win32-x64-msvc": "13.3.0", - "@swc/helpers": "0.4.14", + "@next/env": "13.4.10", + "@next/swc-darwin-arm64": "13.4.10", + "@next/swc-darwin-x64": "13.4.10", + "@next/swc-linux-arm64-gnu": "13.4.10", + "@next/swc-linux-arm64-musl": "13.4.10", + "@next/swc-linux-x64-gnu": "13.4.10", + "@next/swc-linux-x64-musl": "13.4.10", + "@next/swc-win32-arm64-msvc": "13.4.10", + "@next/swc-win32-ia32-msvc": "13.4.10", + "@next/swc-win32-x64-msvc": "13.4.10", + "@swc/helpers": "0.5.1", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001406", "postcss": "8.4.14", - "styled-jsx": "5.1.1" + "styled-jsx": "5.1.1", + "watchpack": "2.4.0", + "zod": "3.21.4" }, "dependencies": { "postcss": { @@ -11763,11 +11653,16 @@ } } }, + "next-themes": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.2.1.tgz", + "integrity": "sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==", + "requires": {} + }, "next-tick": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "peer": true + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, "node-abi": { "version": "3.31.0", @@ -11800,8 +11695,7 @@ "node-gyp-build": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", - "peer": true + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==" }, "node-releases": { "version": "2.0.8", @@ -11821,8 +11715,7 @@ "npm-normalize-package-bin": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz", - "integrity": "sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==", - "dev": true + "integrity": "sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==" }, "nprogress": { "version": "0.2.0", @@ -12012,7 +11905,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.0.4.tgz", "integrity": "sha512-SFx68DxCv0Iyo6APZuw/AKewkkThGwssmU0QWtTlvov3VAtPX+QJ4CadwSaz8nrT5jPIuxdvJWB4PnD2KNDxQg==", - "peer": true, "requires": { "estree-walker": "^3.0.0", "is-reference": "^3.0.0" @@ -12154,8 +12046,7 @@ "property-information": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.2.0.tgz", - "integrity": "sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==", - "peer": true + "integrity": "sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==" }, "pump": { "version": "3.0.0", @@ -12241,8 +12132,7 @@ "read-cmd-shim": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz", - "integrity": "sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==", - "dev": true + "integrity": "sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==" }, "readable-stream": { "version": "3.6.0", @@ -12307,7 +12197,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.2.1.tgz", "integrity": "sha512-R9wcN+/THRXTKyRBp6Npo/mcbGA2iT3N4G8qUqLA5pOEg7kBidHv8K2hHidCMYZ6DXmwK18umu0K4cicgA2PPQ==", - "peer": true, "requires": { "mdast-util-mdx": "^2.0.0", "micromark-extension-mdxjs": "^1.0.0" @@ -12317,7 +12206,6 @@ "version": "10.0.1", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz", "integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==", - "peer": true, "requires": { "@types/mdast": "^3.0.0", "mdast-util-from-markdown": "^1.0.0", @@ -12328,7 +12216,6 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", - "peer": true, "requires": { "@types/hast": "^2.0.0", "@types/mdast": "^3.0.0", @@ -12395,6 +12282,11 @@ "is-regex": "^1.1.4" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -12436,6 +12328,11 @@ "randombytes": "^2.1.0" } }, + "set-cookie-parser": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", + "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" + }, "sharp": { "version": "0.31.3", "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.31.3.tgz", @@ -12477,8 +12374,7 @@ "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "simple-concat": { "version": "1.0.1", @@ -12554,8 +12450,7 @@ "space-separated-tokens": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "peer": true + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==" }, "stop-iteration-iterator": { "version": "1.0.0", @@ -12617,7 +12512,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", - "peer": true, "requires": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" @@ -12626,8 +12520,7 @@ "character-entities-legacy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "peer": true + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==" } } }, @@ -12648,7 +12541,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.0.tgz", "integrity": "sha512-dAjq2m87tPn/TcYTeqMhXJRhu96WYWcxMFQxs3Y9jfYpq2jG+38u4tj0Lst6DOiYXmDuNxVJ2b1Z2uPC6wTEeg==", - "peer": true, "requires": { "inline-style-parser": "0.1.1" } @@ -12698,7 +12590,6 @@ "version": "1.50.2", "resolved": "https://registry.npmjs.org/supabase/-/supabase-1.50.2.tgz", "integrity": "sha512-LTUXxkEQQf53sG0dr9arY6bcxNA9envsc0436Nsh5K6500QYYwEF/DokXXxmY6DjJt3OGdTnMICDpGFNAcim3g==", - "dev": true, "requires": { "bin-links": "^4.0.1", "node-fetch": "^3.2.10", @@ -12791,7 +12682,6 @@ "version": "6.1.13", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", - "dev": true, "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -12804,8 +12694,7 @@ "chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" } } }, @@ -12898,14 +12787,12 @@ "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "peer": true + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "peer": true + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==" }, "trough": { "version": "2.1.0", @@ -13003,8 +12890,7 @@ "type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "peer": true + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" }, "type-check": { "version": "0.4.0", @@ -13033,7 +12919,6 @@ "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "peer": true, "requires": { "is-typedarray": "^1.0.0" } @@ -13072,7 +12957,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.0.tgz", "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", - "peer": true, "requires": { "@types/unist": "^2.0.0" } @@ -13080,8 +12964,7 @@ "unist-util-generated": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", - "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==", - "peer": true + "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==" }, "unist-util-is": { "version": "5.1.1", @@ -13092,7 +12975,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.3.tgz", "integrity": "sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==", - "peer": true, "requires": { "@types/unist": "^2.0.0" } @@ -13101,7 +12983,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.1.tgz", "integrity": "sha512-xtoY50b5+7IH8tFbkw64gisG9tMSpxDjhX9TmaJJae/XuxQ9R/Kc8Nv1eOsf43Gt4KV/LkriMy9mptDr7XLcaw==", - "peer": true, "requires": { "@types/unist": "^2.0.0" } @@ -13110,7 +12991,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.1.tgz", "integrity": "sha512-0yDkppiIhDlPrfHELgB+NLQD5mfjup3a8UYclHruTJWmY74je8g+CIFr79x5f6AkmzSwlvKLbs63hC0meOMowQ==", - "peer": true, "requires": { "@types/unist": "^2.0.0", "unist-util-visit": "^4.0.0" @@ -13120,7 +13000,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "peer": true, "requires": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", @@ -13199,7 +13078,6 @@ "version": "5.0.10", "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "peer": true, "requires": { "node-gyp-build": "^4.3.0" } @@ -13247,7 +13125,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.0.1.tgz", "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", - "peer": true, "requires": { "@types/unist": "^2.0.0", "vfile": "^5.0.0" @@ -13266,7 +13143,6 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "peer": true, "requires": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -13280,8 +13156,7 @@ "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "peer": true + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "webpack": { "version": "5.76.3", @@ -13349,7 +13224,6 @@ "version": "1.0.34", "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "peer": true, "requires": { "bufferutil": "^4.0.1", "debug": "^2.2.0", @@ -13363,7 +13237,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, "requires": { "ms": "2.0.0" } @@ -13371,8 +13244,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, @@ -13380,7 +13252,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "peer": true, "requires": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -13444,7 +13315,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", - "dev": true, "requires": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -13466,8 +13336,7 @@ "yaeti": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", - "peer": true + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==" }, "yallist": { "version": "4.0.0", @@ -13484,6 +13353,11 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" }, + "zod": { + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", + "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==" + }, "zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", diff --git a/package.json b/package.json index 5fd289a..cac9880 100644 --- a/package.json +++ b/package.json @@ -12,25 +12,28 @@ "dependencies": { "@headlessui/react": "^1.7.7", "@mapbox/rehype-prism": "^0.7.0", - "@next/mdx": "^13.1.1", - "@supabase/auth-helpers-nextjs": "^0.6.0", - "@supabase/auth-helpers-react": "^0.3.1", + "@mdx-js/loader": "^2.3.0", + "@mdx-js/react": "^2.3.0", + "@next/mdx": "^13.4.10", + "@supabase/auth-helpers-nextjs": "^0.7.3", + "@supabase/supabase-js": "^2.27.0", "@tailwindcss/typography": "^0.5.8", - "@types/mdx": "^2.0.3", + "@types/mdx": "^2.0.5", "@types/node": "^18.11.18", "@types/nprogress": "^0.2.0", "@types/react": "18.0.26", "@types/react-dom": "18.0.10", "autoprefixer": "^10.4.13", "clsx": "^1.2.1", + "encoding": "^0.1.13", "eslint": "8.31.0", "eslint-config-next": "^13.3.0", "fast-glob": "^3.2.12", "feed": "^4.2.2", "focus-visible": "^5.2.0", "motion": "^10.15.5", - "next": "^13.3.0", - "node-fetch": "^3.3.0", + "next": "^13.4.10", + "next-themes": "^0.2.1", "nprogress": "^0.2.0", "postcss": "^8.4.21", "postcss-focus-visible": "^7.1.0", @@ -38,13 +41,11 @@ "react-dom": "^18.2.0", "remark-gfm": "^3.0.1", "sharp": "^0.31.3", + "supabase": "^1.50.2", "swr": "^2.1.2", "tailwind-merge": "^1.9.0", "tailwindcss": "^3.3.0", "ts-node": "^10.9.1", "typescript": "4.9.4" - }, - "devDependencies": { - "supabase": "^1.50.2" } } diff --git a/pages/_app.tsx b/pages/_app.tsx deleted file mode 100644 index e2ba7cd..0000000 --- a/pages/_app.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import type {AppProps} from 'next/app' -import {useRouter} from 'next/router' -import NProgress from 'nprogress' -import {createBrowserSupabaseClient} from '@supabase/auth-helpers-nextjs' -import {SessionContextProvider, Session} from '@supabase/auth-helpers-react' -import {useEffect, useState} from 'react' -import {Header} from '@/components/common/Header' -import {Footer} from '@/components/common/Footer' - -import '../styles/nprogress.css' -import '../styles/tailwind.css' -import 'focus-visible' - -export default function App({Component, pageProps}: AppProps<{ initialSession: Session }>) { - const [supabaseClient] = useState(() => createBrowserSupabaseClient()) - const router = useRouter() - NProgress.configure({showSpinner: false}) - - useEffect(() => { - const handleRouteStart = () => NProgress.start() - const handleRouteDone = () => NProgress.done() - - router.events.on("routeChangeStart", handleRouteStart) - router.events.on("routeChangeComplete", handleRouteDone) - router.events.on("routeChangeError", handleRouteDone) - - return () => { - router.events.off("routeChangeStart", handleRouteStart) - router.events.off("routeChangeComplete", handleRouteDone) - router.events.off("routeChangeError", handleRouteDone) - } - }) - - return ( - -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    - - ) -} diff --git a/pages/_document.tsx b/pages/_document.tsx deleted file mode 100644 index bdd84d2..0000000 --- a/pages/_document.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import {Html, Head, Main, NextScript} from 'next/document' - -const modeScript = ` - darkModeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)') - - updateMode() - darkModeMediaQuery.addEventListener('change', updateModeWithoutTransitions) - window.addEventListener('storage', updateModeWithoutTransitions) - - function updateMode() { - let isSystemDarkMode = darkModeMediaQuery.matches - let isDarkMode = window.localStorage.isDarkMode === 'true' || (!('isDarkMode' in window.localStorage) && isSystemDarkMode) - - if (isDarkMode) { - document.documentElement.classList.add('dark') - } else { - document.documentElement.classList.remove('dark') - } - - if (isDarkMode === isSystemDarkMode) { - delete window.localStorage.isDarkMode - } - } - - function disableTransitionsTemporarily() { - document.documentElement.classList.add('[&_*]:!transition-none') - window.setTimeout(() => { - document.documentElement.classList.remove('[&_*]:!transition-none') - }, 0) - } - - function updateModeWithoutTransitions() { - disableTransitionsTemporarily() - updateMode() - } -` - -export default function Document() { - return ( - - -