mirror of
https://github.com/jakejarvis/jarv.is.git
synced 2025-04-26 06:45:23 -04:00
more caching and error handling
This commit is contained in:
parent
8890c1d08d
commit
d3250bd00e
@ -38,3 +38,8 @@ RESEND_DOMAIN=
|
|||||||
NEXT_PUBLIC_TURNSTILE_SITE_KEY=
|
NEXT_PUBLIC_TURNSTILE_SITE_KEY=
|
||||||
# used for backend validation of turnstile result.
|
# used for backend validation of turnstile result.
|
||||||
TURNSTILE_SECRET_KEY=
|
TURNSTILE_SECRET_KEY=
|
||||||
|
|
||||||
|
# optional. sets "Onion-Location" response header to advertise a hidden service for the site; browsers like Brave and
|
||||||
|
# Tor Browser will automatically pick this up and offer to redirect users to it.
|
||||||
|
# https://community.torproject.org/onion-services/advanced/onion-location/
|
||||||
|
NEXT_PUBLIC_ONION_DOMAIN=
|
||||||
|
@ -54,9 +54,9 @@ export const sendMessage = async (
|
|||||||
throw new Error(`[contact form] turnstile validation failed: ${turnstileResponse.status}`);
|
throw new Error(`[contact form] turnstile validation failed: ${turnstileResponse.status}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
const turnstileData = await turnstileResponse?.json();
|
const turnstileData = (await turnstileResponse.json()) as { success: boolean };
|
||||||
|
|
||||||
if (!turnstileData?.success) {
|
if (!turnstileData.success) {
|
||||||
return {
|
return {
|
||||||
success: false,
|
success: false,
|
||||||
message: "Did you complete the CAPTCHA? (If you're human, that is...)",
|
message: "Did you complete the CAPTCHA? (If you're human, that is...)",
|
||||||
|
@ -54,7 +54,7 @@ const Image = async ({ params }: { params: Promise<{ slug: string }> }) => {
|
|||||||
const { slug } = await params;
|
const { slug } = await params;
|
||||||
|
|
||||||
// get the post's title and image filename from its frontmatter
|
// get the post's title and image filename from its frontmatter
|
||||||
const { title, image: imagePath } = await getFrontMatter(slug);
|
const frontmatter = await getFrontMatter(slug);
|
||||||
|
|
||||||
return new ImageResponse(
|
return new ImageResponse(
|
||||||
(
|
(
|
||||||
@ -67,7 +67,7 @@ const Image = async ({ params }: { params: Promise<{ slug: string }> }) => {
|
|||||||
background: "linear-gradient(0deg, hsla(197, 14%, 57%, 1) 0%, hsla(192, 17%, 94%, 1) 100%)",
|
background: "linear-gradient(0deg, hsla(197, 14%, 57%, 1) 0%, hsla(192, 17%, 94%, 1) 100%)",
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{imagePath && (
|
{frontmatter!.image && (
|
||||||
<div
|
<div
|
||||||
style={{
|
style={{
|
||||||
display: "flex",
|
display: "flex",
|
||||||
@ -78,7 +78,7 @@ const Image = async ({ params }: { params: Promise<{ slug: string }> }) => {
|
|||||||
{/* eslint-disable-next-line jsx-a11y/alt-text */}
|
{/* eslint-disable-next-line jsx-a11y/alt-text */}
|
||||||
<img
|
<img
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
src={await getLocalImage(`${POSTS_DIR}/${slug}/${imagePath}`)}
|
src={await getLocalImage(`${POSTS_DIR}/${slug}/${frontmatter!.image}`)}
|
||||||
style={{ objectFit: "cover", height: "100%", width: "100%" }}
|
style={{ objectFit: "cover", height: "100%", width: "100%" }}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@ -117,7 +117,7 @@ const Image = async ({ params }: { params: Promise<{ slug: string }> }) => {
|
|||||||
color: "#fefefe",
|
color: "#fefefe",
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{title}
|
{frontmatter!.title}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
|
@ -65,7 +65,7 @@
|
|||||||
margin-top: 2em;
|
margin-top: 2em;
|
||||||
padding-top: 2em;
|
padding-top: 2em;
|
||||||
border-top: 2px solid var(--colors-light);
|
border-top: 2px solid var(--colors-light);
|
||||||
min-height: 360px;
|
min-height: 140px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
|
@ -37,14 +37,14 @@ export const generateMetadata = async ({ params }: { params: Promise<{ slug: str
|
|||||||
const frontmatter = await getFrontMatter(slug);
|
const frontmatter = await getFrontMatter(slug);
|
||||||
|
|
||||||
return addMetadata({
|
return addMetadata({
|
||||||
title: frontmatter.title,
|
title: frontmatter!.title,
|
||||||
description: frontmatter.description,
|
description: frontmatter!.description,
|
||||||
openGraph: {
|
openGraph: {
|
||||||
type: "article",
|
type: "article",
|
||||||
authors: [config.authorName],
|
authors: [config.authorName],
|
||||||
tags: frontmatter.tags,
|
tags: frontmatter!.tags,
|
||||||
publishedTime: frontmatter.date,
|
publishedTime: frontmatter!.date,
|
||||||
modifiedTime: frontmatter.date,
|
modifiedTime: frontmatter!.date,
|
||||||
},
|
},
|
||||||
twitter: {
|
twitter: {
|
||||||
card: "summary_large_image",
|
card: "summary_large_image",
|
||||||
@ -67,13 +67,13 @@ const Page = async ({ params }: { params: Promise<{ slug: string }> }) => {
|
|||||||
item={{
|
item={{
|
||||||
"@context": "https://schema.org",
|
"@context": "https://schema.org",
|
||||||
"@type": "Article",
|
"@type": "Article",
|
||||||
headline: frontmatter.title,
|
headline: frontmatter!.title,
|
||||||
description: frontmatter.description,
|
description: frontmatter!.description,
|
||||||
url: frontmatter.permalink,
|
url: frontmatter!.permalink,
|
||||||
image: [`${BASE_URL}/notes/${slug}/opengraph-image`],
|
image: [`${BASE_URL}/notes/${slug}/opengraph-image`],
|
||||||
keywords: frontmatter.tags,
|
keywords: frontmatter!.tags,
|
||||||
datePublished: frontmatter.date,
|
datePublished: frontmatter!.date,
|
||||||
dateModified: frontmatter.date,
|
dateModified: frontmatter!.date,
|
||||||
inLanguage: config.siteLocale,
|
inLanguage: config.siteLocale,
|
||||||
license: config.licenseUrl,
|
license: config.licenseUrl,
|
||||||
author: {
|
author: {
|
||||||
@ -85,17 +85,17 @@ const Page = async ({ params }: { params: Promise<{ slug: string }> }) => {
|
|||||||
|
|
||||||
<div className={styles.meta}>
|
<div className={styles.meta}>
|
||||||
<div className={styles.metaItem}>
|
<div className={styles.metaItem}>
|
||||||
<Link href={`/notes/${frontmatter.slug}` as Route} plain className={styles.metaLink}>
|
<Link href={`/notes/${frontmatter!.slug}` as Route} plain className={styles.metaLink}>
|
||||||
<CalendarIcon size="1.2em" className={styles.metaIcon} />
|
<CalendarIcon size="1.2em" className={styles.metaIcon} />
|
||||||
<Time date={frontmatter.date} format="MMMM d, y" />
|
<Time date={frontmatter!.date} format="MMMM d, y" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{frontmatter.tags && (
|
{frontmatter!.tags && (
|
||||||
<div className={styles.metaItem}>
|
<div className={styles.metaItem}>
|
||||||
<TagIcon size="1.2em" className={styles.metaIcon} />
|
<TagIcon size="1.2em" className={styles.metaIcon} />
|
||||||
<span className={styles.metaTags}>
|
<span className={styles.metaTags}>
|
||||||
{frontmatter.tags.map((tag) => (
|
{frontmatter!.tags.map((tag) => (
|
||||||
<span key={tag} title={tag} className={styles.metaTag} aria-label={`Tagged with ${tag}`}>
|
<span key={tag} title={tag} className={styles.metaTag} aria-label={`Tagged with ${tag}`}>
|
||||||
{tag}
|
{tag}
|
||||||
</span>
|
</span>
|
||||||
@ -106,8 +106,8 @@ const Page = async ({ params }: { params: Promise<{ slug: string }> }) => {
|
|||||||
|
|
||||||
<div className={styles.metaItem}>
|
<div className={styles.metaItem}>
|
||||||
<Link
|
<Link
|
||||||
href={`https://github.com/${config.githubRepo}/blob/main/notes/${frontmatter.slug}/index.mdx`}
|
href={`https://github.com/${config.githubRepo}/blob/main/notes/${frontmatter!.slug}/index.mdx`}
|
||||||
title={`Edit "${frontmatter.title}" on GitHub`}
|
title={`Edit "${frontmatter!.title}" on GitHub`}
|
||||||
plain
|
plain
|
||||||
className={styles.metaLink}
|
className={styles.metaLink}
|
||||||
>
|
>
|
||||||
@ -129,7 +129,7 @@ const Page = async ({ params }: { params: Promise<{ slug: string }> }) => {
|
|||||||
>
|
>
|
||||||
<EyeIcon size="1.2em" className={styles.metaIcon} />
|
<EyeIcon size="1.2em" className={styles.metaIcon} />
|
||||||
<Suspense fallback={<Loading boxes={3} width={20} />}>
|
<Suspense fallback={<Loading boxes={3} width={20} />}>
|
||||||
<HitCounter slug={`notes/${frontmatter.slug}`} />
|
<HitCounter slug={`notes/${frontmatter!.slug}`} />
|
||||||
</Suspense>
|
</Suspense>
|
||||||
</div>
|
</div>
|
||||||
</ErrorBoundary>
|
</ErrorBoundary>
|
||||||
@ -138,8 +138,8 @@ const Page = async ({ params }: { params: Promise<{ slug: string }> }) => {
|
|||||||
|
|
||||||
<h1 className={styles.title}>
|
<h1 className={styles.title}>
|
||||||
<Link
|
<Link
|
||||||
href={`/notes/${frontmatter.slug}` as Route}
|
href={`/notes/${frontmatter!.slug}` as Route}
|
||||||
dangerouslySetInnerHTML={{ __html: frontmatter.htmlTitle || frontmatter.title }}
|
dangerouslySetInnerHTML={{ __html: frontmatter!.htmlTitle || frontmatter!.title }}
|
||||||
plain
|
plain
|
||||||
className={styles.link}
|
className={styles.link}
|
||||||
/>
|
/>
|
||||||
@ -147,9 +147,11 @@ const Page = async ({ params }: { params: Promise<{ slug: string }> }) => {
|
|||||||
|
|
||||||
<MDXContent />
|
<MDXContent />
|
||||||
|
|
||||||
{!frontmatter.noComments && (
|
{!frontmatter!.noComments && (
|
||||||
<div id="comments" className={styles.comments}>
|
<div id="comments" className={styles.comments}>
|
||||||
<Comments title={frontmatter.title} />
|
<Suspense fallback={<Loading boxes={3} width={40} style={{ display: "block", margin: "2em auto" }} />}>
|
||||||
|
<Comments title={frontmatter!.title} />
|
||||||
|
</Suspense>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
|
@ -18,7 +18,6 @@ const Comments = ({ title }: CommentsProps) => {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: use custom `<Loading />` spinner component during suspense
|
|
||||||
return (
|
return (
|
||||||
<Giscus
|
<Giscus
|
||||||
repo={config.githubRepo as GiscusProps["repo"]}
|
repo={config.githubRepo as GiscusProps["repo"]}
|
||||||
|
@ -12,6 +12,7 @@ const Image = ({ src, height, width, placeholder, className, ...rest }: ImagePro
|
|||||||
const constrainWidth = (width?: number | `${number}`) => {
|
const constrainWidth = (width?: number | `${number}`) => {
|
||||||
if (!width) return MAX_WIDTH;
|
if (!width) return MAX_WIDTH;
|
||||||
|
|
||||||
|
// ensure that the image width is not greater than the global maximum width
|
||||||
return Math.min(typeof width === "string" ? parseInt(width, 10) : width, MAX_WIDTH);
|
return Math.min(typeof width === "string" ? parseInt(width, 10) : width, MAX_WIDTH);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,11 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
|
import TimeAgo from "react-timeago";
|
||||||
|
import Time from "../Time";
|
||||||
import { useHasMounted } from "../../hooks";
|
import { useHasMounted } from "../../hooks";
|
||||||
import { format, formatISO, formatDistanceToNowStrict } from "date-fns";
|
|
||||||
import { enUS } from "date-fns/locale";
|
|
||||||
import { tz } from "@date-fns/tz";
|
|
||||||
import { utc } from "@date-fns/utc";
|
|
||||||
import * as config from "../../lib/config";
|
|
||||||
import type { ComponentPropsWithoutRef } from "react";
|
import type { ComponentPropsWithoutRef } from "react";
|
||||||
|
|
||||||
export type RelativeTimeProps = ComponentPropsWithoutRef<"time"> & {
|
export type RelativeTimeProps = ComponentPropsWithoutRef<"time"> & {
|
||||||
@ -17,17 +14,11 @@ const RelativeTime = ({ date, ...rest }: RelativeTimeProps) => {
|
|||||||
// cause a react hydration mismatch error.
|
// cause a react hydration mismatch error.
|
||||||
const hasMounted = useHasMounted();
|
const hasMounted = useHasMounted();
|
||||||
|
|
||||||
return (
|
if (!hasMounted) {
|
||||||
<time
|
return <Time date={date} format="MMM d, y" {...rest} />;
|
||||||
dateTime={formatISO(date, { in: utc })}
|
}
|
||||||
title={format(date, "MMM d, y, h:mm a O", { in: tz(config.timeZone), locale: enUS })}
|
|
||||||
{...rest}
|
return <TimeAgo date={date} {...rest} />;
|
||||||
>
|
|
||||||
{hasMounted
|
|
||||||
? formatDistanceToNowStrict(date, { locale: enUS, addSuffix: true })
|
|
||||||
: `on ${format(date, "MMM d, y", { in: tz(config.timeZone), locale: enUS })}`}
|
|
||||||
</time>
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default RelativeTime;
|
export default RelativeTime;
|
||||||
|
@ -1,14 +1,5 @@
|
|||||||
.player {
|
.player {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
.wrapper.responsive {
|
|
||||||
position: relative;
|
|
||||||
padding-top: 56.25%; /* ratio of 1280x720 */
|
|
||||||
}
|
|
||||||
|
|
||||||
.wrapper.responsive .player {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
}
|
}
|
||||||
|
@ -7,43 +7,38 @@ export type VideoProps = Omit<Partial<ComponentPropsWithoutRef<"video">>, "src">
|
|||||||
src: string[];
|
src: string[];
|
||||||
poster?: string;
|
poster?: string;
|
||||||
autoplay?: boolean;
|
autoplay?: boolean;
|
||||||
responsive?: boolean;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const Video = ({ src, poster, autoplay = false, responsive = true, className, ...rest }: VideoProps) => {
|
const Video = ({ src, poster, autoplay = false, className, ...rest }: VideoProps) => {
|
||||||
return (
|
return (
|
||||||
<div className={clsx(styles.wrapper, responsive && styles.responsive, className)}>
|
<video
|
||||||
<video
|
className={clsx(styles.player, className)}
|
||||||
width="100%"
|
poster={poster}
|
||||||
height="100%"
|
{...(autoplay
|
||||||
className={styles.player}
|
? {
|
||||||
poster={poster}
|
preload: "auto",
|
||||||
{...(autoplay
|
controls: false,
|
||||||
? {
|
autoPlay: true,
|
||||||
preload: "auto",
|
playsInline: true, // safari autoplay workaround
|
||||||
controls: false,
|
loop: true,
|
||||||
autoPlay: true,
|
muted: true,
|
||||||
playsInline: true, // safari autoplay workaround
|
|
||||||
loop: true,
|
|
||||||
muted: true,
|
|
||||||
}
|
|
||||||
: {
|
|
||||||
preload: "metadata",
|
|
||||||
controls: true,
|
|
||||||
})}
|
|
||||||
{...rest}
|
|
||||||
>
|
|
||||||
{src.map((file) => {
|
|
||||||
const extension = file.split(".").pop();
|
|
||||||
|
|
||||||
if (extension === "vtt") {
|
|
||||||
return <track key={file} kind="subtitles" src={file} srcLang="en" label="English" default />;
|
|
||||||
} else {
|
|
||||||
return <source key={file} src={file} type={`video/${extension}`} />;
|
|
||||||
}
|
}
|
||||||
})}
|
: {
|
||||||
</video>
|
preload: "metadata",
|
||||||
</div>
|
controls: true,
|
||||||
|
})}
|
||||||
|
{...rest}
|
||||||
|
>
|
||||||
|
{src.map((file) => {
|
||||||
|
const extension = file.split(".").pop();
|
||||||
|
|
||||||
|
if (extension === "vtt") {
|
||||||
|
return <track key={file} kind="subtitles" src={file} srcLang="en" label="English" default />;
|
||||||
|
} else {
|
||||||
|
return <source key={file} src={file} type={`video/${extension}`} />;
|
||||||
|
}
|
||||||
|
})}
|
||||||
|
</video>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -7,7 +7,6 @@ const useLocalStorage = <T = string>(
|
|||||||
key: string,
|
key: string,
|
||||||
initialValue?: T
|
initialValue?: T
|
||||||
): [T | undefined, Dispatch<SetStateAction<T | undefined>>, () => void] => {
|
): [T | undefined, Dispatch<SetStateAction<T | undefined>>, () => void] => {
|
||||||
// TODO: make these customizable (e.g. `JSON.stringify()` and `JSON.parse()`)
|
|
||||||
const serializer = (value: T | undefined) => String(value);
|
const serializer = (value: T | undefined) => String(value);
|
||||||
const deserializer = (value: string) => value as unknown as T;
|
const deserializer = (value: string) => value as unknown as T;
|
||||||
|
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
export const siteName = "Jake Jarvis";
|
export const siteName = "Jake Jarvis";
|
||||||
export const siteLocale = "en-US";
|
export const siteLocale = "en-US";
|
||||||
export const timeZone = "America/New_York"; // https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
|
export const timeZone = "America/New_York"; // https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
|
||||||
export const onionDomain = "jarvis2i2vp4j4tbxjogsnqdemnte5xhzyi7hziiyzxwge3hzmh57zad.onion";
|
|
||||||
export const shortDescription = "Frontend Web Developer in Boston, MA";
|
export const shortDescription = "Frontend Web Developer in Boston, MA";
|
||||||
export const longDescription =
|
export const longDescription =
|
||||||
"Hi there! I'm a frontend web developer based in Boston, Massachusetts specializing in TypeScript, React, Next.js, and other JavaScript frameworks.";
|
"Hi there! I'm a frontend web developer based in Boston, Massachusetts specializing in TypeScript, React, Next.js, and other JavaScript frameworks.";
|
||||||
|
@ -19,38 +19,42 @@ export type FrontMatter = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// returns front matter and the **raw & uncompiled** markdown of a given slug
|
// returns front matter and the **raw & uncompiled** markdown of a given slug
|
||||||
export const getFrontMatter = async (slug: string): Promise<FrontMatter> => {
|
export const getFrontMatter = cache(async (slug: string): Promise<FrontMatter | null> => {
|
||||||
const { frontmatter } = await import(`../../${POSTS_DIR}/${slug}/index.mdx`);
|
try {
|
||||||
|
const { frontmatter } = await import(`../../${POSTS_DIR}/${slug}/index.mdx`);
|
||||||
|
|
||||||
// process markdown title to html...
|
// process markdown title to html...
|
||||||
const htmlTitle = await unified()
|
const htmlTitle = await unified()
|
||||||
.use(remarkParse)
|
.use(remarkParse)
|
||||||
.use(remarkSmartypants)
|
.use(remarkSmartypants)
|
||||||
.use(remarkHtml, {
|
.use(remarkHtml, {
|
||||||
sanitize: {
|
sanitize: {
|
||||||
// allow *very* limited markdown to be used in post titles
|
// allow *very* limited markdown to be used in post titles
|
||||||
tagNames: ["code", "em", "strong"],
|
tagNames: ["code", "em", "strong"],
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.process(frontmatter.title)
|
.process(frontmatter.title)
|
||||||
.then((result) => result.toString().trim());
|
.then((result) => result.toString().trim());
|
||||||
|
|
||||||
// ...and then (sketchily) remove said html for a plaintext version:
|
// ...and then (sketchily) remove said html for a plaintext version:
|
||||||
// https://css-tricks.com/snippets/javascript/strip-html-tags-in-javascript/
|
// https://css-tricks.com/snippets/javascript/strip-html-tags-in-javascript/
|
||||||
const title = decode(htmlTitle.replace(/<[^>]*>/g, ""));
|
const title = decode(htmlTitle.replace(/<[^>]*>/g, ""));
|
||||||
|
|
||||||
// return both the parsed YAML front matter (with a few amendments) and the raw, unparsed markdown content
|
return {
|
||||||
return {
|
...(frontmatter as Partial<FrontMatter>),
|
||||||
...(frontmatter as Partial<FrontMatter>),
|
// plain title without html or markdown syntax:
|
||||||
// plain title without html or markdown syntax:
|
title,
|
||||||
title,
|
// stylized title with limited html tags:
|
||||||
// stylized title with limited html tags:
|
htmlTitle,
|
||||||
htmlTitle,
|
slug,
|
||||||
slug,
|
date: new Date(frontmatter.date).toISOString(), // validate/normalize the date string provided from front matter
|
||||||
date: new Date(frontmatter.date).toISOString(), // validate/normalize the date string provided from front matter
|
permalink: `${BASE_URL}/${POSTS_DIR}/${slug}`,
|
||||||
permalink: `${BASE_URL}/${POSTS_DIR}/${slug}`,
|
};
|
||||||
};
|
} catch (error) {
|
||||||
};
|
console.error(`Failed to load front matter for post with slug "${slug}":`, error);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// use filesystem to get a simple list of all post slugs
|
// use filesystem to get a simple list of all post slugs
|
||||||
export const getPostSlugs = cache(async (): Promise<string[]> => {
|
export const getPostSlugs = cache(async (): Promise<string[]> => {
|
||||||
@ -70,7 +74,7 @@ export const getPostSlugs = cache(async (): Promise<string[]> => {
|
|||||||
export const getAllPosts = cache(async (): Promise<FrontMatter[]> => {
|
export const getAllPosts = cache(async (): Promise<FrontMatter[]> => {
|
||||||
// concurrently fetch the front matter of each post
|
// concurrently fetch the front matter of each post
|
||||||
const slugs = await getPostSlugs();
|
const slugs = await getPostSlugs();
|
||||||
const posts = await Promise.all(slugs.map(getFrontMatter));
|
const posts = (await Promise.all(slugs.map(getFrontMatter))) as FrontMatter[];
|
||||||
|
|
||||||
// sort the results reverse chronologically and return
|
// sort the results reverse chronologically and return
|
||||||
return posts.sort((post1, post2) => new Date(post1.date).getTime() - new Date(post2.date).getTime());
|
return posts.sort((post1, post2) => new Date(post1.date).getTime() - new Date(post2.date).getTime());
|
||||||
|
@ -1,23 +1,23 @@
|
|||||||
import { NextResponse } from "next/server";
|
import { NextResponse } from "next/server";
|
||||||
import type { NextRequest } from "next/server";
|
import type { NextRequest } from "next/server";
|
||||||
|
|
||||||
import * as siteConfig from "./lib/config";
|
|
||||||
|
|
||||||
// assign "short codes" to approved reverse proxy destinations. for example:
|
// assign "short codes" to approved reverse proxy destinations. for example:
|
||||||
// ["abc", "https://jakejarvis.github.io"] => /_stream/abc/123.html -> https://jakejarvis.github.io/123.html
|
// ["abc", "https://jakejarvis.github.io"] => /_stream/abc/123.html -> https://jakejarvis.github.io/123.html
|
||||||
const rewritePrefix = "/_stream/";
|
const rewritePrefix = "/_stream/";
|
||||||
const rewrites = new Map([
|
const rewrites = new Map();
|
||||||
// umami backend, see https://umami.is/docs/guides/running-on-vercel#proxy-umami-analytics-via-vercel
|
|
||||||
["u", process.env.NEXT_PUBLIC_UMAMI_URL || "https://cloud.umami.is"],
|
// umami backend, see https://umami.is/docs/guides/running-on-vercel#proxy-umami-analytics-via-vercel
|
||||||
]);
|
if (process.env.NEXT_PUBLIC_UMAMI_WEBSITE_ID) {
|
||||||
|
rewrites.set("u", process.env.NEXT_PUBLIC_UMAMI_URL || "https://cloud.umami.is");
|
||||||
|
}
|
||||||
|
|
||||||
export const middleware = (request: NextRequest) => {
|
export const middleware = (request: NextRequest) => {
|
||||||
const headers = new Headers();
|
const headers = new Headers();
|
||||||
|
|
||||||
// https://gitweb.torproject.org/tor-browser-spec.git/tree/proposals/100-onion-location-header.txt
|
// https://community.torproject.org/onion-services/advanced/onion-location/
|
||||||
if (siteConfig.onionDomain) {
|
if (process.env.NEXT_PUBLIC_ONION_DOMAIN) {
|
||||||
const onionUrl = request.nextUrl.clone();
|
const onionUrl = request.nextUrl.clone();
|
||||||
onionUrl.hostname = siteConfig.onionDomain;
|
onionUrl.hostname = process.env.NEXT_PUBLIC_ONION_DOMAIN;
|
||||||
onionUrl.protocol = "http";
|
onionUrl.protocol = "http";
|
||||||
onionUrl.port = "";
|
onionUrl.port = "";
|
||||||
|
|
||||||
@ -51,7 +51,6 @@ export const middleware = (request: NextRequest) => {
|
|||||||
const proxiedPath = slashIndex === -1 ? "/" : pathAfterPrefix.slice(slashIndex);
|
const proxiedPath = slashIndex === -1 ? "/" : pathAfterPrefix.slice(slashIndex);
|
||||||
const proxiedUrl = new URL(`${proxiedPath}${request.nextUrl.search}`, proxiedOrigin);
|
const proxiedUrl = new URL(`${proxiedPath}${request.nextUrl.search}`, proxiedOrigin);
|
||||||
|
|
||||||
// TODO: remove debugging headers
|
|
||||||
headers.set("x-rewrite-url", proxiedUrl.toString());
|
headers.set("x-rewrite-url", proxiedUrl.toString());
|
||||||
|
|
||||||
// finally do the rewriting
|
// finally do the rewriting
|
||||||
|
@ -16,7 +16,7 @@ noComments: true
|
|||||||
---
|
---
|
||||||
|
|
||||||

|

|
||||||
_ [Hillary for New Hampshire](https://medium.com/@HillaryForNH) Winter Fellows with [Hillary Clinton](https://medium.com/@HillaryClinton) in Derry, NH ([February 3, 2016](https://www.flickr.com/photos/hillaryclinton/24707394571/))_
|
_[Hillary for New Hampshire](https://medium.com/@HillaryForNH) Winter Fellows with [Hillary Clinton](https://medium.com/@HillaryClinton) in Derry, NH ([February 3, 2016](https://www.flickr.com/photos/hillaryclinton/24707394571/))_
|
||||||
|
|
||||||
## Keeping in mind the big picture...
|
## Keeping in mind the big picture...
|
||||||
|
|
||||||
|
@ -34,7 +34,6 @@ Although the designer who selected this GIF likely had _thousands_ of choices wh
|
|||||||
]}
|
]}
|
||||||
crossOrigin="anonymous"
|
crossOrigin="anonymous"
|
||||||
autoplay
|
autoplay
|
||||||
responsive={false}
|
|
||||||
/>
|
/>
|
||||||
|
|
||||||
## 3. Joe Biden — [joebiden.com](https://joebiden.com/asdfasdf404)
|
## 3. Joe Biden — [joebiden.com](https://joebiden.com/asdfasdf404)
|
||||||
@ -54,7 +53,6 @@ A ballsy move, considering Beto's infamous [DUI arrest](https://www.politifact.c
|
|||||||
]}
|
]}
|
||||||
crossOrigin="anonymous"
|
crossOrigin="anonymous"
|
||||||
autoplay
|
autoplay
|
||||||
responsive={false}
|
|
||||||
/>
|
/>
|
||||||
|
|
||||||
## 5. Kamala Harris — [kamalaharris.org](https://kamalaharris.org/asdfasdf404)
|
## 5. Kamala Harris — [kamalaharris.org](https://kamalaharris.org/asdfasdf404)
|
||||||
@ -68,7 +66,6 @@ Another clean and simple page with a top-notch GIF. It injected some emotion int
|
|||||||
]}
|
]}
|
||||||
crossOrigin="anonymous"
|
crossOrigin="anonymous"
|
||||||
autoplay
|
autoplay
|
||||||
responsive={false}
|
|
||||||
/>
|
/>
|
||||||
|
|
||||||
## 6. Pete Buttigeg — [peteforamerica.com](https://peteforamerica.com/asdfasdf404/)
|
## 6. Pete Buttigeg — [peteforamerica.com](https://peteforamerica.com/asdfasdf404/)
|
||||||
|
21
package.json
21
package.json
@ -24,9 +24,9 @@
|
|||||||
"@giscus/react": "^3.1.0",
|
"@giscus/react": "^3.1.0",
|
||||||
"@mdx-js/loader": "^3.1.0",
|
"@mdx-js/loader": "^3.1.0",
|
||||||
"@mdx-js/react": "^3.1.0",
|
"@mdx-js/react": "^3.1.0",
|
||||||
"@next/bundle-analyzer": "15.3.0-canary.17",
|
"@next/bundle-analyzer": "15.3.0-canary.19",
|
||||||
"@next/mdx": "15.3.0-canary.17",
|
"@next/mdx": "15.3.0-canary.19",
|
||||||
"@next/third-parties": "15.3.0-canary.17",
|
"@next/third-parties": "15.3.0-canary.19",
|
||||||
"@octokit/graphql": "^8.2.1",
|
"@octokit/graphql": "^8.2.1",
|
||||||
"@octokit/graphql-schema": "^15.26.0",
|
"@octokit/graphql-schema": "^15.26.0",
|
||||||
"@prisma/client": "^6.5.0",
|
"@prisma/client": "^6.5.0",
|
||||||
@ -37,10 +37,10 @@
|
|||||||
"fast-glob": "^3.3.3",
|
"fast-glob": "^3.3.3",
|
||||||
"feed": "^4.2.2",
|
"feed": "^4.2.2",
|
||||||
"geist": "^1.3.1",
|
"geist": "^1.3.1",
|
||||||
"html-entities": "^2.5.2",
|
"html-entities": "^2.5.3",
|
||||||
"lucide-react": "0.483.0",
|
"lucide-react": "0.483.0",
|
||||||
"modern-normalize": "^3.0.1",
|
"modern-normalize": "^3.0.1",
|
||||||
"next": "15.3.0-canary.17",
|
"next": "15.3.0-canary.19",
|
||||||
"obj-str": "^1.1.0",
|
"obj-str": "^1.1.0",
|
||||||
"polished": "^4.3.1",
|
"polished": "^4.3.1",
|
||||||
"prop-types": "^15.8.1",
|
"prop-types": "^15.8.1",
|
||||||
@ -51,6 +51,7 @@
|
|||||||
"react-is": "19.0.0",
|
"react-is": "19.0.0",
|
||||||
"react-schemaorg": "^2.0.0",
|
"react-schemaorg": "^2.0.0",
|
||||||
"react-textarea-autosize": "^8.5.8",
|
"react-textarea-autosize": "^8.5.8",
|
||||||
|
"react-timeago": "^8.0.0",
|
||||||
"react-turnstile": "^1.1.4",
|
"react-turnstile": "^1.1.4",
|
||||||
"react-tweet": "^3.2.2",
|
"react-tweet": "^3.2.2",
|
||||||
"rehype-mdx-import-media": "^1.2.0",
|
"rehype-mdx-import-media": "^1.2.0",
|
||||||
@ -60,7 +61,7 @@
|
|||||||
"remark-frontmatter": "^5.0.0",
|
"remark-frontmatter": "^5.0.0",
|
||||||
"remark-gfm": "^4.0.1",
|
"remark-gfm": "^4.0.1",
|
||||||
"remark-html": "^16.0.1",
|
"remark-html": "^16.0.1",
|
||||||
"remark-mdx-frontmatter": "^5.0.0",
|
"remark-mdx-frontmatter": "^5.1.0",
|
||||||
"remark-parse": "^11.0.0",
|
"remark-parse": "^11.0.0",
|
||||||
"remark-smartypants": "^3.0.2",
|
"remark-smartypants": "^3.0.2",
|
||||||
"resend": "^4.1.2",
|
"resend": "^4.1.2",
|
||||||
@ -69,8 +70,8 @@
|
|||||||
"zod": "^3.24.2"
|
"zod": "^3.24.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/eslintrc": "^3.3.0",
|
"@eslint/eslintrc": "^3.3.1",
|
||||||
"@eslint/js": "^9.22.0",
|
"@eslint/js": "^9.23.0",
|
||||||
"@jakejarvis/eslint-config": "^4.0.7",
|
"@jakejarvis/eslint-config": "^4.0.7",
|
||||||
"@types/comma-number": "^2.1.2",
|
"@types/comma-number": "^2.1.2",
|
||||||
"@types/mdx": "^2.0.13",
|
"@types/mdx": "^2.0.13",
|
||||||
@ -81,8 +82,8 @@
|
|||||||
"@types/react-is": "^19.0.0",
|
"@types/react-is": "^19.0.0",
|
||||||
"babel-plugin-react-compiler": "19.0.0-beta-3229e95-20250315",
|
"babel-plugin-react-compiler": "19.0.0-beta-3229e95-20250315",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"eslint": "^9.22.0",
|
"eslint": "^9.23.0",
|
||||||
"eslint-config-next": "15.3.0-canary.17",
|
"eslint-config-next": "15.3.0-canary.19",
|
||||||
"eslint-config-prettier": "^10.1.1",
|
"eslint-config-prettier": "^10.1.1",
|
||||||
"eslint-plugin-css-modules": "^2.12.0",
|
"eslint-plugin-css-modules": "^2.12.0",
|
||||||
"eslint-plugin-import": "^2.31.0",
|
"eslint-plugin-import": "^2.31.0",
|
||||||
|
387
pnpm-lock.yaml
generated
387
pnpm-lock.yaml
generated
@ -27,14 +27,14 @@ importers:
|
|||||||
specifier: ^3.1.0
|
specifier: ^3.1.0
|
||||||
version: 3.1.0(@types/react@19.0.12)(react@19.0.0)
|
version: 3.1.0(@types/react@19.0.12)(react@19.0.0)
|
||||||
'@next/bundle-analyzer':
|
'@next/bundle-analyzer':
|
||||||
specifier: 15.3.0-canary.17
|
specifier: 15.3.0-canary.19
|
||||||
version: 15.3.0-canary.17
|
version: 15.3.0-canary.19
|
||||||
'@next/mdx':
|
'@next/mdx':
|
||||||
specifier: 15.3.0-canary.17
|
specifier: 15.3.0-canary.19
|
||||||
version: 15.3.0-canary.17(@mdx-js/loader@3.1.0(acorn@8.14.1))(@mdx-js/react@3.1.0(@types/react@19.0.12)(react@19.0.0))
|
version: 15.3.0-canary.19(@mdx-js/loader@3.1.0(acorn@8.14.1))(@mdx-js/react@3.1.0(@types/react@19.0.12)(react@19.0.0))
|
||||||
'@next/third-parties':
|
'@next/third-parties':
|
||||||
specifier: 15.3.0-canary.17
|
specifier: 15.3.0-canary.19
|
||||||
version: 15.3.0-canary.17(next@15.3.0-canary.17(@babel/core@7.26.10)(babel-plugin-react-compiler@19.0.0-beta-3229e95-20250315)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)
|
version: 15.3.0-canary.19(next@15.3.0-canary.19(@babel/core@7.26.10)(babel-plugin-react-compiler@19.0.0-beta-3229e95-20250315)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)
|
||||||
'@octokit/graphql':
|
'@octokit/graphql':
|
||||||
specifier: ^8.2.1
|
specifier: ^8.2.1
|
||||||
version: 8.2.1
|
version: 8.2.1
|
||||||
@ -64,10 +64,10 @@ importers:
|
|||||||
version: 4.2.2
|
version: 4.2.2
|
||||||
geist:
|
geist:
|
||||||
specifier: ^1.3.1
|
specifier: ^1.3.1
|
||||||
version: 1.3.1(next@15.3.0-canary.17(@babel/core@7.26.10)(babel-plugin-react-compiler@19.0.0-beta-3229e95-20250315)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))
|
version: 1.3.1(next@15.3.0-canary.19(@babel/core@7.26.10)(babel-plugin-react-compiler@19.0.0-beta-3229e95-20250315)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))
|
||||||
html-entities:
|
html-entities:
|
||||||
specifier: ^2.5.2
|
specifier: ^2.5.3
|
||||||
version: 2.5.2
|
version: 2.5.3
|
||||||
lucide-react:
|
lucide-react:
|
||||||
specifier: 0.483.0
|
specifier: 0.483.0
|
||||||
version: 0.483.0(react@19.0.0)
|
version: 0.483.0(react@19.0.0)
|
||||||
@ -75,8 +75,8 @@ importers:
|
|||||||
specifier: ^3.0.1
|
specifier: ^3.0.1
|
||||||
version: 3.0.1
|
version: 3.0.1
|
||||||
next:
|
next:
|
||||||
specifier: 15.3.0-canary.17
|
specifier: 15.3.0-canary.19
|
||||||
version: 15.3.0-canary.17(@babel/core@7.26.10)(babel-plugin-react-compiler@19.0.0-beta-3229e95-20250315)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
|
version: 15.3.0-canary.19(@babel/core@7.26.10)(babel-plugin-react-compiler@19.0.0-beta-3229e95-20250315)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
|
||||||
obj-str:
|
obj-str:
|
||||||
specifier: ^1.1.0
|
specifier: ^1.1.0
|
||||||
version: 1.1.0
|
version: 1.1.0
|
||||||
@ -107,6 +107,9 @@ importers:
|
|||||||
react-textarea-autosize:
|
react-textarea-autosize:
|
||||||
specifier: ^8.5.8
|
specifier: ^8.5.8
|
||||||
version: 8.5.8(@types/react@19.0.12)(react@19.0.0)
|
version: 8.5.8(@types/react@19.0.12)(react@19.0.0)
|
||||||
|
react-timeago:
|
||||||
|
specifier: ^8.0.0
|
||||||
|
version: 8.0.0(react@19.0.0)
|
||||||
react-turnstile:
|
react-turnstile:
|
||||||
specifier: ^1.1.4
|
specifier: ^1.1.4
|
||||||
version: 1.1.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
|
version: 1.1.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
|
||||||
@ -135,8 +138,8 @@ importers:
|
|||||||
specifier: ^16.0.1
|
specifier: ^16.0.1
|
||||||
version: 16.0.1
|
version: 16.0.1
|
||||||
remark-mdx-frontmatter:
|
remark-mdx-frontmatter:
|
||||||
specifier: ^5.0.0
|
specifier: ^5.1.0
|
||||||
version: 5.0.0
|
version: 5.1.0
|
||||||
remark-parse:
|
remark-parse:
|
||||||
specifier: ^11.0.0
|
specifier: ^11.0.0
|
||||||
version: 11.0.0
|
version: 11.0.0
|
||||||
@ -157,14 +160,14 @@ importers:
|
|||||||
version: 3.24.2
|
version: 3.24.2
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@eslint/eslintrc':
|
'@eslint/eslintrc':
|
||||||
specifier: ^3.3.0
|
specifier: ^3.3.1
|
||||||
version: 3.3.0
|
version: 3.3.1
|
||||||
'@eslint/js':
|
'@eslint/js':
|
||||||
specifier: ^9.22.0
|
specifier: ^9.23.0
|
||||||
version: 9.22.0
|
version: 9.23.0
|
||||||
'@jakejarvis/eslint-config':
|
'@jakejarvis/eslint-config':
|
||||||
specifier: ^4.0.7
|
specifier: ^4.0.7
|
||||||
version: 4.0.7(eslint@9.22.0)
|
version: 4.0.7(eslint@9.23.0)
|
||||||
'@types/comma-number':
|
'@types/comma-number':
|
||||||
specifier: ^2.1.2
|
specifier: ^2.1.2
|
||||||
version: 2.1.2
|
version: 2.1.2
|
||||||
@ -193,38 +196,38 @@ importers:
|
|||||||
specifier: ^7.0.3
|
specifier: ^7.0.3
|
||||||
version: 7.0.3
|
version: 7.0.3
|
||||||
eslint:
|
eslint:
|
||||||
specifier: ^9.22.0
|
specifier: ^9.23.0
|
||||||
version: 9.22.0
|
version: 9.23.0
|
||||||
eslint-config-next:
|
eslint-config-next:
|
||||||
specifier: 15.3.0-canary.17
|
specifier: 15.3.0-canary.19
|
||||||
version: 15.3.0-canary.17(eslint@9.22.0)(typescript@5.8.2)
|
version: 15.3.0-canary.19(eslint@9.23.0)(typescript@5.8.2)
|
||||||
eslint-config-prettier:
|
eslint-config-prettier:
|
||||||
specifier: ^10.1.1
|
specifier: ^10.1.1
|
||||||
version: 10.1.1(eslint@9.22.0)
|
version: 10.1.1(eslint@9.23.0)
|
||||||
eslint-plugin-css-modules:
|
eslint-plugin-css-modules:
|
||||||
specifier: ^2.12.0
|
specifier: ^2.12.0
|
||||||
version: 2.12.0(eslint@9.22.0)
|
version: 2.12.0(eslint@9.23.0)
|
||||||
eslint-plugin-import:
|
eslint-plugin-import:
|
||||||
specifier: ^2.31.0
|
specifier: ^2.31.0
|
||||||
version: 2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint-import-resolver-typescript@3.9.1)(eslint@9.22.0)
|
version: 2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0)(typescript@5.8.2))(eslint-import-resolver-typescript@3.9.1)(eslint@9.23.0)
|
||||||
eslint-plugin-jsx-a11y:
|
eslint-plugin-jsx-a11y:
|
||||||
specifier: ^6.10.2
|
specifier: ^6.10.2
|
||||||
version: 6.10.2(eslint@9.22.0)
|
version: 6.10.2(eslint@9.23.0)
|
||||||
eslint-plugin-mdx:
|
eslint-plugin-mdx:
|
||||||
specifier: ^3.2.0
|
specifier: ^3.2.0
|
||||||
version: 3.2.0(eslint@9.22.0)
|
version: 3.2.0(eslint@9.23.0)
|
||||||
eslint-plugin-prettier:
|
eslint-plugin-prettier:
|
||||||
specifier: ^5.2.3
|
specifier: ^5.2.3
|
||||||
version: 5.2.3(eslint-config-prettier@10.1.1(eslint@9.22.0))(eslint@9.22.0)(prettier@3.5.3)
|
version: 5.2.3(eslint-config-prettier@10.1.1(eslint@9.23.0))(eslint@9.23.0)(prettier@3.5.3)
|
||||||
eslint-plugin-react:
|
eslint-plugin-react:
|
||||||
specifier: ^7.37.4
|
specifier: ^7.37.4
|
||||||
version: 7.37.4(eslint@9.22.0)
|
version: 7.37.4(eslint@9.23.0)
|
||||||
eslint-plugin-react-compiler:
|
eslint-plugin-react-compiler:
|
||||||
specifier: 19.0.0-beta-3229e95-20250315
|
specifier: 19.0.0-beta-3229e95-20250315
|
||||||
version: 19.0.0-beta-3229e95-20250315(eslint@9.22.0)
|
version: 19.0.0-beta-3229e95-20250315(eslint@9.23.0)
|
||||||
eslint-plugin-react-hooks:
|
eslint-plugin-react-hooks:
|
||||||
specifier: ^5.2.0
|
specifier: ^5.2.0
|
||||||
version: 5.2.0(eslint@9.22.0)
|
version: 5.2.0(eslint@9.23.0)
|
||||||
lint-staged:
|
lint-staged:
|
||||||
specifier: ^15.5.0
|
specifier: ^15.5.0
|
||||||
version: 15.5.0
|
version: 15.5.0
|
||||||
@ -584,20 +587,20 @@ packages:
|
|||||||
resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==}
|
resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@eslint/config-helpers@0.1.0':
|
'@eslint/config-helpers@0.2.0':
|
||||||
resolution: {integrity: sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==}
|
resolution: {integrity: sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@eslint/core@0.12.0':
|
'@eslint/core@0.12.0':
|
||||||
resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==}
|
resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@eslint/eslintrc@3.3.0':
|
'@eslint/eslintrc@3.3.1':
|
||||||
resolution: {integrity: sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==}
|
resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@eslint/js@9.22.0':
|
'@eslint/js@9.23.0':
|
||||||
resolution: {integrity: sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==}
|
resolution: {integrity: sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@eslint/object-schema@2.1.6':
|
'@eslint/object-schema@2.1.6':
|
||||||
@ -795,17 +798,17 @@ packages:
|
|||||||
'@napi-rs/wasm-runtime@0.2.7':
|
'@napi-rs/wasm-runtime@0.2.7':
|
||||||
resolution: {integrity: sha512-5yximcFK5FNompXfJFoWanu5l8v1hNGqNHh9du1xETp9HWk/B/PzvchX55WYOPaIeNglG8++68AAiauBAtbnzw==}
|
resolution: {integrity: sha512-5yximcFK5FNompXfJFoWanu5l8v1hNGqNHh9du1xETp9HWk/B/PzvchX55WYOPaIeNglG8++68AAiauBAtbnzw==}
|
||||||
|
|
||||||
'@next/bundle-analyzer@15.3.0-canary.17':
|
'@next/bundle-analyzer@15.3.0-canary.19':
|
||||||
resolution: {integrity: sha512-WyOWsIqFVthvkqgxRdli8OqnBz9xTDPhY0YUvBjjtH+52dOPoV6U2B/Cg9tyGe6KM3Nsy3iKZ4KNCCw2G8Bilg==}
|
resolution: {integrity: sha512-iql8r+ch9fIqjmwBrJzw07kCVKIkGwS+UQBKJ53EBsNC8fhuA5QjYhxkR8GDMOyIlOHXVCK11JG6fq3mwUMb3Q==}
|
||||||
|
|
||||||
'@next/env@15.3.0-canary.17':
|
'@next/env@15.3.0-canary.19':
|
||||||
resolution: {integrity: sha512-i6ieFwiZAvPUR0O7ojiUOQzhnxMH1LAjP3bLe8d0DqFKjKLFm3S/WwhVT4bskyFY2oI9FHCp3T1lc+2Ae43j7w==}
|
resolution: {integrity: sha512-sV1GYx3sxpyXRPhkQXdGi/XNFqq/ZlzpI8aYwC95+DQwpDL4r4uR9Hca4dH8v+LsaHQuvqyUaylA1ictJEGc/Q==}
|
||||||
|
|
||||||
'@next/eslint-plugin-next@15.3.0-canary.17':
|
'@next/eslint-plugin-next@15.3.0-canary.19':
|
||||||
resolution: {integrity: sha512-x/1QkV8cYwqVqK715ahnVSkjT6EeBJNc3CSuKiPgG2ucnGfwVbMvSFF3WtqvpgLJW7Kz3xUlgWjakoTLxxUaWA==}
|
resolution: {integrity: sha512-FvCznlWQV+Du2ImiuBX5UPyIJ++9d1/3qp4BwuL2R527Bl7AqEdOUAvpGxz44lEk8qJLEh5B0qkH5xsq0X3WrA==}
|
||||||
|
|
||||||
'@next/mdx@15.3.0-canary.17':
|
'@next/mdx@15.3.0-canary.19':
|
||||||
resolution: {integrity: sha512-5+T4+9GAI3tUVVfpECGfXgCs8u1O29mx4/2px+Xr2m0qlZP3QG+oB9q7qpLAxIPfzSMkxYSIe62vjHjp1M5Feg==}
|
resolution: {integrity: sha512-MKQbKmnTPcA+D6LCpy00GlliqGcXmbNuLMTULDPE6Mhq24+pgcyQKbf6M2UZVNGmu8Qbxrd8ILOcr7RmNFasBg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@mdx-js/loader': '>=0.15.0'
|
'@mdx-js/loader': '>=0.15.0'
|
||||||
'@mdx-js/react': '>=0.15.0'
|
'@mdx-js/react': '>=0.15.0'
|
||||||
@ -815,56 +818,56 @@ packages:
|
|||||||
'@mdx-js/react':
|
'@mdx-js/react':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-darwin-arm64@15.3.0-canary.17':
|
'@next/swc-darwin-arm64@15.3.0-canary.19':
|
||||||
resolution: {integrity: sha512-VcnuH8pzj9vT9w700t+fCA4DkF0mEjQdjRfoWbxz5ZLjry4/CcIBhyrsQ0CIIRJ6KeEyX2SQM3enETknUP1y7w==}
|
resolution: {integrity: sha512-NhO7NswDPM/DxxbjMEdtGD8R8ubrfujabjcs6ztqFZC/O1jVUJ9DjReE3DSxLUID3Q0VrJLtimP3m+Nm0cc53w==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@next/swc-darwin-x64@15.3.0-canary.17':
|
'@next/swc-darwin-x64@15.3.0-canary.19':
|
||||||
resolution: {integrity: sha512-K7J7kQOjki9zxaNAdx+lJlc9Ber5ltJGTD5Uvc8sOcOqT8jein+USyoOyBgy4zPqDjubYsytIDG2pJatijSYSg==}
|
resolution: {integrity: sha512-cANV3R3Rdnif+S7eTMl2a7JtxWdQCGgRF9VmpOuw5lRtNHvzXf+NBB3Qb821JYBgjVD0k+QQoEuHH3gVBccj7Q==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@next/swc-linux-arm64-gnu@15.3.0-canary.17':
|
'@next/swc-linux-arm64-gnu@15.3.0-canary.19':
|
||||||
resolution: {integrity: sha512-Q3Er1XvvsUmPm5VH9W/59Zxg+HZrQuzDAYWyvKK4jgJBRqy2v2ywejvcPZsYUyJnfrls+DcX8oqR7V+L1i9fmg==}
|
resolution: {integrity: sha512-M4LqrhEZ6zbriRvlVg0GqdLRzbLRYnE5y1NfBDpcTSc9M5i/sNgKzrbhW+NmzPbH9awqQJZepjUsJSSO7V9QKw==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@next/swc-linux-arm64-musl@15.3.0-canary.17':
|
'@next/swc-linux-arm64-musl@15.3.0-canary.19':
|
||||||
resolution: {integrity: sha512-ewJuZxqF49l3qSRiDOZUmK3yw0tS3xZ9F4szEAPa5as1/SH+Mfog6Q9+5mjfBXRJEpP//jXmvLlfbJlnK8Sxpg==}
|
resolution: {integrity: sha512-jkIgnfsjicmDIg6lC+PUUJjQhTY/JZm+U8cn0imZF+nupCnh21Sgu3RSFMJEKLzpPx23TYo3UZBsbiU8NOVhmQ==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@next/swc-linux-x64-gnu@15.3.0-canary.17':
|
'@next/swc-linux-x64-gnu@15.3.0-canary.19':
|
||||||
resolution: {integrity: sha512-aGW3iyeaEUyF3oHZsq92QZ49PTmz7LA+HhkjEPjbGhQXyPRKljnMTjt9ORGvRpre1wDvhEBe+9NOdQvqQV6Qhg==}
|
resolution: {integrity: sha512-qepbgJYOmAfhF3Ba1dKsCCc19tBc8vdTicbS88dquSBIhmY29vYKZeG+UeSGmsz4FpR49K6nnxhVvc/Viyr2uQ==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@next/swc-linux-x64-musl@15.3.0-canary.17':
|
'@next/swc-linux-x64-musl@15.3.0-canary.19':
|
||||||
resolution: {integrity: sha512-MEF13N9vDvdZ513Aeecjk/09ewvQN5HaU7bKc4v1CjL+QTJLnr+LkVXWBatMO9hLVvL73VIGJFjXhfwa3YfdBQ==}
|
resolution: {integrity: sha512-fNTuuVeZwtLz8keX95GogGI52/6AbEyxBeZCi3GxqnwPmNXrVDBOBWqGsysoee7JYJoHZhXVOD9YLjXvlr5a1g==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@next/swc-win32-arm64-msvc@15.3.0-canary.17':
|
'@next/swc-win32-arm64-msvc@15.3.0-canary.19':
|
||||||
resolution: {integrity: sha512-QVc6WKSaMO47Vpc7AnYTXGVq4d/OWlAtgzNVNjX0NVlpWKBUUKsQQCGOFJzx2fP4pZwRV9+HC+65FKc3/H+pwA==}
|
resolution: {integrity: sha512-gDDg6bjkPsuCjzGzZ116ryQzS+4CqvyhrhJit0l6U921LZqUNAs7c3QvH4A2yZ54q/Nwg2JFfaVmAJzdRUCA9g==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@next/swc-win32-x64-msvc@15.3.0-canary.17':
|
'@next/swc-win32-x64-msvc@15.3.0-canary.19':
|
||||||
resolution: {integrity: sha512-ctmA1bWo/LuA0zP0luoIA1BUNPZmyWWn14nTgI/2Iv6B3CgFJZSWnU3RN8n9RNalX0Pqcfe7jlhBMCExjAOsFA==}
|
resolution: {integrity: sha512-Ohq6ipeeeYRA5wyIKj/wLJ5vQYjeJReKiJ68BaiCew1bopvi6Yljr5czfGlY44/t3QNnaLDHs6Tz4heoAVY+0g==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@next/third-parties@15.3.0-canary.17':
|
'@next/third-parties@15.3.0-canary.19':
|
||||||
resolution: {integrity: sha512-aZhAZJ/tqVeetFI6B4oGy7BdGUJxLHawdxUnv6xqJaAa/dYHzFXSN/rWPxdxhpHLIVVirOg7Sl618TyUL+sWNg==}
|
resolution: {integrity: sha512-vyu3YdXuNGr8Q4MROFc4UORBAXurYusZLzYQvBT9QKMasP6C+bcyu8uBqdm5AZjZGzhZ5PmRMWILicbhhjtZiA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
next: ^13.0.0 || ^14.0.0 || ^15.0.0
|
next: ^13.0.0 || ^14.0.0 || ^15.0.0
|
||||||
react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
|
react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
|
||||||
@ -941,8 +944,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
|
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
|
||||||
engines: {node: '>=14'}
|
engines: {node: '>=14'}
|
||||||
|
|
||||||
'@pkgr/core@0.1.1':
|
'@pkgr/core@0.1.2':
|
||||||
resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==}
|
resolution: {integrity: sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==}
|
||||||
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
|
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
|
||||||
|
|
||||||
'@polka/url@1.0.0-next.28':
|
'@polka/url@1.0.0-next.28':
|
||||||
@ -1376,8 +1379,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
|
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
caniuse-lite@1.0.30001706:
|
caniuse-lite@1.0.30001707:
|
||||||
resolution: {integrity: sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==}
|
resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==}
|
||||||
|
|
||||||
ccount@2.0.1:
|
ccount@2.0.1:
|
||||||
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
|
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
|
||||||
@ -1619,8 +1622,8 @@ packages:
|
|||||||
engines: {node: '>=14'}
|
engines: {node: '>=14'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
electron-to-chromium@1.5.122:
|
electron-to-chromium@1.5.123:
|
||||||
resolution: {integrity: sha512-EML1wnwkY5MFh/xUnCvY8FrhUuKzdYhowuZExZOfwJo+Zu9OsNCI23Cgl5y7awy7HrUHSwB1Z8pZX5TI34lsUg==}
|
resolution: {integrity: sha512-refir3NlutEZqlKaBLK0tzlVLe5P2wDKS7UQt/3SpibizgsRAPOsqQC3ffw1nlv3ze5gjRQZYHoPymgVZkplFA==}
|
||||||
|
|
||||||
emoji-regex-xs@1.0.0:
|
emoji-regex-xs@1.0.0:
|
||||||
resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==}
|
resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==}
|
||||||
@ -1712,8 +1715,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
|
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
eslint-config-next@15.3.0-canary.17:
|
eslint-config-next@15.3.0-canary.19:
|
||||||
resolution: {integrity: sha512-vA/gCvVCfGUg28MUfsPL3aMJ+wzK3OXW1zmFRHC7bFLkXjyPL3g6mSCLYAFYXRkXkbl13qmoDIknkL4rQsDzNQ==}
|
resolution: {integrity: sha512-slpbC0jkvQNyugmlqXjQmyiaPzIseeZPX3OBuUI4rGN7VsB18NvuJz9keKkq/MtJsMz5V0Pmxc7b1yugLyzxfw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^7.23.0 || ^8.0.0 || ^9.0.0
|
eslint: ^7.23.0 || ^8.0.0 || ^9.0.0
|
||||||
typescript: '>=3.3.1'
|
typescript: '>=3.3.1'
|
||||||
@ -1842,8 +1845,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
|
resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
eslint@9.22.0:
|
eslint@9.23.0:
|
||||||
resolution: {integrity: sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==}
|
resolution: {integrity: sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -2198,8 +2201,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==}
|
resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==}
|
||||||
engines: {node: ^16.14.0 || >=18.0.0}
|
engines: {node: ^16.14.0 || >=18.0.0}
|
||||||
|
|
||||||
html-entities@2.5.2:
|
html-entities@2.5.3:
|
||||||
resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==}
|
resolution: {integrity: sha512-D3AfvN7SjhTgBSA8L1BN4FpPzuEd06uy4lHwSoRWr0lndi9BKaNzPLKGOWZ2ocSGguozr08TTb2jhCLHaemruw==}
|
||||||
|
|
||||||
html-escaper@2.0.2:
|
html-escaper@2.0.2:
|
||||||
resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
|
resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
|
||||||
@ -2820,8 +2823,8 @@ packages:
|
|||||||
natural-compare@1.4.0:
|
natural-compare@1.4.0:
|
||||||
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
|
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
|
||||||
|
|
||||||
next@15.3.0-canary.17:
|
next@15.3.0-canary.19:
|
||||||
resolution: {integrity: sha512-uTQPf+80W7n4ZZIStulH2NtXd7fvoWNNbBIXZrnhNXm0BYe9Vhuc2Ov8GS5NezRGZ7ifJdjND9Da+S1u8qdiAw==}
|
resolution: {integrity: sha512-rqDzGQGdIWaM82gFS+X/DlBppxaRVMG9+eJuPdDjJSX73Y+Mf2RJFke/GkwS0+WxVZ11KxzLGfOjx+0oQEaXVw==}
|
||||||
engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
|
engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -3154,6 +3157,11 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||||
|
|
||||||
|
react-timeago@8.0.0:
|
||||||
|
resolution: {integrity: sha512-I/Lsewkw87xryZVXU8mv8o2lsnxTd7uHBJF9fl76vRx/GkAFNctgSg9q0hOKvgv9V6cTXmDiuXJJYyblD4kGRA==}
|
||||||
|
peerDependencies:
|
||||||
|
react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||||
|
|
||||||
react-turnstile@1.1.4:
|
react-turnstile@1.1.4:
|
||||||
resolution: {integrity: sha512-oluyRWADdsufCt5eMqacW4gfw8/csr6Tk+fmuaMx0PWMKP1SX1iCviLvD2D5w92eAzIYDHi/krUWGHhlfzxTpQ==}
|
resolution: {integrity: sha512-oluyRWADdsufCt5eMqacW4gfw8/csr6Tk+fmuaMx0PWMKP1SX1iCviLvD2D5w92eAzIYDHi/krUWGHhlfzxTpQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -3240,8 +3248,8 @@ packages:
|
|||||||
remark-html@16.0.1:
|
remark-html@16.0.1:
|
||||||
resolution: {integrity: sha512-B9JqA5i0qZe0Nsf49q3OXyGvyXuZFDzAP2iOFLEumymuYJITVpiH1IgsTEwTpdptDmZlMDMWeDmSawdaJIGCXQ==}
|
resolution: {integrity: sha512-B9JqA5i0qZe0Nsf49q3OXyGvyXuZFDzAP2iOFLEumymuYJITVpiH1IgsTEwTpdptDmZlMDMWeDmSawdaJIGCXQ==}
|
||||||
|
|
||||||
remark-mdx-frontmatter@5.0.0:
|
remark-mdx-frontmatter@5.1.0:
|
||||||
resolution: {integrity: sha512-kI75pshe27TM71R+0iX7C3p4MbGMdygkvSbrk1WYSar88WAwR2JfQilofcDGgDNFAWUo5IwTPyq9XvGpifTwqQ==}
|
resolution: {integrity: sha512-F2l+FydK/QVwYMC4niMYl4Kh83TIfoR4qV9ekh/riWRakTTyjcLLyKTBo9fVgEtOmTEfIrqWwiYIm42+I5PMfQ==}
|
||||||
|
|
||||||
remark-mdx@3.1.0:
|
remark-mdx@3.1.0:
|
||||||
resolution: {integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==}
|
resolution: {integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==}
|
||||||
@ -3702,6 +3710,9 @@ packages:
|
|||||||
unist-util-is@6.0.0:
|
unist-util-is@6.0.0:
|
||||||
resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
|
resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
|
||||||
|
|
||||||
|
unist-util-mdx-define@1.1.1:
|
||||||
|
resolution: {integrity: sha512-wW3Uq+92zHTCoJRVWBWr4KHMpkOIHMVZ5kyU/HVV4l1UMl6j2Vs6P+uj8tFMUk9QoA3wR/7wOVD23Cx77dXXoA==}
|
||||||
|
|
||||||
unist-util-modify-children@4.0.0:
|
unist-util-modify-children@4.0.0:
|
||||||
resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==}
|
resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==}
|
||||||
|
|
||||||
@ -4180,9 +4191,9 @@ snapshots:
|
|||||||
'@esbuild/win32-x64@0.25.1':
|
'@esbuild/win32-x64@0.25.1':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@eslint-community/eslint-utils@4.5.1(eslint@9.22.0)':
|
'@eslint-community/eslint-utils@4.5.1(eslint@9.23.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint: 9.22.0
|
eslint: 9.23.0
|
||||||
eslint-visitor-keys: 3.4.3
|
eslint-visitor-keys: 3.4.3
|
||||||
|
|
||||||
'@eslint-community/regexpp@4.12.1': {}
|
'@eslint-community/regexpp@4.12.1': {}
|
||||||
@ -4195,13 +4206,13 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@eslint/config-helpers@0.1.0': {}
|
'@eslint/config-helpers@0.2.0': {}
|
||||||
|
|
||||||
'@eslint/core@0.12.0':
|
'@eslint/core@0.12.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/json-schema': 7.0.15
|
'@types/json-schema': 7.0.15
|
||||||
|
|
||||||
'@eslint/eslintrc@3.3.0':
|
'@eslint/eslintrc@3.3.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
ajv: 6.12.6
|
ajv: 6.12.6
|
||||||
debug: 4.4.0
|
debug: 4.4.0
|
||||||
@ -4215,7 +4226,7 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@eslint/js@9.22.0': {}
|
'@eslint/js@9.23.0': {}
|
||||||
|
|
||||||
'@eslint/object-schema@2.1.6': {}
|
'@eslint/object-schema@2.1.6': {}
|
||||||
|
|
||||||
@ -4327,9 +4338,9 @@ snapshots:
|
|||||||
wrap-ansi: 8.1.0
|
wrap-ansi: 8.1.0
|
||||||
wrap-ansi-cjs: wrap-ansi@7.0.0
|
wrap-ansi-cjs: wrap-ansi@7.0.0
|
||||||
|
|
||||||
'@jakejarvis/eslint-config@4.0.7(eslint@9.22.0)':
|
'@jakejarvis/eslint-config@4.0.7(eslint@9.23.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint: 9.22.0
|
eslint: 9.23.0
|
||||||
|
|
||||||
'@jridgewell/gen-mapping@0.3.8':
|
'@jridgewell/gen-mapping@0.3.8':
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -4409,53 +4420,53 @@ snapshots:
|
|||||||
'@tybys/wasm-util': 0.9.0
|
'@tybys/wasm-util': 0.9.0
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/bundle-analyzer@15.3.0-canary.17':
|
'@next/bundle-analyzer@15.3.0-canary.19':
|
||||||
dependencies:
|
dependencies:
|
||||||
webpack-bundle-analyzer: 4.10.1
|
webpack-bundle-analyzer: 4.10.1
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- bufferutil
|
- bufferutil
|
||||||
- utf-8-validate
|
- utf-8-validate
|
||||||
|
|
||||||
'@next/env@15.3.0-canary.17': {}
|
'@next/env@15.3.0-canary.19': {}
|
||||||
|
|
||||||
'@next/eslint-plugin-next@15.3.0-canary.17':
|
'@next/eslint-plugin-next@15.3.0-canary.19':
|
||||||
dependencies:
|
dependencies:
|
||||||
fast-glob: 3.3.1
|
fast-glob: 3.3.1
|
||||||
|
|
||||||
'@next/mdx@15.3.0-canary.17(@mdx-js/loader@3.1.0(acorn@8.14.1))(@mdx-js/react@3.1.0(@types/react@19.0.12)(react@19.0.0))':
|
'@next/mdx@15.3.0-canary.19(@mdx-js/loader@3.1.0(acorn@8.14.1))(@mdx-js/react@3.1.0(@types/react@19.0.12)(react@19.0.0))':
|
||||||
dependencies:
|
dependencies:
|
||||||
source-map: 0.7.4
|
source-map: 0.7.4
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@mdx-js/loader': 3.1.0(acorn@8.14.1)
|
'@mdx-js/loader': 3.1.0(acorn@8.14.1)
|
||||||
'@mdx-js/react': 3.1.0(@types/react@19.0.12)(react@19.0.0)
|
'@mdx-js/react': 3.1.0(@types/react@19.0.12)(react@19.0.0)
|
||||||
|
|
||||||
'@next/swc-darwin-arm64@15.3.0-canary.17':
|
'@next/swc-darwin-arm64@15.3.0-canary.19':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-darwin-x64@15.3.0-canary.17':
|
'@next/swc-darwin-x64@15.3.0-canary.19':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-linux-arm64-gnu@15.3.0-canary.17':
|
'@next/swc-linux-arm64-gnu@15.3.0-canary.19':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-linux-arm64-musl@15.3.0-canary.17':
|
'@next/swc-linux-arm64-musl@15.3.0-canary.19':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-linux-x64-gnu@15.3.0-canary.17':
|
'@next/swc-linux-x64-gnu@15.3.0-canary.19':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-linux-x64-musl@15.3.0-canary.17':
|
'@next/swc-linux-x64-musl@15.3.0-canary.19':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-win32-arm64-msvc@15.3.0-canary.17':
|
'@next/swc-win32-arm64-msvc@15.3.0-canary.19':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-win32-x64-msvc@15.3.0-canary.17':
|
'@next/swc-win32-x64-msvc@15.3.0-canary.19':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/third-parties@15.3.0-canary.17(next@15.3.0-canary.17(@babel/core@7.26.10)(babel-plugin-react-compiler@19.0.0-beta-3229e95-20250315)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)':
|
'@next/third-parties@15.3.0-canary.19(next@15.3.0-canary.19(@babel/core@7.26.10)(babel-plugin-react-compiler@19.0.0-beta-3229e95-20250315)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
next: 15.3.0-canary.17(@babel/core@7.26.10)(babel-plugin-react-compiler@19.0.0-beta-3229e95-20250315)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
|
next: 15.3.0-canary.19(@babel/core@7.26.10)(babel-plugin-react-compiler@19.0.0-beta-3229e95-20250315)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
|
||||||
react: 19.0.0
|
react: 19.0.0
|
||||||
third-party-capital: 1.0.20
|
third-party-capital: 1.0.20
|
||||||
|
|
||||||
@ -4564,7 +4575,7 @@ snapshots:
|
|||||||
'@pkgjs/parseargs@0.11.0':
|
'@pkgjs/parseargs@0.11.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@pkgr/core@0.1.1': {}
|
'@pkgr/core@0.1.2': {}
|
||||||
|
|
||||||
'@polka/url@1.0.0-next.28': {}
|
'@polka/url@1.0.0-next.28': {}
|
||||||
|
|
||||||
@ -4730,15 +4741,15 @@ snapshots:
|
|||||||
|
|
||||||
'@types/unist@3.0.3': {}
|
'@types/unist@3.0.3': {}
|
||||||
|
|
||||||
'@typescript-eslint/eslint-plugin@8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0)(typescript@5.8.2)':
|
'@typescript-eslint/eslint-plugin@8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0)(typescript@5.8.2))(eslint@9.23.0)(typescript@5.8.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/regexpp': 4.12.1
|
'@eslint-community/regexpp': 4.12.1
|
||||||
'@typescript-eslint/parser': 8.27.0(eslint@9.22.0)(typescript@5.8.2)
|
'@typescript-eslint/parser': 8.27.0(eslint@9.23.0)(typescript@5.8.2)
|
||||||
'@typescript-eslint/scope-manager': 8.27.0
|
'@typescript-eslint/scope-manager': 8.27.0
|
||||||
'@typescript-eslint/type-utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2)
|
'@typescript-eslint/type-utils': 8.27.0(eslint@9.23.0)(typescript@5.8.2)
|
||||||
'@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2)
|
'@typescript-eslint/utils': 8.27.0(eslint@9.23.0)(typescript@5.8.2)
|
||||||
'@typescript-eslint/visitor-keys': 8.27.0
|
'@typescript-eslint/visitor-keys': 8.27.0
|
||||||
eslint: 9.22.0
|
eslint: 9.23.0
|
||||||
graphemer: 1.4.0
|
graphemer: 1.4.0
|
||||||
ignore: 5.3.2
|
ignore: 5.3.2
|
||||||
natural-compare: 1.4.0
|
natural-compare: 1.4.0
|
||||||
@ -4747,14 +4758,14 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2)':
|
'@typescript-eslint/parser@8.27.0(eslint@9.23.0)(typescript@5.8.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/scope-manager': 8.27.0
|
'@typescript-eslint/scope-manager': 8.27.0
|
||||||
'@typescript-eslint/types': 8.27.0
|
'@typescript-eslint/types': 8.27.0
|
||||||
'@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2)
|
'@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2)
|
||||||
'@typescript-eslint/visitor-keys': 8.27.0
|
'@typescript-eslint/visitor-keys': 8.27.0
|
||||||
debug: 4.4.0
|
debug: 4.4.0
|
||||||
eslint: 9.22.0
|
eslint: 9.23.0
|
||||||
typescript: 5.8.2
|
typescript: 5.8.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
@ -4764,12 +4775,12 @@ snapshots:
|
|||||||
'@typescript-eslint/types': 8.27.0
|
'@typescript-eslint/types': 8.27.0
|
||||||
'@typescript-eslint/visitor-keys': 8.27.0
|
'@typescript-eslint/visitor-keys': 8.27.0
|
||||||
|
|
||||||
'@typescript-eslint/type-utils@8.27.0(eslint@9.22.0)(typescript@5.8.2)':
|
'@typescript-eslint/type-utils@8.27.0(eslint@9.23.0)(typescript@5.8.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2)
|
'@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2)
|
||||||
'@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2)
|
'@typescript-eslint/utils': 8.27.0(eslint@9.23.0)(typescript@5.8.2)
|
||||||
debug: 4.4.0
|
debug: 4.4.0
|
||||||
eslint: 9.22.0
|
eslint: 9.23.0
|
||||||
ts-api-utils: 2.1.0(typescript@5.8.2)
|
ts-api-utils: 2.1.0(typescript@5.8.2)
|
||||||
typescript: 5.8.2
|
typescript: 5.8.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@ -4791,13 +4802,13 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/utils@8.27.0(eslint@9.22.0)(typescript@5.8.2)':
|
'@typescript-eslint/utils@8.27.0(eslint@9.23.0)(typescript@5.8.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0)
|
'@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0)
|
||||||
'@typescript-eslint/scope-manager': 8.27.0
|
'@typescript-eslint/scope-manager': 8.27.0
|
||||||
'@typescript-eslint/types': 8.27.0
|
'@typescript-eslint/types': 8.27.0
|
||||||
'@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2)
|
'@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2)
|
||||||
eslint: 9.22.0
|
eslint: 9.23.0
|
||||||
typescript: 5.8.2
|
typescript: 5.8.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
@ -5000,8 +5011,8 @@ snapshots:
|
|||||||
|
|
||||||
browserslist@4.24.4:
|
browserslist@4.24.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
caniuse-lite: 1.0.30001706
|
caniuse-lite: 1.0.30001707
|
||||||
electron-to-chromium: 1.5.122
|
electron-to-chromium: 1.5.123
|
||||||
node-releases: 2.0.19
|
node-releases: 2.0.19
|
||||||
update-browserslist-db: 1.1.3(browserslist@4.24.4)
|
update-browserslist-db: 1.1.3(browserslist@4.24.4)
|
||||||
|
|
||||||
@ -5040,7 +5051,7 @@ snapshots:
|
|||||||
|
|
||||||
callsites@3.1.0: {}
|
callsites@3.1.0: {}
|
||||||
|
|
||||||
caniuse-lite@1.0.30001706: {}
|
caniuse-lite@1.0.30001707: {}
|
||||||
|
|
||||||
ccount@2.0.1: {}
|
ccount@2.0.1: {}
|
||||||
|
|
||||||
@ -5264,7 +5275,7 @@ snapshots:
|
|||||||
minimatch: 9.0.1
|
minimatch: 9.0.1
|
||||||
semver: 7.7.1
|
semver: 7.7.1
|
||||||
|
|
||||||
electron-to-chromium@1.5.122: {}
|
electron-to-chromium@1.5.123: {}
|
||||||
|
|
||||||
emoji-regex-xs@1.0.0: {}
|
emoji-regex-xs@1.0.0: {}
|
||||||
|
|
||||||
@ -5439,19 +5450,19 @@ snapshots:
|
|||||||
|
|
||||||
escape-string-regexp@5.0.0: {}
|
escape-string-regexp@5.0.0: {}
|
||||||
|
|
||||||
eslint-config-next@15.3.0-canary.17(eslint@9.22.0)(typescript@5.8.2):
|
eslint-config-next@15.3.0-canary.19(eslint@9.23.0)(typescript@5.8.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@next/eslint-plugin-next': 15.3.0-canary.17
|
'@next/eslint-plugin-next': 15.3.0-canary.19
|
||||||
'@rushstack/eslint-patch': 1.11.0
|
'@rushstack/eslint-patch': 1.11.0
|
||||||
'@typescript-eslint/eslint-plugin': 8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0)(typescript@5.8.2)
|
'@typescript-eslint/eslint-plugin': 8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0)(typescript@5.8.2))(eslint@9.23.0)(typescript@5.8.2)
|
||||||
'@typescript-eslint/parser': 8.27.0(eslint@9.22.0)(typescript@5.8.2)
|
'@typescript-eslint/parser': 8.27.0(eslint@9.23.0)(typescript@5.8.2)
|
||||||
eslint: 9.22.0
|
eslint: 9.23.0
|
||||||
eslint-import-resolver-node: 0.3.9
|
eslint-import-resolver-node: 0.3.9
|
||||||
eslint-import-resolver-typescript: 3.9.1(eslint-plugin-import@2.31.0)(eslint@9.22.0)
|
eslint-import-resolver-typescript: 3.9.1(eslint-plugin-import@2.31.0)(eslint@9.23.0)
|
||||||
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint-import-resolver-typescript@3.9.1)(eslint@9.22.0)
|
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0)(typescript@5.8.2))(eslint-import-resolver-typescript@3.9.1)(eslint@9.23.0)
|
||||||
eslint-plugin-jsx-a11y: 6.10.2(eslint@9.22.0)
|
eslint-plugin-jsx-a11y: 6.10.2(eslint@9.23.0)
|
||||||
eslint-plugin-react: 7.37.4(eslint@9.22.0)
|
eslint-plugin-react: 7.37.4(eslint@9.23.0)
|
||||||
eslint-plugin-react-hooks: 5.2.0(eslint@9.22.0)
|
eslint-plugin-react-hooks: 5.2.0(eslint@9.23.0)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
typescript: 5.8.2
|
typescript: 5.8.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@ -5459,9 +5470,9 @@ snapshots:
|
|||||||
- eslint-plugin-import-x
|
- eslint-plugin-import-x
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-config-prettier@10.1.1(eslint@9.22.0):
|
eslint-config-prettier@10.1.1(eslint@9.23.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint: 9.22.0
|
eslint: 9.23.0
|
||||||
|
|
||||||
eslint-import-resolver-node@0.3.9:
|
eslint-import-resolver-node@0.3.9:
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -5471,26 +5482,26 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-import-resolver-typescript@3.9.1(eslint-plugin-import@2.31.0)(eslint@9.22.0):
|
eslint-import-resolver-typescript@3.9.1(eslint-plugin-import@2.31.0)(eslint@9.23.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nolyfill/is-core-module': 1.0.39
|
'@nolyfill/is-core-module': 1.0.39
|
||||||
debug: 4.4.0
|
debug: 4.4.0
|
||||||
eslint: 9.22.0
|
eslint: 9.23.0
|
||||||
get-tsconfig: 4.10.0
|
get-tsconfig: 4.10.0
|
||||||
is-bun-module: 1.3.0
|
is-bun-module: 1.3.0
|
||||||
rspack-resolver: 1.2.2
|
rspack-resolver: 1.2.2
|
||||||
stable-hash: 0.0.5
|
stable-hash: 0.0.5
|
||||||
tinyglobby: 0.2.12
|
tinyglobby: 0.2.12
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint-import-resolver-typescript@3.9.1)(eslint@9.22.0)
|
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0)(typescript@5.8.2))(eslint-import-resolver-typescript@3.9.1)(eslint@9.23.0)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-mdx@3.2.0(eslint@9.22.0):
|
eslint-mdx@3.2.0(eslint@9.23.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
acorn: 8.14.1
|
acorn: 8.14.1
|
||||||
acorn-jsx: 5.3.2(acorn@8.14.1)
|
acorn-jsx: 5.3.2(acorn@8.14.1)
|
||||||
eslint: 9.22.0
|
eslint: 9.23.0
|
||||||
espree: 9.6.1
|
espree: 9.6.1
|
||||||
estree-util-visit: 2.0.0
|
estree-util-visit: 2.0.0
|
||||||
remark-mdx: 3.1.0
|
remark-mdx: 3.1.0
|
||||||
@ -5507,24 +5518,24 @@ snapshots:
|
|||||||
- bluebird
|
- bluebird
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-module-utils@2.12.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.9.1)(eslint@9.22.0):
|
eslint-module-utils@2.12.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.9.1)(eslint@9.23.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 3.2.7
|
debug: 3.2.7
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@typescript-eslint/parser': 8.27.0(eslint@9.22.0)(typescript@5.8.2)
|
'@typescript-eslint/parser': 8.27.0(eslint@9.23.0)(typescript@5.8.2)
|
||||||
eslint: 9.22.0
|
eslint: 9.23.0
|
||||||
eslint-import-resolver-node: 0.3.9
|
eslint-import-resolver-node: 0.3.9
|
||||||
eslint-import-resolver-typescript: 3.9.1(eslint-plugin-import@2.31.0)(eslint@9.22.0)
|
eslint-import-resolver-typescript: 3.9.1(eslint-plugin-import@2.31.0)(eslint@9.23.0)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-plugin-css-modules@2.12.0(eslint@9.22.0):
|
eslint-plugin-css-modules@2.12.0(eslint@9.23.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint: 9.22.0
|
eslint: 9.23.0
|
||||||
gonzales-pe: 4.3.0
|
gonzales-pe: 4.3.0
|
||||||
lodash: 4.17.21
|
lodash: 4.17.21
|
||||||
|
|
||||||
eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint-import-resolver-typescript@3.9.1)(eslint@9.22.0):
|
eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0)(typescript@5.8.2))(eslint-import-resolver-typescript@3.9.1)(eslint@9.23.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@rtsao/scc': 1.1.0
|
'@rtsao/scc': 1.1.0
|
||||||
array-includes: 3.1.8
|
array-includes: 3.1.8
|
||||||
@ -5533,9 +5544,9 @@ snapshots:
|
|||||||
array.prototype.flatmap: 1.3.3
|
array.prototype.flatmap: 1.3.3
|
||||||
debug: 3.2.7
|
debug: 3.2.7
|
||||||
doctrine: 2.1.0
|
doctrine: 2.1.0
|
||||||
eslint: 9.22.0
|
eslint: 9.23.0
|
||||||
eslint-import-resolver-node: 0.3.9
|
eslint-import-resolver-node: 0.3.9
|
||||||
eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.9.1)(eslint@9.22.0)
|
eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.9.1)(eslint@9.23.0)
|
||||||
hasown: 2.0.2
|
hasown: 2.0.2
|
||||||
is-core-module: 2.16.1
|
is-core-module: 2.16.1
|
||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
@ -5547,13 +5558,13 @@ snapshots:
|
|||||||
string.prototype.trimend: 1.0.9
|
string.prototype.trimend: 1.0.9
|
||||||
tsconfig-paths: 3.15.0
|
tsconfig-paths: 3.15.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@typescript-eslint/parser': 8.27.0(eslint@9.22.0)(typescript@5.8.2)
|
'@typescript-eslint/parser': 8.27.0(eslint@9.23.0)(typescript@5.8.2)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- eslint-import-resolver-typescript
|
- eslint-import-resolver-typescript
|
||||||
- eslint-import-resolver-webpack
|
- eslint-import-resolver-webpack
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-plugin-jsx-a11y@6.10.2(eslint@9.22.0):
|
eslint-plugin-jsx-a11y@6.10.2(eslint@9.23.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
aria-query: 5.3.2
|
aria-query: 5.3.2
|
||||||
array-includes: 3.1.8
|
array-includes: 3.1.8
|
||||||
@ -5563,7 +5574,7 @@ snapshots:
|
|||||||
axobject-query: 4.1.0
|
axobject-query: 4.1.0
|
||||||
damerau-levenshtein: 1.0.8
|
damerau-levenshtein: 1.0.8
|
||||||
emoji-regex: 9.2.2
|
emoji-regex: 9.2.2
|
||||||
eslint: 9.22.0
|
eslint: 9.23.0
|
||||||
hasown: 2.0.2
|
hasown: 2.0.2
|
||||||
jsx-ast-utils: 3.3.5
|
jsx-ast-utils: 3.3.5
|
||||||
language-tags: 1.0.9
|
language-tags: 1.0.9
|
||||||
@ -5572,10 +5583,10 @@ snapshots:
|
|||||||
safe-regex-test: 1.1.0
|
safe-regex-test: 1.1.0
|
||||||
string.prototype.includes: 2.0.1
|
string.prototype.includes: 2.0.1
|
||||||
|
|
||||||
eslint-plugin-mdx@3.2.0(eslint@9.22.0):
|
eslint-plugin-mdx@3.2.0(eslint@9.23.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint: 9.22.0
|
eslint: 9.23.0
|
||||||
eslint-mdx: 3.2.0(eslint@9.22.0)
|
eslint-mdx: 3.2.0(eslint@9.23.0)
|
||||||
mdast-util-from-markdown: 2.0.2
|
mdast-util-from-markdown: 2.0.2
|
||||||
remark-mdx: 3.1.0
|
remark-mdx: 3.1.0
|
||||||
remark-parse: 11.0.0
|
remark-parse: 11.0.0
|
||||||
@ -5588,32 +5599,32 @@ snapshots:
|
|||||||
- bluebird
|
- bluebird
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-plugin-prettier@5.2.3(eslint-config-prettier@10.1.1(eslint@9.22.0))(eslint@9.22.0)(prettier@3.5.3):
|
eslint-plugin-prettier@5.2.3(eslint-config-prettier@10.1.1(eslint@9.23.0))(eslint@9.23.0)(prettier@3.5.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint: 9.22.0
|
eslint: 9.23.0
|
||||||
prettier: 3.5.3
|
prettier: 3.5.3
|
||||||
prettier-linter-helpers: 1.0.0
|
prettier-linter-helpers: 1.0.0
|
||||||
synckit: 0.9.2
|
synckit: 0.9.2
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
eslint-config-prettier: 10.1.1(eslint@9.22.0)
|
eslint-config-prettier: 10.1.1(eslint@9.23.0)
|
||||||
|
|
||||||
eslint-plugin-react-compiler@19.0.0-beta-3229e95-20250315(eslint@9.22.0):
|
eslint-plugin-react-compiler@19.0.0-beta-3229e95-20250315(eslint@9.23.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/core': 7.26.10
|
'@babel/core': 7.26.10
|
||||||
'@babel/parser': 7.26.10
|
'@babel/parser': 7.26.10
|
||||||
'@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.26.10)
|
'@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.26.10)
|
||||||
eslint: 9.22.0
|
eslint: 9.23.0
|
||||||
hermes-parser: 0.25.1
|
hermes-parser: 0.25.1
|
||||||
zod: 3.24.2
|
zod: 3.24.2
|
||||||
zod-validation-error: 3.4.0(zod@3.24.2)
|
zod-validation-error: 3.4.0(zod@3.24.2)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-plugin-react-hooks@5.2.0(eslint@9.22.0):
|
eslint-plugin-react-hooks@5.2.0(eslint@9.23.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint: 9.22.0
|
eslint: 9.23.0
|
||||||
|
|
||||||
eslint-plugin-react@7.37.4(eslint@9.22.0):
|
eslint-plugin-react@7.37.4(eslint@9.23.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
array-includes: 3.1.8
|
array-includes: 3.1.8
|
||||||
array.prototype.findlast: 1.2.5
|
array.prototype.findlast: 1.2.5
|
||||||
@ -5621,7 +5632,7 @@ snapshots:
|
|||||||
array.prototype.tosorted: 1.1.4
|
array.prototype.tosorted: 1.1.4
|
||||||
doctrine: 2.1.0
|
doctrine: 2.1.0
|
||||||
es-iterator-helpers: 1.2.1
|
es-iterator-helpers: 1.2.1
|
||||||
eslint: 9.22.0
|
eslint: 9.23.0
|
||||||
estraverse: 5.3.0
|
estraverse: 5.3.0
|
||||||
hasown: 2.0.2
|
hasown: 2.0.2
|
||||||
jsx-ast-utils: 3.3.5
|
jsx-ast-utils: 3.3.5
|
||||||
@ -5644,15 +5655,15 @@ snapshots:
|
|||||||
|
|
||||||
eslint-visitor-keys@4.2.0: {}
|
eslint-visitor-keys@4.2.0: {}
|
||||||
|
|
||||||
eslint@9.22.0:
|
eslint@9.23.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0)
|
'@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0)
|
||||||
'@eslint-community/regexpp': 4.12.1
|
'@eslint-community/regexpp': 4.12.1
|
||||||
'@eslint/config-array': 0.19.2
|
'@eslint/config-array': 0.19.2
|
||||||
'@eslint/config-helpers': 0.1.0
|
'@eslint/config-helpers': 0.2.0
|
||||||
'@eslint/core': 0.12.0
|
'@eslint/core': 0.12.0
|
||||||
'@eslint/eslintrc': 3.3.0
|
'@eslint/eslintrc': 3.3.1
|
||||||
'@eslint/js': 9.22.0
|
'@eslint/js': 9.23.0
|
||||||
'@eslint/plugin-kit': 0.2.7
|
'@eslint/plugin-kit': 0.2.7
|
||||||
'@humanfs/node': 0.16.6
|
'@humanfs/node': 0.16.6
|
||||||
'@humanwhocodes/module-importer': 1.0.1
|
'@humanwhocodes/module-importer': 1.0.1
|
||||||
@ -5866,9 +5877,9 @@ snapshots:
|
|||||||
|
|
||||||
functions-have-names@1.2.3: {}
|
functions-have-names@1.2.3: {}
|
||||||
|
|
||||||
geist@1.3.1(next@15.3.0-canary.17(@babel/core@7.26.10)(babel-plugin-react-compiler@19.0.0-beta-3229e95-20250315)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)):
|
geist@1.3.1(next@15.3.0-canary.19(@babel/core@7.26.10)(babel-plugin-react-compiler@19.0.0-beta-3229e95-20250315)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)):
|
||||||
dependencies:
|
dependencies:
|
||||||
next: 15.3.0-canary.17(@babel/core@7.26.10)(babel-plugin-react-compiler@19.0.0-beta-3229e95-20250315)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
|
next: 15.3.0-canary.19(@babel/core@7.26.10)(babel-plugin-react-compiler@19.0.0-beta-3229e95-20250315)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
|
||||||
|
|
||||||
gensync@1.0.0-beta.2: {}
|
gensync@1.0.0-beta.2: {}
|
||||||
|
|
||||||
@ -6137,7 +6148,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
lru-cache: 10.4.3
|
lru-cache: 10.4.3
|
||||||
|
|
||||||
html-entities@2.5.2: {}
|
html-entities@2.5.3: {}
|
||||||
|
|
||||||
html-escaper@2.0.2: {}
|
html-escaper@2.0.2: {}
|
||||||
|
|
||||||
@ -7015,26 +7026,26 @@ snapshots:
|
|||||||
|
|
||||||
natural-compare@1.4.0: {}
|
natural-compare@1.4.0: {}
|
||||||
|
|
||||||
next@15.3.0-canary.17(@babel/core@7.26.10)(babel-plugin-react-compiler@19.0.0-beta-3229e95-20250315)(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
|
next@15.3.0-canary.19(@babel/core@7.26.10)(babel-plugin-react-compiler@19.0.0-beta-3229e95-20250315)(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@next/env': 15.3.0-canary.17
|
'@next/env': 15.3.0-canary.19
|
||||||
'@swc/counter': 0.1.3
|
'@swc/counter': 0.1.3
|
||||||
'@swc/helpers': 0.5.15
|
'@swc/helpers': 0.5.15
|
||||||
busboy: 1.6.0
|
busboy: 1.6.0
|
||||||
caniuse-lite: 1.0.30001706
|
caniuse-lite: 1.0.30001707
|
||||||
postcss: 8.4.31
|
postcss: 8.4.31
|
||||||
react: 19.0.0
|
react: 19.0.0
|
||||||
react-dom: 19.0.0(react@19.0.0)
|
react-dom: 19.0.0(react@19.0.0)
|
||||||
styled-jsx: 5.1.6(@babel/core@7.26.10)(react@19.0.0)
|
styled-jsx: 5.1.6(@babel/core@7.26.10)(react@19.0.0)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@next/swc-darwin-arm64': 15.3.0-canary.17
|
'@next/swc-darwin-arm64': 15.3.0-canary.19
|
||||||
'@next/swc-darwin-x64': 15.3.0-canary.17
|
'@next/swc-darwin-x64': 15.3.0-canary.19
|
||||||
'@next/swc-linux-arm64-gnu': 15.3.0-canary.17
|
'@next/swc-linux-arm64-gnu': 15.3.0-canary.19
|
||||||
'@next/swc-linux-arm64-musl': 15.3.0-canary.17
|
'@next/swc-linux-arm64-musl': 15.3.0-canary.19
|
||||||
'@next/swc-linux-x64-gnu': 15.3.0-canary.17
|
'@next/swc-linux-x64-gnu': 15.3.0-canary.19
|
||||||
'@next/swc-linux-x64-musl': 15.3.0-canary.17
|
'@next/swc-linux-x64-musl': 15.3.0-canary.19
|
||||||
'@next/swc-win32-arm64-msvc': 15.3.0-canary.17
|
'@next/swc-win32-arm64-msvc': 15.3.0-canary.19
|
||||||
'@next/swc-win32-x64-msvc': 15.3.0-canary.17
|
'@next/swc-win32-x64-msvc': 15.3.0-canary.19
|
||||||
babel-plugin-react-compiler: 19.0.0-beta-3229e95-20250315
|
babel-plugin-react-compiler: 19.0.0-beta-3229e95-20250315
|
||||||
sharp: 0.33.5
|
sharp: 0.33.5
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@ -7360,6 +7371,10 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@types/react'
|
- '@types/react'
|
||||||
|
|
||||||
|
react-timeago@8.0.0(react@19.0.0):
|
||||||
|
dependencies:
|
||||||
|
react: 19.0.0
|
||||||
|
|
||||||
react-turnstile@1.1.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
|
react-turnstile@1.1.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
react: 19.0.0
|
react: 19.0.0
|
||||||
@ -7525,13 +7540,13 @@ snapshots:
|
|||||||
mdast-util-to-hast: 13.2.0
|
mdast-util-to-hast: 13.2.0
|
||||||
unified: 11.0.5
|
unified: 11.0.5
|
||||||
|
|
||||||
remark-mdx-frontmatter@5.0.0:
|
remark-mdx-frontmatter@5.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/mdast': 4.0.4
|
'@types/mdast': 4.0.4
|
||||||
estree-util-is-identifier-name: 3.0.0
|
|
||||||
estree-util-value-to-estree: 3.3.2
|
estree-util-value-to-estree: 3.3.2
|
||||||
toml: 3.0.0
|
toml: 3.0.0
|
||||||
unified: 11.0.5
|
unified: 11.0.5
|
||||||
|
unist-util-mdx-define: 1.1.1
|
||||||
yaml: 2.7.0
|
yaml: 2.7.0
|
||||||
|
|
||||||
remark-mdx@3.1.0:
|
remark-mdx@3.1.0:
|
||||||
@ -8051,7 +8066,7 @@ snapshots:
|
|||||||
|
|
||||||
synckit@0.9.2:
|
synckit@0.9.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@pkgr/core': 0.1.1
|
'@pkgr/core': 0.1.2
|
||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
|
|
||||||
table@6.9.0:
|
table@6.9.0:
|
||||||
@ -8193,6 +8208,16 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
|
|
||||||
|
unist-util-mdx-define@1.1.1:
|
||||||
|
dependencies:
|
||||||
|
'@types/estree': 1.0.6
|
||||||
|
'@types/hast': 3.0.4
|
||||||
|
'@types/mdast': 4.0.4
|
||||||
|
estree-util-is-identifier-name: 3.0.0
|
||||||
|
estree-util-scope: 1.0.0
|
||||||
|
estree-walker: 3.0.3
|
||||||
|
vfile: 6.0.3
|
||||||
|
|
||||||
unist-util-modify-children@4.0.0:
|
unist-util-modify-children@4.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
|
Loading…
x
Reference in New Issue
Block a user