Standard.site landing page built in Next.js
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'refs/heads/feature/documentation-pages' into dev

# Conflicts:
# package.json

+4379 -35
+2 -1
.gitignore
··· 41 41 next-env.d.ts 42 42 43 43 # jetbrains 44 - /.idea 44 + /.idea 45 + .sequoia-state.json
+47
app/api/docs/markdown/[...slug]/route.ts
··· 1 + import { NextResponse } from 'next/server' 2 + import { getDocMarkdown } from '@/app/lib/mdx-to-markdown' 3 + 4 + // Map of valid slugs 5 + const validSlugs = new Set([ 6 + 'introduction', 7 + 'quick-start', 8 + 'permissions', 9 + 'verification', 10 + 'lexicons/publication', 11 + 'lexicons/document', 12 + 'lexicons/subscription', 13 + 'lexicons/theme', 14 + 'implementations', 15 + 'faq', 16 + ]) 17 + 18 + export async function generateStaticParams() { 19 + return Array.from(validSlugs).map((slug) => ({ 20 + slug: slug.split('/'), 21 + })) 22 + } 23 + 24 + export async function GET( 25 + request: Request, 26 + { params }: { params: Promise<{ slug: string[] }> } 27 + ) { 28 + try { 29 + const { slug } = await params 30 + const slugPath = slug.join('/') 31 + 32 + if (!validSlugs.has(slugPath)) { 33 + return new NextResponse('Not found', { status: 404 }) 34 + } 35 + 36 + const markdown = await getDocMarkdown(slugPath) 37 + 38 + return new NextResponse(markdown, { 39 + headers: { 40 + 'Content-Type': 'text/plain; charset=utf-8', 41 + }, 42 + }) 43 + } catch (error) { 44 + console.error('API Markdown Error:', error) 45 + return new NextResponse('Internal server error', { status: 500 }) 46 + } 47 + }
+5 -5
app/components/Footer.tsx
··· 2 2 3 3 export function Footer() { 4 4 return ( 5 - <div className="flex gap-x-8 lg:gap-x-16 xl:gap-x-24 justify-center border-t border-border bg-base-200 px-8 pt-12 pb-24 sm:py-32"> 5 + <div className="relative flex gap-x-8 lg:gap-x-16 xl:gap-x-24 justify-center border-t border-border bg-base-200 px-8 pt-12 pb-24 sm:py-32"> 6 6 <section className="hidden md:flex shrink-0 w-32"></section> 7 7 8 8 <footer className="flex gap-4 flex-col items-center text-center sm:text-left sm:flex-row sm:items-end sm:justify-between w-xl min-w-0"> ··· 13 13 Standard.site 14 14 </span> 15 15 <span className="font-medium sm:text-sm tracking-tight text-muted-content"> 16 - &copy; { new Date().getFullYear() } 16 + &copy; {new Date().getFullYear()} 17 17 </span> 18 18 </div> 19 19 </div> ··· 21 21 <div className="flex flex-col gap-4 items-center sm:items-end sm:gap-8"> 22 22 <div className="order-last sm:order-first w-fit flex justify-end items-center gap-4"> 23 23 <a href="https://bsky.app/profile/standard.site" target="_blank"> 24 - <BlueskyLogo className="h-5 w-auto text-muted-content hover:text-muted transition-colors"/> 24 + <BlueskyLogo className="h-5 w-auto text-muted-content hover:text-muted transition-colors" /> 25 25 </a> 26 26 <a href="https://tangled.org/standard.site" target="_blank"> 27 - <TangledLogo className="h-5 w-auto text-muted-content hover:text-muted transition-colors"/> 27 + <TangledLogo className="h-5 w-auto text-muted-content hover:text-muted transition-colors" /> 28 28 </a> 29 29 <a href="https://pdsls.dev/at://did:plc:re3ebnp5v7ffagz6rb6xfei4/com.atproto.lexicon.schema" target="_blank"> 30 - <PdslsLogo className="h-5 w-auto text-muted-content hover:text-muted transition-colors"/> 30 + <PdslsLogo className="h-5 w-auto text-muted-content hover:text-muted transition-colors" /> 31 31 </a> 32 32 </div> 33 33 <div className="flex flex-col sm:items-end">
+16 -2
app/components/MobileNav.tsx
··· 1 1 'use client' 2 2 3 3 import { useEffect, useState } from 'react' 4 + import Link from 'next/link' 4 5 import { ArrowUpRightIcon, MenuIcon, XIcon } from 'lucide-react' 5 6 import BlurEffect from 'react-progressive-blur' 6 7 import { AnimateIn, StandardSiteLogo } from '@/app/components' 7 - import { EXTERNAL_LINKS, NAV_ITEMS } from '@/app/data/content' 8 + import { EXTERNAL_LINKS, NAV_ITEMS, SECONDARY_NAV_ITEMS } from '@/app/data/content' 8 9 import { scrollToElement } from '@/app/lib/scroll' 9 10 10 11 export function MobileNav() { ··· 87 88 <div 88 89 className={ `p-4 relative flex flex-col gap-6 z-40 mx-auto max-w-[38rem] w-full min-h-0 overflow-hidden rounded-2xl transition-all duration-300 ease-in-out ${ 89 90 isOpen 90 - ? 'bg-zinc-950 dark:bg-zinc-50 text-zinc-50 dark:text-zinc-950 h-[27.25rem]' 91 + ? 'bg-zinc-950 dark:bg-zinc-50 text-zinc-50 dark:text-zinc-950 h-[34rem]' 91 92 : 'text-base-content h-15' 92 93 }` }> 93 94 <div className="flex justify-between items-center"> ··· 124 125 > 125 126 { item.label } 126 127 </a> 128 + )) } 129 + 130 + <div className="h-px w-full bg-border/10" /> 131 + 132 + { SECONDARY_NAV_ITEMS.map((item) => ( 133 + <Link 134 + key={ item.label } 135 + href={ item.href } 136 + onClick={ () => setIsOpen(false) } 137 + className="font-medium text-lg tracking-tight text-muted-content hover:text-zinc-50 dark:hover:text-zinc-950 transition-colors" 138 + > 139 + { item.label } 140 + </Link> 127 141 )) } 128 142 129 143 <div className="h-px w-full bg-border/10" />
+16 -1
app/components/Sidebar.tsx
··· 1 1 'use client' 2 2 3 3 import { useEffect, useState } from 'react' 4 + import Link from 'next/link' 4 5 import { AnimateIn, StandardSiteLogo } from '@/app/components' 5 - import { EXTERNAL_LINKS, NAV_ITEMS } from '@/app/data/content' 6 + import {EXTERNAL_LINKS, NAV_ITEMS, SECONDARY_NAV_ITEMS} from '@/app/data/content' 6 7 import { scrollToElement } from '@/app/lib/scroll' 7 8 import { ArrowUpRightIcon } from 'lucide-react' 8 9 ··· 80 81 > 81 82 { item.label } 82 83 </a> 84 + )) } 85 + </nav> 86 + 87 + <div className="h-px w-full bg-border" /> 88 + 89 + <nav className="flex flex-col gap-2"> 90 + { SECONDARY_NAV_ITEMS.map((item) => ( 91 + <Link 92 + key={ item.label } 93 + href={ item.href } 94 + className="font-medium text-base tracking-tight text-muted-content hover:text-base-content transition-colors" 95 + > 96 + { item.label } 97 + </Link> 83 98 )) } 84 99 </nav> 85 100
+70
app/components/docs/ClickableHeading.tsx
··· 1 + 'use client' 2 + 3 + import { useState } from 'react' 4 + import { generateSlug } from '@/app/lib/slug' 5 + 6 + interface ClickableHeadingProps { 7 + level: 1 | 2 | 3 | 4 8 + children: React.ReactNode 9 + } 10 + 11 + export function ClickableHeading({ level, children }: ClickableHeadingProps) { 12 + const [copied, setCopied] = useState(false) 13 + 14 + const text = typeof children === 'string' ? children : extractText(children) 15 + const id = generateSlug(text) 16 + 17 + const handleClick = async () => { 18 + const url = `${window.location.origin}${window.location.pathname}#${id}` 19 + await navigator.clipboard.writeText(url) 20 + setCopied(true) 21 + 22 + // Update URL without scrolling 23 + window.history.pushState({}, '', `#${id}`) 24 + 25 + setTimeout(() => setCopied(false), 2000) 26 + } 27 + 28 + const Tag = `h${level}` as keyof React.JSX.IntrinsicElements 29 + 30 + const baseClasses = "font-display font-semibold leading-tight tracking-tighter text-base-content group cursor-pointer hover:text-muted transition-colors relative scroll-mt-32" 31 + const levelClasses = { 32 + 1: "text-3xl sm:text-4xl mb-8", 33 + 2: "text-2xl sm:text-3xl mt-12 mb-4", 34 + 3: "text-xl sm:text-2xl tracking-tight mt-8 mb-3", 35 + 4: "text-lg sm:text-xl tracking-tight mt-6 mb-2" 36 + } 37 + 38 + return ( 39 + <Tag 40 + id={id} 41 + className={`${baseClasses} ${levelClasses[level]}`} 42 + onClick={handleClick} 43 + > 44 + <span className="inline-flex items-center gap-2"> 45 + {children} 46 + <span className="opacity-0 group-hover:opacity-100 transition-opacity text-muted"> 47 + {copied ? ( 48 + <svg className="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"> 49 + <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5 13l4 4L19 7" /> 50 + </svg> 51 + ) : ( 52 + <svg className="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"> 53 + <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1" /> 54 + </svg> 55 + )} 56 + </span> 57 + </span> 58 + </Tag> 59 + ) 60 + } 61 + 62 + function extractText(node: React.ReactNode): string { 63 + if (typeof node === 'string') return node 64 + if (typeof node === 'number') return String(node) 65 + if (Array.isArray(node)) return node.map(extractText).join('') 66 + if (node && typeof node === 'object' && 'props' in node) { 67 + return extractText((node as { props: { children: React.ReactNode } }).props.children) 68 + } 69 + return '' 70 + }
+17
app/components/docs/DocsMarkdownContext.tsx
··· 1 + 'use client' 2 + 3 + import { createContext, useContext } from 'react' 4 + 5 + const DocsMarkdownContext = createContext<string | null>(null) 6 + 7 + export function DocsMarkdownProvider({ markdown, children }: { markdown: string; children: React.ReactNode }) { 8 + return ( 9 + <DocsMarkdownContext.Provider value={markdown}> 10 + {children} 11 + </DocsMarkdownContext.Provider> 12 + ) 13 + } 14 + 15 + export function useDocsMarkdown() { 16 + return useContext(DocsMarkdownContext) 17 + }
+126
app/components/docs/DocsNav.tsx
··· 1 + 'use client' 2 + 3 + import { useEffect, useState } from 'react' 4 + import Link from 'next/link' 5 + import { usePathname } from 'next/navigation' 6 + import { ArrowLeftIcon, MenuIcon, XIcon } from 'lucide-react' 7 + import BlurEffect from 'react-progressive-blur' 8 + import { AnimateIn, StandardSiteLogo } from '@/app/components' 9 + import { DOCS_NAV } from '@/app/data/docs-nav' 10 + 11 + export function DocsNav() { 12 + const [isOpen, setIsOpen] = useState(false) 13 + const pathname = usePathname() 14 + const [prevPathname, setPrevPathname] = useState(pathname) 15 + 16 + // Close menu when route changes (adjusting state during render) 17 + if (pathname !== prevPathname) { 18 + setPrevPathname(pathname) 19 + setIsOpen(false) 20 + } 21 + 22 + useEffect(() => { 23 + if (isOpen) { 24 + document.body.style.overflow = 'hidden' 25 + } else { 26 + document.body.style.overflow = '' 27 + } 28 + 29 + return () => { 30 + document.body.style.overflow = '' 31 + } 32 + }, [isOpen]) 33 + 34 + return ( 35 + <> 36 + <AnimateIn 37 + as="header" 38 + direction="down" 39 + delay={0.5} 40 + onScroll={false} 41 + className="fixed left-0 right-0 top-0 z-30 px-4 py-2 md:hidden" 42 + > 43 + <div 44 + className={`p-4 relative flex flex-col gap-6 z-40 mx-auto max-w-[38rem] w-full min-h-0 overflow-hidden rounded-2xl transition-all duration-300 ease-in-out ${ 45 + isOpen 46 + ? 'bg-zinc-950 dark:bg-zinc-50 text-zinc-50 dark:text-zinc-950 max-h-[80vh] overflow-y-auto' 47 + : 'text-base-content h-15' 48 + }`} 49 + > 50 + <div className="flex justify-between items-center"> 51 + <Link href="/" className="flex items-center gap-2"> 52 + <StandardSiteLogo className="size-7" /> 53 + <span className="font-medium text-sm tracking-tight">Docs</span> 54 + </Link> 55 + {!isOpen && ( 56 + <button 57 + onClick={() => setIsOpen(true)} 58 + aria-label="Open menu" 59 + > 60 + <MenuIcon className="size-6" /> 61 + </button> 62 + )} 63 + {isOpen && ( 64 + <button 65 + onClick={() => setIsOpen(false)} 66 + aria-label="Close menu" 67 + > 68 + <XIcon className="size-6" /> 69 + </button> 70 + )} 71 + </div> 72 + 73 + {isOpen && ( 74 + <nav className="flex flex-col gap-6"> 75 + {DOCS_NAV.map((section) => ( 76 + <div key={section.title} className="flex flex-col gap-2"> 77 + <span className="font-mono text-xs font-medium tracking-tight text-muted-content uppercase"> 78 + {section.title} 79 + </span> 80 + <div className="flex flex-col gap-2"> 81 + {section.items.map((item) => ( 82 + <Link 83 + key={item.href} 84 + href={item.href} 85 + className={`font-medium text-lg tracking-tight ${ 86 + pathname === item.href 87 + ? 'text-zinc-50 dark:text-zinc-950' 88 + : 'text-muted-content' 89 + } hover:text-zinc-50 dark:hover:text-zinc-950 transition-colors`} 90 + > 91 + {item.label} 92 + </Link> 93 + ))} 94 + </div> 95 + </div> 96 + ))} 97 + 98 + <div className="h-px w-full bg-border/10" /> 99 + 100 + <Link 101 + href="/" 102 + className="flex items-center gap-2 font-medium text-lg tracking-tight text-muted-content hover:text-zinc-50 dark:hover:text-zinc-950 transition-colors" 103 + > 104 + <ArrowLeftIcon className="size-5" /> 105 + Back home 106 + </Link> 107 + </nav> 108 + )} 109 + </div> 110 + <BlurEffect 111 + className="bg-gradient-to-b from-base-100 to-transparent absolute inset-0 w-full h-full -z-10" 112 + position="top" 113 + intensity={75} 114 + /> 115 + </AnimateIn> 116 + 117 + {/* Overlay */} 118 + <div 119 + className={`fixed inset-0 z-10 bg-base-100/50 backdrop-blur-sm transition-opacity duration-300 md:hidden ${ 120 + isOpen ? 'opacity-100' : 'opacity-0 pointer-events-none' 121 + }`} 122 + onClick={() => setIsOpen(false)} 123 + /> 124 + </> 125 + ) 126 + }
+101
app/components/docs/DocsPageMenu.tsx
··· 1 + 'use client' 2 + 3 + import { useState, useRef, useEffect } from 'react' 4 + import { usePathname } from 'next/navigation' 5 + import { useDocsMarkdown } from './DocsMarkdownContext' 6 + 7 + export function DocsPageMenu() { 8 + const [open, setOpen] = useState(false) 9 + const [copied, setCopied] = useState(false) 10 + const menuRef = useRef<HTMLDivElement>(null) 11 + const pathname = usePathname() 12 + const markdown = useDocsMarkdown() 13 + 14 + const slug = (() => { 15 + const path = pathname.split(/[?#]/)[0] 16 + if (!path.startsWith('/docs/')) return null 17 + const parts = path.split('/').filter(Boolean) 18 + if (parts.length <= 1) return null 19 + return parts.slice(1).join('/') 20 + })() 21 + 22 + useEffect(() => { 23 + if (!open) return 24 + 25 + function handleClickOutside(e: MouseEvent) { 26 + if (menuRef.current && !menuRef.current.contains(e.target as Node)) { 27 + setOpen(false) 28 + } 29 + } 30 + 31 + document.addEventListener('mousedown', handleClickOutside) 32 + return () => document.removeEventListener('mousedown', handleClickOutside) 33 + }, [open]) 34 + 35 + if (!slug) return null 36 + 37 + const handleCopyMarkdown = async () => { 38 + if (!markdown) return 39 + 40 + try { 41 + await navigator.clipboard.writeText(markdown) 42 + setCopied(true) 43 + setTimeout(() => { 44 + setCopied(false) 45 + setOpen(false) 46 + }, 1500) 47 + } catch { 48 + setOpen(false) 49 + } 50 + } 51 + 52 + return ( 53 + <div ref={menuRef} className="relative"> 54 + <button 55 + onClick={() => setOpen(!open)} 56 + className="flex items-center justify-center text-muted hover:text-base-content transition-colors p-1 rounded-md hover:bg-base-200 mt-1 size-8" 57 + aria-label="Page options" 58 + > 59 + <svg className="size-4" fill="currentColor" viewBox="0 0 20 20"> 60 + <path d="M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z" /> 61 + </svg> 62 + </button> 63 + 64 + {open && ( 65 + <div className="absolute right-0 top-full mt-2 p-0.5 bg-base-200 border border-border grid gap-px rounded-xl shadow-lg z-20 min-w-48"> 66 + <button 67 + onClick={handleCopyMarkdown} 68 + className="w-full flex items-center gap-2 px-3 py-2 text-sm text-muted hover:text-base-content hover:bg-base-300 rounded-lg transition-colors" 69 + > 70 + {copied ? ( 71 + <> 72 + <svg className="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"> 73 + <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5 13l4 4L19 7" /> 74 + </svg> 75 + Copied! 76 + </> 77 + ) : ( 78 + <> 79 + <svg className="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"> 80 + <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" /> 81 + </svg> 82 + Copy as Markdown 83 + </> 84 + )} 85 + </button> 86 + <a 87 + href={`/api/docs/markdown/${slug}`} 88 + target="_blank" 89 + rel="noopener noreferrer" 90 + className="w-full flex items-center gap-2 px-3 py-2 text-sm text-muted hover:text-base-content hover:bg-base-300 rounded-lg transition-colors" 91 + > 92 + <svg className="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"> 93 + <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14" /> 94 + </svg> 95 + View raw Markdown 96 + </a> 97 + </div> 98 + )} 99 + </div> 100 + ) 101 + }
+61
app/components/docs/DocsSidebar.tsx
··· 1 + 'use client' 2 + 3 + import Link from 'next/link' 4 + import { usePathname } from 'next/navigation' 5 + import { ArrowLeftIcon } from 'lucide-react' 6 + import { AnimateIn, StandardSiteLogo } from '@/app/components' 7 + import { DOCS_NAV } from '@/app/data/docs-nav' 8 + 9 + export function DocsSidebar() { 10 + const pathname = usePathname() 11 + 12 + return ( 13 + <AnimateIn 14 + as="aside" 15 + direction="left" 16 + delay={0.3} 17 + onScroll={false} 18 + className="flex sticky top-8 w-32 shrink-0 flex-col gap-6" 19 + > 20 + <Link href="/" className="flex items-center gap-2"> 21 + <StandardSiteLogo className="size-7 text-base-content" /> 22 + <span className="font-medium text-sm tracking-tight text-base-content">Docs</span> 23 + </Link> 24 + 25 + <nav className="flex flex-col gap-6"> 26 + {DOCS_NAV.map((section) => ( 27 + <div key={section.title} className="flex flex-col gap-2"> 28 + <span className="font-mono text-xs font-medium tracking-tight text-muted-content uppercase"> 29 + {section.title} 30 + </span> 31 + <div className="flex flex-col gap-1"> 32 + {section.items.map((item) => ( 33 + <Link 34 + key={item.href} 35 + href={item.href} 36 + className={`font-medium text-base tracking-tight py-0.5 ${ 37 + pathname === item.href 38 + ? 'text-base-content' 39 + : 'text-muted-content' 40 + } hover:text-base-content transition-colors`} 41 + > 42 + {item.label} 43 + </Link> 44 + ))} 45 + </div> 46 + </div> 47 + ))} 48 + </nav> 49 + 50 + <div className="h-px w-full bg-border" /> 51 + 52 + <Link 53 + href="/" 54 + className="flex items-center gap-2 font-medium text-base tracking-tight text-muted-content hover:text-base-content transition-colors" 55 + > 56 + <ArrowLeftIcon className="size-4" /> 57 + Back home 58 + </Link> 59 + </AnimateIn> 60 + ) 61 + }
+111
app/components/docs/LinkCard.tsx
··· 1 + 2 + interface LinkCardProps { 3 + title?: string 4 + description?: string 5 + url: string 6 + image?: string 7 + } 8 + 9 + async function fetchOGMetadata(url: string) { 10 + try { 11 + const response = await fetch(url, { 12 + next: { revalidate: 86400 }, // Cache for 24 hours 13 + headers: { 14 + 'User-Agent': 'Mozilla/5.0 (compatible; Standard.site/1.0; +https://standard.site)' 15 + } 16 + }) 17 + 18 + if (!response.ok) { 19 + console.warn(`Failed to fetch ${url}: ${response.status}`) 20 + return null 21 + } 22 + 23 + const html = await response.text() 24 + const urlObj = new URL(url) 25 + 26 + // Extract OG metadata - try both property and name attributes 27 + let ogImage = 28 + html.match(/<meta[^>]*property=["']og:image["'][^>]*content=["']([^"']*)["']/i)?.[1] || 29 + html.match(/<meta[^>]*content=["']([^"']*)["'][^>]*property=["']og:image["']/i)?.[1] 30 + 31 + const ogTitle = 32 + html.match(/<meta[^>]*property=["']og:title["'][^>]*content=["']([^"']*)["']/i)?.[1] || 33 + html.match(/<meta[^>]*content=["']([^"']*)["'][^>]*property=["']og:title["']/i)?.[1] 34 + 35 + const ogDescription = 36 + html.match(/<meta[^>]*property=["']og:description["'][^>]*content=["']([^"']*)["']/i)?.[1] || 37 + html.match(/<meta[^>]*content=["']([^"']*)["'][^>]*property=["']og:description["']/i)?.[1] 38 + 39 + // Resolve relative image URLs to absolute 40 + if (ogImage && !ogImage.startsWith('http')) { 41 + if (ogImage.startsWith('//')) { 42 + ogImage = `${urlObj.protocol}${ogImage}` 43 + } else if (ogImage.startsWith('/')) { 44 + ogImage = `${urlObj.protocol}//${urlObj.host}${ogImage}` 45 + } else { 46 + ogImage = `${urlObj.protocol}//${urlObj.host}/${ogImage}` 47 + } 48 + } 49 + 50 + return { 51 + image: ogImage || null, 52 + title: ogTitle || null, 53 + description: ogDescription || null 54 + } 55 + } catch (error) { 56 + console.error('Failed to fetch OG metadata from', url, error) 57 + return null 58 + } 59 + } 60 + 61 + export async function LinkCard({ title, description, url, image }: LinkCardProps) { 62 + const urlObj = new URL(url) 63 + const hostname = urlObj.hostname.replace('www.', '') 64 + 65 + // Fetch OG metadata if not provided 66 + const metadata = await fetchOGMetadata(url) 67 + 68 + const finalTitle = title || metadata?.title || hostname 69 + const finalDescription = description || metadata?.description || '' 70 + const finalImage = image || metadata?.image 71 + 72 + urlObj.searchParams.set('utm_source', 'standard.site') 73 + urlObj.searchParams.set('utm_medium', 'docs') 74 + urlObj.searchParams.set('utm_campaign', 'implementations') 75 + 76 + return ( 77 + <a 78 + href={urlObj.toString()} 79 + target="_blank" 80 + rel="noopener noreferrer" 81 + className="group flex rounded-2xl border border-border bg-linear-to-br from-base-200/50 to-base-200 transition-all hover:border-border/60 hover:shadow-lg not-prose mb-4" 82 + > 83 + <div className="flex min-w-0 flex-1 flex-col gap-2 px-3 py-2"> 84 + <hgroup className="flex flex-col gap-0"> 85 + <h3 className="font-bold tracking-tight text-base-content group-hover:underline line-clamp-2"> 86 + {finalTitle} 87 + </h3> 88 + {finalDescription && ( 89 + <p className="text-sm tracking-tight text-muted-content line-clamp-2"> 90 + {finalDescription} 91 + </p> 92 + )} 93 + </hgroup> 94 + <div className="mt-auto text-xs @md/content:pt-2 @md/content:border-t border-base-300/50 font-medium text-muted-content"> 95 + <span className="font-mono">{hostname}</span> 96 + </div> 97 + </div> 98 + {finalImage && ( 99 + <div className="shrink-0"> 100 + <div className="size-26 @md/content:h-29 @md/content:aspect-[1.91/1] @md/content:w-auto overflow-hidden rounded-r-2xl bg-base-100"> 101 + <img 102 + src={finalImage} 103 + alt={finalTitle} 104 + className="h-full w-full object-cover" 105 + /> 106 + </div> 107 + </div> 108 + )} 109 + </a> 110 + ) 111 + }
+3
app/components/docs/StandardSite.tsx
··· 1 + export function StandardSite() { 2 + return <span className="text-base-content">Standard.site</span> 3 + }
+62
app/components/docs/Table.tsx
··· 1 + import { ReactNode } from 'react' 2 + 3 + interface TableProps { 4 + headers: string[] 5 + rows: (string | ReactNode)[][] 6 + } 7 + 8 + export function Table({ headers, rows }: TableProps) { 9 + const columnCount = headers.length 10 + 11 + return ( 12 + <div className="overflow-x-auto mb-6"> 13 + <table className="w-full text-base border-collapse table-fixed"> 14 + <colgroup> 15 + {columnCount === 3 ? ( 16 + <> 17 + <col className="w-1/4" /> 18 + <col className="w-[15%]" /> 19 + <col /> 20 + </> 21 + ) : columnCount === 4 ? ( 22 + <> 23 + <col className="w-1/4" /> 24 + <col className="w-1/6" /> 25 + <col className="w-1/6" /> 26 + <col /> 27 + </> 28 + ) : ( 29 + headers.map((_, i) => <col key={i} />) 30 + )} 31 + </colgroup> 32 + <thead> 33 + <tr> 34 + {headers.map((header, i) => ( 35 + <th 36 + key={i} 37 + className="text-left font-medium text-base-content border-b border-border px-3 py-2" 38 + > 39 + {header} 40 + </th> 41 + ))} 42 + </tr> 43 + </thead> 44 + <tbody> 45 + {rows.map((row, i) => ( 46 + <tr key={i}> 47 + {row.map((cell, j) => ( 48 + <td 49 + key={j} 50 + className={`text-muted border-b border-border px-3 py-2 ${j === 0 ? 'font-mono text-sm break-all' : '' 51 + }`} 52 + > 53 + {cell} 54 + </td> 55 + ))} 56 + </tr> 57 + ))} 58 + </tbody> 59 + </table> 60 + </div> 61 + ) 62 + }
+7
app/components/docs/index.ts
··· 1 + export { DocsSidebar } from './DocsSidebar' 2 + export { DocsNav } from './DocsNav' 3 + export { Table } from './Table' 4 + export { LinkCard } from './LinkCard' 5 + export { StandardSite } from './StandardSite' 6 + export { ClickableHeading } from './ClickableHeading' 7 + export { DocsPageMenu } from './DocsPageMenu'
+1
app/components/index.ts
··· 7 7 export * from "@/app/components/ExpandableField"; 8 8 export * from "@/app/components/sections"; 9 9 export * from "@/app/components/icons"; 10 + export * from "@/app/components/docs";
+3 -3
app/components/sections/DefinitionsSection.tsx
··· 38 38 </h2> 39 39 40 40 <p className="text-base sm:text-xl leading-snug tracking-tight text-muted"> 41 - We currently define two main lexicons that cover the core building 42 - blocks of long-form platforms: where content lives, and what it 43 - contains. 41 + We currently define three main lexicons that cover the core building 42 + blocks of long-form platforms: where content lives, what it 43 + contains, and how users connect with publications. 44 44 </p> 45 45 46 46 <TabbedLexiconViewer tabs={ tabs } allSchemas={ allSchemas } />
+6
app/data/content.ts
··· 6 6 { label: 'Questions', href: '#questions' }, 7 7 ] 8 8 9 + export const SECONDARY_NAV_ITEMS = [ 10 + { label: 'Documentation', href: '/docs/introduction' }, 11 + { label: 'llms.txt', href: '/llms.txt' }, 12 + ] 13 + 9 14 export const EXTERNAL_LINKS = [ 10 15 { label: 'bsky.app', href: 'https://bsky.app/profile/standard.site' }, 11 16 { label: 'tangled.org', href: 'https://tangled.org/standard.site' }, ··· 72 77 export const LEXICON_TABS = [ 73 78 'site.standard.publication', 74 79 'site.standard.document', 80 + 'site.standard.graph.subscription', 75 81 ]
+51
app/data/docs-nav.ts
··· 1 + export interface DocsNavItem { 2 + label: string 3 + href: string 4 + } 5 + 6 + export interface DocsNavSection { 7 + title: string 8 + items: DocsNavItem[] 9 + } 10 + 11 + export const DOCS_NAV: DocsNavSection[] = [ 12 + { 13 + title: 'Getting Started', 14 + items: [ 15 + { label: 'Introduction', href: '/docs/introduction' }, 16 + { label: 'Quick Start', href: '/docs/quick-start' }, 17 + { label: 'Permissions', href: '/docs/permissions' }, 18 + { label: 'Verification', href: '/docs/verification' }, 19 + ], 20 + }, 21 + { 22 + title: 'Lexicons', 23 + items: [ 24 + { label: 'Publication', href: '/docs/lexicons/publication' }, 25 + { label: 'Document', href: '/docs/lexicons/document' }, 26 + { label: 'Subscription', href: '/docs/lexicons/subscription' }, 27 + { label: 'Theme', href: '/docs/lexicons/theme' }, 28 + ], 29 + }, 30 + { 31 + title: 'Resources', 32 + items: [ 33 + { label: 'Implementations', href: '/docs/implementations' }, 34 + { label: 'FAQ', href: '/docs/faq' }, 35 + ], 36 + }, 37 + ] 38 + 39 + // Helper to get all doc slugs for static generation 40 + export function getAllDocSlugs(): string[][] { 41 + const slugs: string[][] = [] 42 + 43 + DOCS_NAV.forEach((section) => { 44 + section.items.forEach((item) => { 45 + const slug = item.href.replace('/docs/', '').split('/') 46 + slugs.push(slug) 47 + }) 48 + }) 49 + 50 + return slugs 51 + }
+3 -3
app/data/lexicons/document.json
··· 14 14 "properties": { 15 15 "path": { 16 16 "type": "string", 17 - "description": "Combine with site or publication url to construct a canonical URL to the document. Prepend with a leading slash." 17 + "description": "Combine with `site` or publication url to construct a canonical `URL` to the document. A slash should be included at the beginning of this value." 18 18 }, 19 19 "site": { 20 20 "type": "string", 21 21 "format": "uri", 22 - "description": "Points to a publication record (at://) or a publication url (https://) for loose documents. Avoid trailing slashes." 22 + "description": "Points to a publication record `at://` or a publication url `https://` for loose documents. Avoid trailing slashes." 23 23 }, 24 24 "tags": { 25 25 "type": "array", ··· 40 40 "refs": [], 41 41 "type": "union", 42 42 "closed": false, 43 - "description": "Open union used to define the record's content. Each entry must specify a $type and may be extended with other lexicons to support additional content formats." 43 + "description": "Open union used to define the record's content. Each entry must specify a `$type`" 44 44 }, 45 45 "updatedAt": { 46 46 "type": "string",
+3 -3
app/data/lexicons/publication.json
··· 14 14 "url": { 15 15 "type": "string", 16 16 "format": "uri", 17 - "description": "Base publication url (ex: https://standard.site). The canonical document URL is formed by combining this value with the document path." 17 + "description": "Base url for the publication. (ex: https://standard.site). This value will be combined with the document path to construct a full URL for the document. Avoid trailing slashes." 18 18 }, 19 19 "icon": { 20 20 "type": "blob", ··· 33 33 "basicTheme": { 34 34 "ref": "site.standard.theme.basic", 35 35 "type": "ref", 36 - "description": "Simplified publication theme for tools and apps to utilize when displaying content." 36 + "description": "Simplified theme for tools and apps to utilize when displaying content." 37 37 }, 38 38 "description": { 39 39 "type": "string", ··· 56 56 "showInDiscover": { 57 57 "type": "boolean", 58 58 "default": true, 59 - "description": "Boolean which decides whether the publication should appear in discovery feeds." 59 + "description": "Decides whether the publication should appear in discovery feeds." 60 60 } 61 61 }, 62 62 "description": "Platform-specific preferences for the publication, including discovery and visibility settings."
+1 -1
app/data/lexicons/theme.basic.json
··· 39 39 "description": "Color used for button text." 40 40 } 41 41 }, 42 - "description": "A simplified theme definition for publications, providing basic color customization for content display across different platforms and applications." 42 + "description": "A simplified theme definition, providing basic color customization for content display across different platforms and applications." 43 43 } 44 44 }, 45 45 "$type": "com.atproto.lexicon.schema",
+87
app/docs/[...slug]/page.tsx
··· 1 + import { notFound } from 'next/navigation' 2 + import { Metadata } from 'next' 3 + import { readFile } from 'fs/promises' 4 + import { join } from 'path' 5 + import { getAllDocSlugs } from '@/app/data/docs-nav' 6 + import { getDocMarkdown } from '@/app/lib/mdx-to-markdown' 7 + import { DocsMarkdownProvider } from '@/app/components/docs/DocsMarkdownContext' 8 + 9 + // Map of slugs to their MDX content imports 10 + const docsContent: Record<string, () => Promise<{ default: React.ComponentType }>> = { 11 + 'introduction': () => import('@/content/docs/introduction.mdx'), 12 + 'quick-start': () => import('@/content/docs/quick-start.mdx'), 13 + 'permissions': () => import('@/content/docs/permissions.mdx'), 14 + 'verification': () => import('@/content/docs/verification.mdx'), 15 + 'lexicons/publication': () => import('@/content/docs/lexicons/publication.mdx'), 16 + 'lexicons/document': () => import('@/content/docs/lexicons/document.mdx'), 17 + 'lexicons/subscription': () => import('@/content/docs/lexicons/subscription.mdx'), 18 + 'lexicons/theme': () => import('@/content/docs/lexicons/theme.mdx'), 19 + 'implementations': () => import('@/content/docs/implementations.mdx'), 20 + 'faq': () => import('@/content/docs/faq.mdx'), 21 + } 22 + 23 + async function getFrontmatter(slugPath: string): Promise<{ title?: string; description?: string }> { 24 + const filePath = join(process.cwd(), 'content', 'docs', `${slugPath}.mdx`) 25 + const raw = await readFile(filePath, 'utf-8') 26 + 27 + const match = raw.match(/^---\n([\s\S]*?)\n---/) 28 + if (!match) return {} 29 + 30 + const frontmatter: Record<string, string> = {} 31 + for (const line of match[1].split('\n')) { 32 + const [key, ...rest] = line.split(':') 33 + if (key && rest.length) { 34 + frontmatter[key.trim()] = rest.join(':').trim() 35 + } 36 + } 37 + 38 + return frontmatter 39 + } 40 + 41 + // Generate static params for all doc pages 42 + export function generateStaticParams() { 43 + return getAllDocSlugs().map((slug) => ({ slug })) 44 + } 45 + 46 + export async function generateMetadata({ 47 + params, 48 + }: { 49 + params: Promise<{ slug: string[] }> 50 + }): Promise<Metadata> { 51 + const { slug } = await params 52 + const slugPath = slug.join('/') 53 + 54 + if (!docsContent[slugPath]) return {} 55 + 56 + const { title, description } = await getFrontmatter(slugPath) 57 + 58 + return { 59 + title: title ? `${title} - Standard.site` : undefined, 60 + description, 61 + } 62 + } 63 + 64 + export default async function DocPage({ 65 + params, 66 + }: { 67 + params: Promise<{ slug: string[] }> 68 + }) { 69 + const { slug } = await params 70 + const slugPath = slug.join('/') 71 + 72 + const loader = docsContent[slugPath] 73 + if (!loader) { 74 + notFound() 75 + } 76 + 77 + const [{ default: Content }, markdown] = await Promise.all([ 78 + loader(), 79 + getDocMarkdown(slugPath), 80 + ]) 81 + 82 + return ( 83 + <DocsMarkdownProvider markdown={markdown}> 84 + <Content /> 85 + </DocsMarkdownProvider> 86 + ) 87 + }
+33
app/docs/layout.tsx
··· 1 + import { Metadata } from 'next' 2 + import { Footer, DocsSidebar, DocsNav } from '@/app/components' 3 + 4 + export const metadata: Metadata = { 5 + title: 'Documentation - Standard.site', 6 + description: 'Learn how to implement Standard.site lexicons for long-form publishing on AT Protocol.', 7 + } 8 + 9 + export default function DocsLayout({ children }: { children: React.ReactNode }) { 10 + return ( 11 + <div className="min-h-screen bg-base-100 font-sans"> 12 + <DocsNav /> 13 + 14 + <div className="flex gap-x-8 lg:gap-x-16 xl:gap-x-24 justify-center px-8 pt-48 pb-32 md:py-40"> 15 + <section className="hidden md:block shrink-0 w-32"> 16 + <DocsSidebar /> 17 + </section> 18 + 19 + <main className="flex flex-col w-xl gap-8 min-w-0"> 20 + <article className="min-w-0 @container/content"> 21 + {children} 22 + </article> 23 + </main> 24 + 25 + <section className="hidden md:flex shrink-0 w-32"> 26 + {/* Reserved for table of contents */} 27 + </section> 28 + </div> 29 + 30 + <Footer /> 31 + </div> 32 + ) 33 + }
+5
app/docs/page.tsx
··· 1 + import { redirect } from 'next/navigation' 2 + 3 + export default function DocsIndexPage() { 4 + redirect('/docs/introduction') 5 + }
+9
app/globals.css
··· 45 45 body { 46 46 font-family : var(--font-inter), var(--font-geist-sans), Arial, Helvetica, sans-serif; 47 47 } 48 + 49 + /* Softer link underlines */ 50 + a { 51 + text-decoration-color: var(--border); 52 + } 53 + 54 + a:hover { 55 + text-decoration-color: var(--muted-content); 56 + }
app/icon-lg.png

This is a binary file and will not be displayed.

+2
app/lib/lexicon.ts
··· 1 1 import publicationLexicon from "../data/lexicons/publication.json"; 2 2 import documentLexicon from "../data/lexicons/document.json"; 3 + import subscriptionLexicon from "../data/lexicons/graph.subscription.json"; 3 4 import themeBasicLexicon from "../data/lexicons/theme.basic.json"; 4 5 import themeColorLexicon from "../data/lexicons/theme.color.json"; 5 6 import { getDescriptionOverride, getPropertyOrder } from "../data/lexicon-overrides"; ··· 48 49 const lexiconCache: Record<string, LexiconSchema> = { 49 50 "site.standard.publication": publicationLexicon as LexiconSchema, 50 51 "site.standard.document": documentLexicon as LexiconSchema, 52 + "site.standard.graph.subscription": subscriptionLexicon as LexiconSchema, 51 53 "site.standard.theme.basic": themeBasicLexicon as LexiconSchema, 52 54 "site.standard.theme.color": themeColorLexicon as LexiconSchema, 53 55 };
+273
app/lib/mdx-to-markdown.ts
··· 1 + import { readFile } from 'node:fs/promises' 2 + import { join } from 'node:path' 3 + 4 + export async function getDocMarkdown(slugPath: string): Promise<string> { 5 + const filePath = join(process.cwd(), 'content', 'docs', `${slugPath}.mdx`) 6 + const raw = await readFile(filePath, 'utf-8') 7 + return mdxToMarkdown(raw) 8 + } 9 + 10 + async function mdxToMarkdown(content: string): Promise<string> { 11 + let result = content 12 + 13 + // Remove frontmatter 14 + result = result.replace(/^---\n[\s\S]*?\n---\n*/, '') 15 + 16 + // Remove import lines 17 + result = result.replace(/^import\s+.*$/gm, '') 18 + 19 + // Replace <StandardSite /> with plain text 20 + result = result.replace(/<StandardSite\s*\/>/g, 'Standard.site') 21 + 22 + // Replace <LinkCard> components with markdown links, fetching OG titles 23 + const linkCardRegex = /<LinkCard\s+([\s\S]*?)\/>/g 24 + const linkCards: { match: string; url: string; title: string }[] = [] 25 + 26 + for (const m of content.matchAll(linkCardRegex)) { 27 + const attrs = m[1] 28 + const url = attrs.match(/url=["']([^"']*)["']/)?.[1] ?? '' 29 + const title = attrs.match(/title=["']([^"']*)["']/)?.[1] ?? '' 30 + linkCards.push({ match: m[0], url, title }) 31 + } 32 + 33 + // Fetch OG titles in parallel for cards without explicit titles 34 + const titles = await Promise.all( 35 + linkCards.map(async (card) => { 36 + if (card.title) return card.title 37 + return await fetchOgTitle(card.url) 38 + }) 39 + ) 40 + 41 + for (let i = 0; i < linkCards.length; i++) { 42 + result = result.replace(linkCards[i].match, `[${titles[i]}](${linkCards[i].url})`) 43 + } 44 + 45 + // Replace <Table> components with markdown tables 46 + // The closing /> is always on its own line, so we anchor to that to avoid 47 + // matching /> inside JSX fragments like </> 48 + result = result.replace(/<Table\s+([\s\S]*?)\n\/>/g, (_match, body) => { 49 + return parseTable(body) 50 + }) 51 + 52 + // Clean up extra blank lines 53 + result = result.replace(/\n{3,}/g, '\n\n') 54 + 55 + return result.trim() + '\n' 56 + } 57 + 58 + async function fetchOgTitle(url: string): Promise<string> { 59 + try { 60 + const res = await fetch(url, { 61 + next: { revalidate: 86400 }, 62 + headers: { 63 + 'User-Agent': 'Mozilla/5.0 (compatible; Standard.site/1.0; +https://standard.site)' 64 + }, 65 + signal: AbortSignal.timeout(5000), 66 + }) 67 + 68 + if (!res.ok) return url 69 + 70 + const html = await res.text() 71 + const ogTitle = 72 + html.match(/<meta[^>]*property=["']og:title["'][^>]*content=["']([^"']*)["']/i)?.[1] || 73 + html.match(/<meta[^>]*content=["']([^"']*)["'][^>]*property=["']og:title["']/i)?.[1] || 74 + html.match(/<title[^>]*>([^<]*)<\/title>/i)?.[1] 75 + 76 + return ogTitle?.trim() || url 77 + } catch { 78 + return url 79 + } 80 + } 81 + 82 + function parseTable(body: string): string { 83 + const headersMatch = body.match(/headers=\{(\[.*?\])}/) 84 + 85 + const rowsMatch = body.match(/rows=\{(\[[\s\S]*)\}\s*$/) 86 + 87 + if (!headersMatch || !rowsMatch) return body 88 + 89 + let headers: string[] 90 + try { 91 + // Convert single quotes to double quotes for JSON parsing 92 + headers = JSON.parse(headersMatch[1].replace(/'/g, '"')) 93 + } catch { 94 + return body 95 + } 96 + 97 + const rows = parseRows(rowsMatch[1]) 98 + 99 + // Build markdown table 100 + const headerRow = '| ' + headers.join(' | ') + ' |' 101 + const separator = '| ' + headers.map(() => '---').join(' | ') + ' |' 102 + const dataRows = rows.map(row => 103 + '| ' + row.map(cell => cell.replace(/\|/g, '\\|')).join(' | ') + ' |' 104 + ) 105 + 106 + return [headerRow, separator, ...dataRows].join('\n') 107 + } 108 + 109 + function parseRows(raw: string): string[][] { 110 + const rows: string[][] = [] 111 + 112 + // Strip outer brackets 113 + const inner = raw.trim().replace(/^\[/, '').replace(/\]$/, '') 114 + 115 + // Split into individual row arrays by matching balanced brackets 116 + const rowStrings = splitRows(inner) 117 + 118 + for (const rowStr of rowStrings) { 119 + const cells = splitCells(rowStr) 120 + if (cells.length > 0) { 121 + rows.push(cells.map(cell => jsxToPlainText(cell.trim()))) 122 + } 123 + } 124 + 125 + return rows 126 + } 127 + 128 + function splitRows(content: string): string[] { 129 + const rows: string[] = [] 130 + let depth = 0 131 + let current = '' 132 + let inString = false 133 + let stringChar = '' 134 + let inJsx = false 135 + 136 + for (let i = 0; i < content.length; i++) { 137 + const char = content[i] 138 + const prev = content[i - 1] 139 + 140 + if (inString) { 141 + current += char 142 + if (char === stringChar && prev !== '\\') { 143 + inString = false 144 + } 145 + continue 146 + } 147 + 148 + // Track JSX fragments: <> and </> 149 + if (char === '<' && content[i + 1] === '>') { 150 + inJsx = true 151 + current += char 152 + continue 153 + } 154 + if (char === '<' && content[i + 1] === '/' && content[i + 2] === '>') { 155 + inJsx = false 156 + current += char 157 + continue 158 + } 159 + 160 + // Only treat quotes as string delimiters outside JSX content 161 + if (!inJsx && (char === "'" || char === '"' || char === '`')) { 162 + inString = true 163 + stringChar = char 164 + current += char 165 + continue 166 + } 167 + 168 + if (char === '[') { 169 + if (depth > 0) current += char 170 + depth++ 171 + } else if (char === ']') { 172 + depth-- 173 + if (depth === 0) { 174 + rows.push(current.trim()) 175 + current = '' 176 + } else { 177 + current += char 178 + } 179 + } else if (depth > 0) { 180 + current += char 181 + } 182 + } 183 + 184 + return rows 185 + } 186 + 187 + function splitCells(row: string): string[] { 188 + const cells: string[] = [] 189 + let current = '' 190 + let depth = 0 191 + let inString = false 192 + let stringChar = '' 193 + let angleBracketDepth = 0 194 + let inJsx = false 195 + 196 + for (let i = 0; i < row.length; i++) { 197 + const char = row[i] 198 + const prev = row[i - 1] 199 + 200 + if (inString) { 201 + current += char 202 + if (char === stringChar && prev !== '\\') { 203 + inString = false 204 + } 205 + continue 206 + } 207 + 208 + // Track JSX fragments: <> and </> 209 + if (char === '<' && row[i + 1] === '>') { 210 + inJsx = true 211 + angleBracketDepth++ 212 + current += char 213 + continue 214 + } 215 + if (char === '<' && row[i + 1] === '/' && row[i + 2] === '>') { 216 + inJsx = false 217 + current += char 218 + continue 219 + } 220 + 221 + // Only treat quotes as string delimiters outside JSX content 222 + if (!inJsx && (char === "'" || char === '"' || char === '`')) { 223 + inString = true 224 + stringChar = char 225 + current += char 226 + continue 227 + } 228 + 229 + if (char === '{') { depth++; current += char; continue } 230 + if (char === '}') { depth--; current += char; continue } 231 + if (char === '<') { angleBracketDepth++; current += char; continue } 232 + if (char === '>') { angleBracketDepth--; current += char; continue } 233 + 234 + if (char === ',' && depth === 0 && angleBracketDepth === 0) { 235 + cells.push(current.trim()) 236 + current = '' 237 + continue 238 + } 239 + 240 + current += char 241 + } 242 + 243 + if (current.trim()) cells.push(current.trim()) 244 + 245 + return cells 246 + } 247 + 248 + function jsxToPlainText(cell: string): string { 249 + // Remove wrapping quotes from plain strings 250 + if (/^['"].*['"]$/.test(cell)) { 251 + return cell.slice(1, -1) 252 + } 253 + 254 + // Handle JSX expressions wrapped in {<>...</>} or <>...</> 255 + let text = cell 256 + 257 + // Strip outer JSX expression wrapper: {<>...</>} 258 + text = text.replace(/^\{?<>/, '').replace(/<\/>\}?$/, '') 259 + 260 + // Convert <code>...</code> to backtick-wrapped text 261 + text = text.replace(/<code>([^<]*)<\/code>/g, '`$1`') 262 + 263 + // Convert <a href="...">...</a> to markdown links 264 + text = text.replace(/<a\s+href=["']([^"']*)["'][^>]*>([^<]*)<\/a>/g, '[$2]($1)') 265 + 266 + // Strip any remaining JSX tags 267 + text = text.replace(/<[^>]+>/g, '') 268 + 269 + // Clean up whitespace 270 + text = text.replace(/\s+/g, ' ').trim() 271 + 272 + return text 273 + }
+9
app/lib/slug.ts
··· 1 + export function generateSlug(text: string): string { 2 + return text 3 + .toString() 4 + .toLowerCase() 5 + .trim() 6 + .replace(/\s+/g, '-') 7 + .replace(/[^\w\-]+/g, '') 8 + .replace(/\-\-+/g, '-') 9 + }
+282 -5
bun.lock
··· 6 6 "name": "standard-site", 7 7 "dependencies": { 8 8 "@atproto/api": "^0.18.8", 9 + "@mdx-js/loader": "^3.1.1", 10 + "@mdx-js/react": "^3.1.1", 11 + "@next/mdx": "^16.1.1", 9 12 "lucide-react": "^0.562.0", 10 13 "motion": "^12.23.26", 11 14 "next": "16.1.0", 12 15 "react": "19.2.3", 13 16 "react-dom": "19.2.3", 14 17 "react-progressive-blur": "^1.0.6", 18 + "rehype-slug": "^6.0.0", 19 + "remark-frontmatter": "^5.0.0", 20 + "remark-gfm": "^4.0.1", 15 21 }, 16 22 "devDependencies": { 17 23 "@tailwindcss/postcss": "^4", 24 + "@types/mdx": "^2.0.13", 18 25 "@types/node": "^20", 19 26 "@types/react": "^19", 20 27 "@types/react-dom": "^19", ··· 166 173 167 174 "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], 168 175 176 + "@mdx-js/loader": ["@mdx-js/loader@3.1.1", "", { "dependencies": { "@mdx-js/mdx": "^3.0.0", "source-map": "^0.7.0" }, "peerDependencies": { "webpack": ">=5" }, "optionalPeers": ["webpack"] }, "sha512-0TTacJyZ9mDmY+VefuthVshaNIyCGZHJG2fMnGaDttCt8HmjUF7SizlHJpaCDoGnN635nK1wpzfpx/Xx5S4WnQ=="], 177 + 178 + "@mdx-js/mdx": ["@mdx-js/mdx@3.1.1", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", "acorn": "^8.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", "recma-build-jsx": "^1.0.0", "recma-jsx": "^1.0.0", "recma-stringify": "^1.0.0", "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "source-map": "^0.7.0", "unified": "^11.0.0", "unist-util-position-from-estree": "^2.0.0", "unist-util-stringify-position": "^4.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ=="], 179 + 180 + "@mdx-js/react": ["@mdx-js/react@3.1.1", "", { "dependencies": { "@types/mdx": "^2.0.0" }, "peerDependencies": { "@types/react": ">=16", "react": ">=16" } }, "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw=="], 181 + 169 182 "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.12", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.10.0" } }, "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ=="], 170 183 171 184 "@next/env": ["@next/env@16.1.0", "", {}, "sha512-Dd23XQeFHmhf3KBW76leYVkejHlCdB7erakC2At2apL1N08Bm+dLYNP+nNHh0tzUXfPQcNcXiQyacw0PG4Fcpw=="], 172 185 173 186 "@next/eslint-plugin-next": ["@next/eslint-plugin-next@16.1.0", "", { "dependencies": { "fast-glob": "3.3.1" } }, "sha512-sooC/k0LCF4/jLXYHpgfzJot04lZQqsttn8XJpTguP8N3GhqXN3wSkh68no2OcZzS/qeGwKDFTqhZ8WofdXmmQ=="], 187 + 188 + "@next/mdx": ["@next/mdx@16.1.1", "", { "dependencies": { "source-map": "^0.7.0" }, "peerDependencies": { "@mdx-js/loader": ">=0.15.0", "@mdx-js/react": ">=0.15.0" }, "optionalPeers": ["@mdx-js/loader", "@mdx-js/react"] }, "sha512-XvlZ28/K7kXb1vgTeZWHjjfxDx9BVz/s1bbVlsFOvPfYuSVRmlUkhaiyJTA/7mm9OdpeC57+uHR6k1fUcn5AaA=="], 174 189 175 190 "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.1.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-onHq8dl8KjDb8taANQdzs3XmIqQWV3fYdslkGENuvVInFQzZnuBYYOG2HGHqqtvgmEU7xWzhgndXXxnhk4Z3fQ=="], 176 191 ··· 232 247 233 248 "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], 234 249 250 + "@types/debug": ["@types/debug@4.1.12", "", { "dependencies": { "@types/ms": "*" } }, "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ=="], 251 + 235 252 "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], 236 253 254 + "@types/estree-jsx": ["@types/estree-jsx@1.0.5", "", { "dependencies": { "@types/estree": "*" } }, "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg=="], 255 + 256 + "@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], 257 + 237 258 "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], 238 259 239 260 "@types/json5": ["@types/json5@0.0.29", "", {}, "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="], 261 + 262 + "@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], 263 + 264 + "@types/mdx": ["@types/mdx@2.0.13", "", {}, "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw=="], 265 + 266 + "@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], 240 267 241 268 "@types/node": ["@types/node@20.19.27", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug=="], 242 269 ··· 244 271 245 272 "@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="], 246 273 274 + "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], 275 + 247 276 "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.50.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.50.0", "@typescript-eslint/type-utils": "8.50.0", "@typescript-eslint/utils": "8.50.0", "@typescript-eslint/visitor-keys": "8.50.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.50.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg=="], 248 277 249 278 "@typescript-eslint/parser": ["@typescript-eslint/parser@8.50.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.50.0", "@typescript-eslint/types": "8.50.0", "@typescript-eslint/typescript-estree": "8.50.0", "@typescript-eslint/visitor-keys": "8.50.0", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q=="], ··· 263 292 "@typescript-eslint/utils": ["@typescript-eslint/utils@8.50.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/scope-manager": "8.50.0", "@typescript-eslint/types": "8.50.0", "@typescript-eslint/typescript-estree": "8.50.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-87KgUXET09CRjGCi2Ejxy3PULXna63/bMYv72tCAlDJC3Yqwln0HiFJ3VJMst2+mEtNtZu5oFvX4qJGjKsnAgg=="], 264 293 265 294 "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.50.0", "", { "dependencies": { "@typescript-eslint/types": "8.50.0", "eslint-visitor-keys": "^4.2.1" } }, "sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q=="], 295 + 296 + "@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="], 266 297 267 298 "@unrs/resolver-binding-android-arm-eabi": ["@unrs/resolver-binding-android-arm-eabi@1.11.1", "", { "os": "android", "cpu": "arm" }, "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw=="], 268 299 ··· 332 363 333 364 "ast-types-flow": ["ast-types-flow@0.0.8", "", {}, "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ=="], 334 365 366 + "astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="], 367 + 335 368 "async-function": ["async-function@1.0.0", "", {}, "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA=="], 336 369 337 370 "available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="], ··· 341 374 "axe-core": ["axe-core@4.11.0", "", {}, "sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ=="], 342 375 343 376 "axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="], 377 + 378 + "bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], 344 379 345 380 "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], 346 381 ··· 362 397 363 398 "caniuse-lite": ["caniuse-lite@1.0.30001761", "", {}, "sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g=="], 364 399 400 + "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], 401 + 365 402 "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], 403 + 404 + "character-entities": ["character-entities@2.0.2", "", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="], 405 + 406 + "character-entities-html4": ["character-entities-html4@2.1.0", "", {}, "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="], 407 + 408 + "character-entities-legacy": ["character-entities-legacy@3.0.0", "", {}, "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="], 409 + 410 + "character-reference-invalid": ["character-reference-invalid@2.0.1", "", {}, "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="], 366 411 367 412 "client-only": ["client-only@0.0.1", "", {}, "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="], 368 413 414 + "collapse-white-space": ["collapse-white-space@2.1.0", "", {}, "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw=="], 415 + 369 416 "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], 370 417 371 418 "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], 419 + 420 + "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], 372 421 373 422 "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], 374 423 ··· 388 437 389 438 "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], 390 439 440 + "decode-named-character-reference": ["decode-named-character-reference@1.2.0", "", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q=="], 441 + 391 442 "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], 392 443 393 444 "define-data-property": ["define-data-property@1.1.4", "", { "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "gopd": "^1.0.1" } }, "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A=="], 394 445 395 446 "define-properties": ["define-properties@1.2.1", "", { "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg=="], 396 447 448 + "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], 449 + 397 450 "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], 398 451 452 + "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], 453 + 399 454 "doctrine": ["doctrine@2.1.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="], 400 455 401 456 "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], ··· 421 476 "es-shim-unscopables": ["es-shim-unscopables@1.1.0", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw=="], 422 477 423 478 "es-to-primitive": ["es-to-primitive@1.3.0", "", { "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", "is-symbol": "^1.0.4" } }, "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g=="], 479 + 480 + "esast-util-from-estree": ["esast-util-from-estree@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-visit": "^2.0.0", "unist-util-position-from-estree": "^2.0.0" } }, "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ=="], 481 + 482 + "esast-util-from-js": ["esast-util-from-js@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "acorn": "^8.0.0", "esast-util-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw=="], 424 483 425 484 "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], 426 485 ··· 456 515 457 516 "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], 458 517 518 + "estree-util-attach-comments": ["estree-util-attach-comments@3.0.0", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw=="], 519 + 520 + "estree-util-build-jsx": ["estree-util-build-jsx@3.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-walker": "^3.0.0" } }, "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ=="], 521 + 522 + "estree-util-is-identifier-name": ["estree-util-is-identifier-name@3.0.0", "", {}, "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg=="], 523 + 524 + "estree-util-scope": ["estree-util-scope@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0" } }, "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ=="], 525 + 526 + "estree-util-to-js": ["estree-util-to-js@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "astring": "^1.8.0", "source-map": "^0.7.0" } }, "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg=="], 527 + 528 + "estree-util-visit": ["estree-util-visit@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^3.0.0" } }, "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww=="], 529 + 530 + "estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], 531 + 459 532 "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], 533 + 534 + "extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="], 460 535 461 536 "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], 462 537 ··· 467 542 "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], 468 543 469 544 "fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="], 545 + 546 + "fault": ["fault@2.0.1", "", { "dependencies": { "format": "^0.2.0" } }, "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ=="], 470 547 471 548 "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" } }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], 472 549 ··· 482 559 483 560 "for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="], 484 561 562 + "format": ["format@0.2.2", "", {}, "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww=="], 563 + 485 564 "framer-motion": ["framer-motion@12.23.26", "", { "dependencies": { "motion-dom": "^12.23.23", "motion-utils": "^12.23.6", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid"] }, "sha512-cPcIhgR42xBn1Uj+PzOyheMtZ73H927+uWPDVhUMqxy8UHt6Okavb6xIz9J/phFUHUj0OncR6UvMfJTXoc/LKA=="], 486 565 487 566 "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], ··· 501 580 "get-symbol-description": ["get-symbol-description@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6" } }, "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg=="], 502 581 503 582 "get-tsconfig": ["get-tsconfig@4.13.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ=="], 583 + 584 + "github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="], 504 585 505 586 "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], 506 587 ··· 526 607 527 608 "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], 528 609 610 + "hast-util-heading-rank": ["hast-util-heading-rank@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA=="], 611 + 612 + "hast-util-to-estree": ["hast-util-to-estree@3.1.3", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-attach-comments": "^3.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w=="], 613 + 614 + "hast-util-to-jsx-runtime": ["hast-util-to-jsx-runtime@2.3.6", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "vfile-message": "^4.0.0" } }, "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg=="], 615 + 616 + "hast-util-to-string": ["hast-util-to-string@3.0.1", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A=="], 617 + 618 + "hast-util-whitespace": ["hast-util-whitespace@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="], 619 + 529 620 "hermes-estree": ["hermes-estree@0.25.1", "", {}, "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw=="], 530 621 531 622 "hermes-parser": ["hermes-parser@0.25.1", "", { "dependencies": { "hermes-estree": "0.25.1" } }, "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA=="], ··· 536 627 537 628 "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], 538 629 630 + "inline-style-parser": ["inline-style-parser@0.2.7", "", {}, "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA=="], 631 + 539 632 "internal-slot": ["internal-slot@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw=="], 633 + 634 + "is-alphabetical": ["is-alphabetical@2.0.1", "", {}, "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ=="], 635 + 636 + "is-alphanumerical": ["is-alphanumerical@2.0.1", "", { "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" } }, "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw=="], 540 637 541 638 "is-array-buffer": ["is-array-buffer@3.0.5", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A=="], 542 639 ··· 556 653 557 654 "is-date-object": ["is-date-object@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" } }, "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg=="], 558 655 656 + "is-decimal": ["is-decimal@2.0.1", "", {}, "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="], 657 + 559 658 "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], 560 659 561 660 "is-finalizationregistry": ["is-finalizationregistry@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg=="], ··· 564 663 565 664 "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], 566 665 666 + "is-hexadecimal": ["is-hexadecimal@2.0.1", "", {}, "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="], 667 + 567 668 "is-map": ["is-map@2.0.3", "", {}, "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw=="], 568 669 569 670 "is-negative-zero": ["is-negative-zero@2.0.3", "", {}, "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw=="], ··· 571 672 "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], 572 673 573 674 "is-number-object": ["is-number-object@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw=="], 675 + 676 + "is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], 574 677 575 678 "is-regex": ["is-regex@1.2.1", "", { "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g=="], 576 679 ··· 652 755 653 756 "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], 654 757 758 + "longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="], 759 + 655 760 "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": "cli.js" }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], 656 761 657 762 "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], ··· 660 765 661 766 "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], 662 767 768 + "markdown-extensions": ["markdown-extensions@2.0.0", "", {}, "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q=="], 769 + 770 + "markdown-table": ["markdown-table@3.0.4", "", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="], 771 + 663 772 "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], 664 773 774 + "mdast-util-find-and-replace": ["mdast-util-find-and-replace@3.0.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg=="], 775 + 776 + "mdast-util-from-markdown": ["mdast-util-from-markdown@2.0.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "mdast-util-to-string": "^4.0.0", "micromark": "^4.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA=="], 777 + 778 + "mdast-util-frontmatter": ["mdast-util-frontmatter@2.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "escape-string-regexp": "^5.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-extension-frontmatter": "^2.0.0" } }, "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA=="], 779 + 780 + "mdast-util-gfm": ["mdast-util-gfm@3.1.0", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", "mdast-util-gfm-footnote": "^2.0.0", "mdast-util-gfm-strikethrough": "^2.0.0", "mdast-util-gfm-table": "^2.0.0", "mdast-util-gfm-task-list-item": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ=="], 781 + 782 + "mdast-util-gfm-autolink-literal": ["mdast-util-gfm-autolink-literal@2.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "ccount": "^2.0.0", "devlop": "^1.0.0", "mdast-util-find-and-replace": "^3.0.0", "micromark-util-character": "^2.0.0" } }, "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ=="], 783 + 784 + "mdast-util-gfm-footnote": ["mdast-util-gfm-footnote@2.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0" } }, "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ=="], 785 + 786 + "mdast-util-gfm-strikethrough": ["mdast-util-gfm-strikethrough@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg=="], 787 + 788 + "mdast-util-gfm-table": ["mdast-util-gfm-table@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "markdown-table": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg=="], 789 + 790 + "mdast-util-gfm-task-list-item": ["mdast-util-gfm-task-list-item@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ=="], 791 + 792 + "mdast-util-mdx": ["mdast-util-mdx@3.0.0", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w=="], 793 + 794 + "mdast-util-mdx-expression": ["mdast-util-mdx-expression@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ=="], 795 + 796 + "mdast-util-mdx-jsx": ["mdast-util-mdx-jsx@3.2.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "parse-entities": "^4.0.0", "stringify-entities": "^4.0.0", "unist-util-stringify-position": "^4.0.0", "vfile-message": "^4.0.0" } }, "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q=="], 797 + 798 + "mdast-util-mdxjs-esm": ["mdast-util-mdxjs-esm@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg=="], 799 + 800 + "mdast-util-phrasing": ["mdast-util-phrasing@4.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" } }, "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w=="], 801 + 802 + "mdast-util-to-hast": ["mdast-util-to-hast@13.2.1", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@ungap/structured-clone": "^1.0.0", "devlop": "^1.0.0", "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA=="], 803 + 804 + "mdast-util-to-markdown": ["mdast-util-to-markdown@2.1.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "longest-streak": "^3.0.0", "mdast-util-phrasing": "^4.0.0", "mdast-util-to-string": "^4.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "unist-util-visit": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA=="], 805 + 806 + "mdast-util-to-string": ["mdast-util-to-string@4.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0" } }, "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg=="], 807 + 665 808 "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], 666 809 810 + "micromark": ["micromark@4.0.2", "", { "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA=="], 811 + 812 + "micromark-core-commonmark": ["micromark-core-commonmark@2.0.3", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-destination": "^2.0.0", "micromark-factory-label": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-title": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-html-tag-name": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg=="], 813 + 814 + "micromark-extension-frontmatter": ["micromark-extension-frontmatter@2.0.0", "", { "dependencies": { "fault": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg=="], 815 + 816 + "micromark-extension-gfm": ["micromark-extension-gfm@3.0.0", "", { "dependencies": { "micromark-extension-gfm-autolink-literal": "^2.0.0", "micromark-extension-gfm-footnote": "^2.0.0", "micromark-extension-gfm-strikethrough": "^2.0.0", "micromark-extension-gfm-table": "^2.0.0", "micromark-extension-gfm-tagfilter": "^2.0.0", "micromark-extension-gfm-task-list-item": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w=="], 817 + 818 + "micromark-extension-gfm-autolink-literal": ["micromark-extension-gfm-autolink-literal@2.1.0", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw=="], 819 + 820 + "micromark-extension-gfm-footnote": ["micromark-extension-gfm-footnote@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw=="], 821 + 822 + "micromark-extension-gfm-strikethrough": ["micromark-extension-gfm-strikethrough@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw=="], 823 + 824 + "micromark-extension-gfm-table": ["micromark-extension-gfm-table@2.1.1", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg=="], 825 + 826 + "micromark-extension-gfm-tagfilter": ["micromark-extension-gfm-tagfilter@2.0.0", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg=="], 827 + 828 + "micromark-extension-gfm-task-list-item": ["micromark-extension-gfm-task-list-item@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw=="], 829 + 830 + "micromark-extension-mdx-expression": ["micromark-extension-mdx-expression@3.0.1", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q=="], 831 + 832 + "micromark-extension-mdx-jsx": ["micromark-extension-mdx-jsx@3.0.2", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ=="], 833 + 834 + "micromark-extension-mdx-md": ["micromark-extension-mdx-md@2.0.0", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ=="], 835 + 836 + "micromark-extension-mdxjs": ["micromark-extension-mdxjs@3.0.0", "", { "dependencies": { "acorn": "^8.0.0", "acorn-jsx": "^5.0.0", "micromark-extension-mdx-expression": "^3.0.0", "micromark-extension-mdx-jsx": "^3.0.0", "micromark-extension-mdx-md": "^2.0.0", "micromark-extension-mdxjs-esm": "^3.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ=="], 837 + 838 + "micromark-extension-mdxjs-esm": ["micromark-extension-mdxjs-esm@3.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-position-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A=="], 839 + 840 + "micromark-factory-destination": ["micromark-factory-destination@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA=="], 841 + 842 + "micromark-factory-label": ["micromark-factory-label@2.0.1", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg=="], 843 + 844 + "micromark-factory-mdx-expression": ["micromark-factory-mdx-expression@2.0.3", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-position-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ=="], 845 + 846 + "micromark-factory-space": ["micromark-factory-space@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="], 847 + 848 + "micromark-factory-title": ["micromark-factory-title@2.0.1", "", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw=="], 849 + 850 + "micromark-factory-whitespace": ["micromark-factory-whitespace@2.0.1", "", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ=="], 851 + 852 + "micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], 853 + 854 + "micromark-util-chunked": ["micromark-util-chunked@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA=="], 855 + 856 + "micromark-util-classify-character": ["micromark-util-classify-character@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q=="], 857 + 858 + "micromark-util-combine-extensions": ["micromark-util-combine-extensions@2.0.1", "", { "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg=="], 859 + 860 + "micromark-util-decode-numeric-character-reference": ["micromark-util-decode-numeric-character-reference@2.0.2", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw=="], 861 + 862 + "micromark-util-decode-string": ["micromark-util-decode-string@2.0.1", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ=="], 863 + 864 + "micromark-util-encode": ["micromark-util-encode@2.0.1", "", {}, "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="], 865 + 866 + "micromark-util-events-to-acorn": ["micromark-util-events-to-acorn@2.0.3", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "estree-util-visit": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg=="], 867 + 868 + "micromark-util-html-tag-name": ["micromark-util-html-tag-name@2.0.1", "", {}, "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA=="], 869 + 870 + "micromark-util-normalize-identifier": ["micromark-util-normalize-identifier@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q=="], 871 + 872 + "micromark-util-resolve-all": ["micromark-util-resolve-all@2.0.1", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg=="], 873 + 874 + "micromark-util-sanitize-uri": ["micromark-util-sanitize-uri@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ=="], 875 + 876 + "micromark-util-subtokenize": ["micromark-util-subtokenize@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA=="], 877 + 878 + "micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], 879 + 880 + "micromark-util-types": ["micromark-util-types@2.0.2", "", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="], 881 + 667 882 "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], 668 883 669 884 "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], ··· 716 931 717 932 "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], 718 933 934 + "parse-entities": ["parse-entities@4.0.2", "", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="], 935 + 719 936 "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], 720 937 721 938 "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], ··· 734 951 735 952 "prop-types": ["prop-types@15.8.1", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="], 736 953 954 + "property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="], 955 + 737 956 "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], 738 957 739 958 "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], ··· 746 965 747 966 "react-progressive-blur": ["react-progressive-blur@1.0.6", "", { "dependencies": { "react-progressive-blur": "^1.0.0" }, "peerDependencies": { "react": ">=17.0.0", "react-dom": ">=17.0.0" } }, "sha512-lsRT4UPTXZUVb/eLcST+AtozqqpEqyyUo+UCgSUr8VK9AzlX7YTTAS+QEIMSllSjWzo40EDs3nGnqPOdzX6YKA=="], 748 967 968 + "recma-build-jsx": ["recma-build-jsx@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-build-jsx": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew=="], 969 + 970 + "recma-jsx": ["recma-jsx@1.0.1", "", { "dependencies": { "acorn-jsx": "^5.0.0", "estree-util-to-js": "^2.0.0", "recma-parse": "^1.0.0", "recma-stringify": "^1.0.0", "unified": "^11.0.0" }, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w=="], 971 + 972 + "recma-parse": ["recma-parse@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "esast-util-from-js": "^2.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ=="], 973 + 974 + "recma-stringify": ["recma-stringify@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-to-js": "^2.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g=="], 975 + 749 976 "reflect.getprototypeof": ["reflect.getprototypeof@1.0.10", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" } }, "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw=="], 750 977 751 978 "regexp.prototype.flags": ["regexp.prototype.flags@1.5.4", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", "get-proto": "^1.0.1", "gopd": "^1.2.0", "set-function-name": "^2.0.2" } }, "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA=="], 752 979 980 + "rehype-recma": ["rehype-recma@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "hast-util-to-estree": "^3.0.0" } }, "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw=="], 981 + 982 + "rehype-slug": ["rehype-slug@6.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "github-slugger": "^2.0.0", "hast-util-heading-rank": "^3.0.0", "hast-util-to-string": "^3.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A=="], 983 + 984 + "remark-frontmatter": ["remark-frontmatter@5.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-frontmatter": "^2.0.0", "micromark-extension-frontmatter": "^2.0.0", "unified": "^11.0.0" } }, "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ=="], 985 + 986 + "remark-gfm": ["remark-gfm@4.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg=="], 987 + 988 + "remark-mdx": ["remark-mdx@3.1.1", "", { "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" } }, "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg=="], 989 + 990 + "remark-parse": ["remark-parse@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "micromark-util-types": "^2.0.0", "unified": "^11.0.0" } }, "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA=="], 991 + 992 + "remark-rehype": ["remark-rehype@11.1.2", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "mdast-util-to-hast": "^13.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw=="], 993 + 994 + "remark-stringify": ["remark-stringify@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", "unified": "^11.0.0" } }, "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw=="], 995 + 753 996 "resolve": ["resolve@1.22.11", "", { "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": "bin/resolve" }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="], 754 997 755 998 "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], ··· 790 1033 791 1034 "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], 792 1035 1036 + "source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], 1037 + 793 1038 "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], 1039 + 1040 + "space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], 794 1041 795 1042 "stable-hash": ["stable-hash@0.0.5", "", {}, "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA=="], 796 1043 ··· 808 1055 809 1056 "string.prototype.trimstart": ["string.prototype.trimstart@1.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg=="], 810 1057 1058 + "stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="], 1059 + 811 1060 "strip-bom": ["strip-bom@3.0.0", "", {}, "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="], 812 1061 813 1062 "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], 814 1063 1064 + "style-to-js": ["style-to-js@1.1.21", "", { "dependencies": { "style-to-object": "1.0.14" } }, "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ=="], 1065 + 1066 + "style-to-object": ["style-to-object@1.0.14", "", { "dependencies": { "inline-style-parser": "0.2.7" } }, "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw=="], 1067 + 815 1068 "styled-jsx": ["styled-jsx@5.1.6", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" } }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="], 816 1069 817 1070 "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], ··· 827 1080 "tlds": ["tlds@1.261.0", "", { "bin": "bin.js" }, "sha512-QXqwfEl9ddlGBaRFXIvNKK6OhipSiLXuRuLJX5DErz0o0Q0rYxulWLdFryTkV5PkdZct5iMInwYEGe/eR++1AA=="], 828 1081 829 1082 "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], 1083 + 1084 + "trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="], 1085 + 1086 + "trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], 830 1087 831 1088 "ts-api-utils": ["ts-api-utils@2.1.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ=="], 832 1089 ··· 856 1113 857 1114 "unicode-segmenter": ["unicode-segmenter@0.14.4", "", {}, "sha512-pR5VCiCrLrKOL6FRW61jnk9+wyMtKKowq+jyFY9oc6uHbWKhDL4yVRiI4YZPksGMK72Pahh8m0cn/0JvbDDyJg=="], 858 1115 1116 + "unified": ["unified@11.0.5", "", { "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", "devlop": "^1.0.0", "extend": "^3.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^6.0.0" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], 1117 + 1118 + "unist-util-is": ["unist-util-is@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g=="], 1119 + 1120 + "unist-util-position": ["unist-util-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="], 1121 + 1122 + "unist-util-position-from-estree": ["unist-util-position-from-estree@2.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ=="], 1123 + 1124 + "unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="], 1125 + 1126 + "unist-util-visit": ["unist-util-visit@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="], 1127 + 1128 + "unist-util-visit-parents": ["unist-util-visit-parents@6.0.2", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ=="], 1129 + 859 1130 "unrs-resolver": ["unrs-resolver@1.11.1", "", { "dependencies": { "napi-postinstall": "^0.3.0" }, "optionalDependencies": { "@unrs/resolver-binding-android-arm-eabi": "1.11.1", "@unrs/resolver-binding-android-arm64": "1.11.1", "@unrs/resolver-binding-darwin-arm64": "1.11.1", "@unrs/resolver-binding-darwin-x64": "1.11.1", "@unrs/resolver-binding-freebsd-x64": "1.11.1", "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", "@unrs/resolver-binding-linux-x64-musl": "1.11.1", "@unrs/resolver-binding-wasm32-wasi": "1.11.1", "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" } }, "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg=="], 860 1131 861 1132 "update-browserslist-db": ["update-browserslist-db@1.2.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": "cli.js" }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="], 862 1133 863 1134 "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], 1135 + 1136 + "vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="], 1137 + 1138 + "vfile-message": ["vfile-message@4.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="], 864 1139 865 1140 "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], 866 1141 ··· 882 1157 883 1158 "zod-validation-error": ["zod-validation-error@4.0.2", "", { "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } }, "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ=="], 884 1159 885 - "@atproto/common-web/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], 886 - 887 - "@atproto/lexicon/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], 888 - 889 - "@atproto/xrpc/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], 1160 + "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], 890 1161 891 1162 "@babel/core/json5": ["json5@2.2.3", "", { "bin": "lib/cli.js" }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], 892 1163 ··· 914 1185 915 1186 "is-bun-module/semver": ["semver@7.7.3", "", { "bin": "bin/semver.js" }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 916 1187 1188 + "mdast-util-find-and-replace/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], 1189 + 1190 + "mdast-util-frontmatter/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], 1191 + 917 1192 "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], 918 1193 919 1194 "next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], 1195 + 1196 + "parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], 920 1197 921 1198 "sharp/semver": ["semver@7.7.3", "", { "bin": "bin/semver.js" }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 922 1199
+41
content/docs/faq.mdx
··· 1 + --- 2 + title: Frequently Asked Questions 3 + description: Common questions about Standard.site and implementing the lexicons. 4 + date: 2026-02-10 5 + --- 6 + 7 + import { StandardSite } from '@/app/components/docs' 8 + 9 + # Frequently Asked Questions 10 + 11 + Common questions about <StandardSite /> and implementing the lexicons. 12 + 13 + ## General 14 + 15 + ### What is Standard.site? 16 + 17 + <StandardSite /> is a community-driven initiative to create shared lexicon schemas for long-form publishing on AT Protocol. It enables interoperability between different publishing platforms. 18 + 19 + ### Who created Standard.site? 20 + 21 + <StandardSite /> emerged from conversations between developers building long-form platforms on AT Protocol. It's maintained by the community and grows as builders identify shared needs. 22 + 23 + ## Technical 24 + 25 + ### Do I need to use all the lexicons? 26 + 27 + No. Applications can implement just the lexicons that make sense for their use case. The schemas are designed to work independently while supporting richer integrations when combined. 28 + 29 + ### Can I extend the schemas? 30 + 31 + The standard focuses on shared metadata properties. Applications are free to add additional properties, though they may not be understood by other platforms. 32 + 33 + ## Contributing 34 + 35 + ### How can I contribute? 36 + 37 + <StandardSite /> is developed in the open. Join the conversation on Bluesky or [Tangled](https://tangled.org/standard.site) to propose changes or additions. 38 + 39 + ### How are changes decided? 40 + 41 + Changes are discussed openly in the community. The goal is to reach consensus among builders who are actively implementing the standard.
+49
content/docs/implementations.mdx
··· 1 + --- 2 + title: Implementations 3 + description: Projects and tools using Standard.site lexicons to build interoperable platforms on AT Protocol. 4 + date: 2026-02-10 5 + --- 6 + 7 + import { LinkCard } from '@/app/components/docs' 8 + 9 + import { StandardSite } from '@/app/components/docs' 10 + 11 + # Implementations 12 + 13 + Projects and tools using <StandardSite /> lexicons to build interoperable platforms on AT Protocol. 14 + 15 + ## Development Tools 16 + 17 + <LinkCard url="https://site-validator.fly.dev" /> 18 + 19 + ## Migration Tools 20 + 21 + <LinkCard url="https://sequoia.pub/blog/introducing-sequoia/" /> 22 + 23 + ## Indexes & Discovery 24 + 25 + <LinkCard url="https://read.pckt.blog" /> 26 + 27 + <LinkCard url="https://docs.surf" /> 28 + 29 + <LinkCard url="https://standard-search.octet-stream.net/" /> 30 + 31 + ## Building Your Own 32 + 33 + Building a tool or platform using <StandardSite /> lexicons? We'd love to hear about it! <StandardSite /> is a community-driven initiative, and new implementations help grow the ecosystem. 34 + 35 + ### What to Build 36 + 37 + Some ideas for new implementations: 38 + 39 + - **RSS bridges**: Convert <StandardSite /> records to RSS/Atom feeds 40 + - **Static site generators**: Export <StandardSite /> content to static HTML 41 + - **Mobile readers**: Native mobile apps for reading <StandardSite /> content 42 + - **Import tools**: Import content from existing platforms to <StandardSite /> 43 + - **Content management**: Editors for creating <StandardSite /> records 44 + 45 + ## Related 46 + 47 + - [Quick Start](/docs/quick-start) - Start implementing <StandardSite /> 48 + - [Publication lexicon](/docs/lexicons/publication) - Understand publication schemas 49 + - [Document lexicon](/docs/lexicons/document) - Understand document schemas
+44
content/docs/introduction.mdx
··· 1 + --- 2 + title: Introduction 3 + description: A brief introduction into what the Standard.site lexicon is, what it's used for, and how to implement it. 4 + date: 2026-02-10 5 + --- 6 + 7 + import { StandardSite } from '@/app/components/docs' 8 + 9 + # Introduction 10 + 11 + <StandardSite /> lexicons bring long-form writing into the social web by linking blog posts and articles to the AT Protocol. This integration helps make published work easier to share and find, while ensuring authors maintain ownership of their writing in the form of records stored on their Personal Data Server (PDS). 12 + 13 + ## What is Standard.site? 14 + 15 + Our lexicons are built with discovery and connectivity in mind. <StandardSite /> lexicons bridge the gap between writers and the communities they intend to reach. 16 + 17 + We have two main lexicons that are used to create and manage publications and written documents. In addition to these base lexicons, we maintain a handful of supporting lexicons for social features and utility. 18 + 19 + ## Core Lexicons 20 + 21 + ### Publications 22 + 23 + The [`site.standard.publication`](/docs/lexicons/publication) lexicon is a representation of a collection of documents published to the web. It includes important information about a publication including its location on the web, theming information, user preferences, and more. 24 + 25 + ### Documents 26 + 27 + The [`site.standard.document`](/docs/lexicons/document) lexicon provides metadata for individual documents. Including the document's relation to a publication if applicable, a path to the document, and more information like a document's complete contents. 28 + 29 + ### Subscriptions 30 + 31 + The [`site.standard.graph.subscription`](/docs/lexicons/subscription) lexicon tracks relationships between users and publications, enabling follow functionality and personalized content feeds across the AT Protocol network. 32 + 33 + ## Design Philosophy 34 + 35 + There are minimal requirements to use these lexicons, ensuring adoptability is as straightforward as possible. As long as the minimum required properties are included in published records, they will be available for other AT Protocol platforms to consume. 36 + 37 + While <StandardSite /> lexicons are lightweight on their own, they can be expanded with additional properties to fit individual needs if necessary. The existing properties should not be seen as constraints, but rather as starting points. 38 + 39 + ## Next steps 40 + 41 + - Read the [Quick Start](/docs/quick-start) guide to begin implementing 42 + - Explore the [Publication lexicon](/docs/lexicons/publication) schema 43 + - Learn about [Verification](/docs/verification) to link records to a domain 44 + - Check out [Implementations](/docs/implementations) to see tools and platforms using <StandardSite />
+86
content/docs/lexicons/document.mdx
··· 1 + --- 2 + title: Document Lexicon 3 + description: Schema reference for site.standard.document, the lexicon that provides metadata for documents published on the web. 4 + date: 2026-02-10 5 + --- 6 + 7 + import { Table } from '@/app/components/docs' 8 + 9 + # Document Lexicon 10 + 11 + The `site.standard.document` lexicon provides metadata for documents published on the web. 12 + 13 + ## Overview 14 + 15 + Documents may be standalone or associated with a publication. This lexicon can be used to store a document's content and its associated metadata. 16 + 17 + ## Schema 18 + 19 + ### Required Properties 20 + 21 + <Table 22 + headers={['Property', 'Type', 'Description']} 23 + rows={[ 24 + ['site', 'string', <>Points to a publication record <code>at://</code> or a publication url <code>https://</code> for loose documents. Avoid trailing slashes.</>], 25 + ['title', 'string', <>Title of the document. <code>maxLength: 5000</code> <code>maxGraphemes: 500</code></>], 26 + ['publishedAt', 'datetime', 'Timestamp of the documents publish time.'], 27 + ]} 28 + /> 29 + 30 + ### Optional Properties 31 + 32 + <Table 33 + headers={['Property', 'Type', 'Description']} 34 + rows={[ 35 + ['path', 'string', <>Combine with <code>site</code> or publication <code>url</code> to construct a canonical URL to the document. A slash should be included at the beginning of this value.</>], 36 + ['description', 'string', <>A brief description or excerpt from the document. <code>maxLength: 30000</code> <code>maxGraphemes: 3000</code></>], 37 + ['coverImage', 'blob', 'Image to used for thumbnail or cover image. Less than 1MB is size.'], 38 + ['content', 'union', <>Open union used to define the record's content. Each entry must specify a <code>$type</code></>], 39 + ['textContent', 'string', 'Plaintext representation of the documents contents. Should not contain markdown or other formatting.'], 40 + ['bskyPostRef', 'ref', 'Strong reference to a Bluesky post. Useful to keep track of comments off-platform.'], 41 + ['tags', 'array', <>Array of strings used to tag or categorize the document. Avoid prepending tags with hashtags. <code>maxLength: 1280</code> <code>maxGraphemes: 128</code></>], 42 + ['updatedAt', 'datetime', 'Timestamp of the documents last edit.'], 43 + ]} 44 + /> 45 + 46 + ## Example 47 + 48 + ```json 49 + { 50 + "$type": "site.standard.document", 51 + "site": "at://did:plc:abc123/site.standard.publication/3lwafzkjqm25s", 52 + "path": "/blog/getting-started", 53 + "title": "Getting Started with Standard.site", 54 + "description": "Learn how to use Standard.site lexicons in your project", 55 + "coverImage": { 56 + "$type": "blob", 57 + "ref": { 58 + "$link": "bafkreiexample123456789" 59 + }, 60 + "mimeType": "image/jpeg", 61 + "size": 245678 62 + }, 63 + "textContent": "Full text of the article...", 64 + "tags": ["tutorial", "atproto"], 65 + "publishedAt": "2024-01-20T14:30:00.000Z" 66 + } 67 + ``` 68 + 69 + ## Content Format 70 + 71 + The content property is an open union, allowing for extensibility. Each entry must specify a `$type` and may be extended with other lexicons to support additional content formats like Markdown, blocks, or other rich text. 72 + 73 + ## View the Lexicon 74 + 75 + - [View full lexicon schema](https://pdsls.dev/at://did:plc:re3ebnp5v7ffagz6rb6xfei4/com.atproto.lexicon.schema/site.standard.document) 76 + - [Example record](https://pdsls.dev/at://did:plc:revjuqmkvrw6fnkxppqtszpv/site.standard.document/3mbfqhezge25u) 77 + 78 + ## Best Practices 79 + 80 + - While we encourage avoid trailing slashes, some may not implement this in practice. If you are validating records, you should trim trailing slashes for `site` in your codebase. 81 + 82 + ## Related 83 + 84 + - [Publication lexicon](/docs/lexicons/publication) - Collections of documents 85 + - [Verification](/docs/verification) - Link documents to web pages 86 + - [Quick Start](/docs/quick-start) - Implementation guide
+111
content/docs/lexicons/publication.mdx
··· 1 + --- 2 + title: Publication Lexicon 3 + description: Schema reference for site.standard.publication, the lexicon used to describe information about a particular publication. 4 + date: 2026-02-10 5 + --- 6 + 7 + import { Table } from '@/app/components/docs' 8 + 9 + # Publication Lexicon 10 + 11 + The `site.standard.publication` lexicon is used to describe information about a particular publication. 12 + 13 + ## Overview 14 + 15 + A publication represents a collection of documents published to the web. It includes important information about a publication including its location on the web, theming information, user preferences, and more. 16 + 17 + The publication lexicon is not a requirement, but is recommended when publishing collections of related documents. 18 + 19 + ## Schema 20 + 21 + ### Required Properties 22 + 23 + <Table 24 + headers={['Property', 'Type', 'Description']} 25 + rows={[ 26 + ['url', 'string', 'Base url for the publication. (ex: https://standard.site). This value will be combined with the document path to construct a full URL for the document. Avoid trailing slashes.'], 27 + ['name', 'string', <>Name of the publication. <code>maxLength: 5000</code> <code>maxGraphemes: 500</code></>], 28 + ]} 29 + /> 30 + 31 + ### Optional Properties 32 + 33 + <Table 34 + headers={['Property', 'Type', 'Description']} 35 + rows={[ 36 + ['icon', 'blob', 'Square image to identify the publication. Should be at least 256x256.'], 37 + ['description', 'string', <>Brief description of the publication. <code>maxLength: 30000</code> <code>maxGraphemes: 3000</code></>], 38 + ['basicTheme', 'ref', <>Simplified theme for tools and apps to utilize when displaying content. (ref → <a href="/docs/lexicons/theme">site.standard.theme.basic</a>)</>], 39 + ['preferences', 'object', 'Platform-specific preferences for the publication, including discovery and visibility settings.'], 40 + ['preferences.showInDiscover', 'boolean', 'Decides whether the publication should appear in discovery feeds.'], 41 + ]} 42 + /> 43 + 44 + ## Example 45 + 46 + ```json 47 + { 48 + "$type": "site.standard.publication", 49 + "url": "https://standard.site", 50 + "icon": { 51 + "$type": "blob", 52 + "ref": { 53 + "$link": "bafkreiexample123456789" 54 + }, 55 + "mimeType": "image/png", 56 + "size": 12345 57 + }, 58 + "name": "Standard.site Blog", 59 + "description": "Documentation and updates about Standard.site lexicons", 60 + "basicTheme": { 61 + "$type": "site.standard.theme.basic", 62 + "background": { 63 + "$type": "site.standard.theme.color#rgb", 64 + "r": 255, 65 + "g": 255, 66 + "b": 255 67 + }, 68 + "foreground": { 69 + "$type": "site.standard.theme.color#rgb", 70 + "r": 31, 71 + "g": 41, 72 + "b": 55 73 + }, 74 + "accent": { 75 + "$type": "site.standard.theme.color#rgb", 76 + "r": 59, 77 + "g": 130, 78 + "b": 246 79 + }, 80 + "accentForeground": { 81 + "$type": "site.standard.theme.color#rgb", 82 + "r": 255, 83 + "g": 255, 84 + "b": 255 85 + } 86 + }, 87 + "preferences": { 88 + "showInDiscover": true 89 + } 90 + } 91 + ``` 92 + 93 + ## View the Lexicon 94 + 95 + - [View full lexicon schema](https://pdsls.dev/at://did:plc:re3ebnp5v7ffagz6rb6xfei4/com.atproto.lexicon.schema/site.standard.publication) 96 + - [Example record](https://pdsls.dev/at://did:plc:revjuqmkvrw6fnkxppqtszpv/site.standard.publication/3lwafzkjqm25s) 97 + 98 + ## Extensibility 99 + 100 + Lexicons are extendable. Additional properties may be added to better suit the needs of a project. 101 + 102 + ## Best Practices 103 + 104 + - While we encourage avoid trailing slashes, some may not implement this in practice. If you are validating records, you should trim trailing slashes for `url` in your codebase. 105 + 106 + ## Related 107 + 108 + - [Document lexicon](/docs/lexicons/document) - Individual documents within publications 109 + - [Theme lexicon](/docs/lexicons/theme) - Publication theming 110 + - [Verification](/docs/verification) - Link publications to a domain 111 + - [Quick Start](/docs/quick-start) - Implementation guide
+46
content/docs/lexicons/subscription.mdx
··· 1 + --- 2 + title: Subscription Lexicon 3 + description: Schema reference for site.standard.graph.subscription, the lexicon used to tracks relationships between users and publications. 4 + date: 2026-02-10 5 + --- 6 + 7 + import { Table } from '@/app/components/docs' 8 + 9 + # Subscription Lexicon 10 + 11 + The `site.standard.graph.subscription` lexicon tracks relationships between users and publications. 12 + 13 + ## Overview 14 + 15 + Subscriptions enable users to follow publications and receive updates about new content. They represent the social connection between readers and the publications they're interested in. 16 + 17 + ## Schema 18 + 19 + ### Required Properties 20 + 21 + <Table 22 + headers={['Property', 'Type', 'Description']} 23 + rows={[ 24 + ['publication', 'at-uri', 'AT-URI reference to the publication record being subscribed to (ex: at://did:plc:abc123/site.standard.publication/xyz789)'], 25 + ]} 26 + /> 27 + 28 + ## Example 29 + 30 + ```json 31 + { 32 + "$type": "site.standard.graph.subscription", 33 + "publication": "at://did:plc:abc123/site.standard.publication/3lwafzkjqm25s" 34 + } 35 + ``` 36 + 37 + ## View the Lexicon 38 + 39 + - [View full lexicon schema](https://pdsls.dev/at://did:plc:re3ebnp5v7ffagz6rb6xfei4/com.atproto.lexicon.schema/site.standard.graph.subscription) 40 + - [Example record](https://pdsls.dev/at://did:plc:revjuqmkvrw6fnkxppqtszpv/site.standard.graph.subscription/3lz4ynejb4225) 41 + 42 + ## Related 43 + 44 + - [Publication lexicon](/docs/lexicons/publication) - Publications that can be subscribed to 45 + - [Document lexicon](/docs/lexicons/document) - Content from subscribed publications 46 + - [Quick Start](/docs/quick-start) - Implementation guide
+118
content/docs/lexicons/theme.mdx
··· 1 + --- 2 + title: Basic Theme Lexicon 3 + description: Schema reference for site.standard.theme.basic, the lexicon provides a simplified theme definition for publications. 4 + date: 2026-02-10 5 + --- 6 + 7 + import { Table } from '@/app/components/docs' 8 + 9 + # Theme Lexicon 10 + 11 + The `site.standard.theme.basic` lexicon provides a simplified theme definition for publications, enabling basic color customization for content display across different platforms and applications. 12 + 13 + ## Overview 14 + 15 + This lexicon ensures publications maintain their visual identity across different reading applications and platforms by defining core colors for content display. 16 + 17 + ## Schema 18 + 19 + ### Required Properties 20 + 21 + <Table 22 + headers={['Property', 'Type', 'Description']} 23 + rows={[ 24 + ['background', 'ref', 'Color used for content background (ref → site.standard.theme.color#rgb)'], 25 + ['foreground', 'ref', 'Color used for content text (ref → site.standard.theme.color#rgb)'], 26 + ['accent', 'ref', 'Color used for links and button backgrounds (ref → site.standard.theme.color#rgb)'], 27 + ['accentForeground', 'ref', 'Color used for button text (ref → site.standard.theme.color#rgb)'], 28 + ]} 29 + /> 30 + 31 + ## Color Format 32 + 33 + Colors are defined using the `site.standard.theme.color#rgb` type from the `site.standard.theme.color` lexicon. 34 + 35 + ### RGB Color Type 36 + 37 + Each color is an object with three required integer properties: 38 + 39 + <Table 40 + headers={['Property', 'Type', 'Range', 'Description']} 41 + rows={[ 42 + ['r', 'integer', '0-255', 'Red channel value'], 43 + ['g', 'integer', '0-255', 'Green channel value'], 44 + ['b', 'integer', '0-255', 'Blue channel value'], 45 + ]} 46 + /> 47 + 48 + ### RGBA Color Type 49 + 50 + The `site.standard.theme.color` lexicon also defines an `rgba` type for colors with transparency: 51 + 52 + <Table 53 + headers={['Property', 'Type', 'Range', 'Description']} 54 + rows={[ 55 + ['r', 'integer', '0-255', 'Red channel value'], 56 + ['g', 'integer', '0-255', 'Green channel value'], 57 + ['b', 'integer', '0-255', 'Blue channel value'], 58 + ['a', 'integer', '0-100', 'Alpha (opacity) value, where 0 is transparent and 100 is opaque'], 59 + ]} 60 + /> 61 + 62 + ### Color Roles 63 + 64 + - **background**: Main surface color for content areas 65 + - **foreground**: Default color for body text and content 66 + - **accent**: Color for interactive elements like links and button backgrounds 67 + - **accentForeground**: Text color used on accent-colored backgrounds (ex: button text) 68 + 69 + ## Usage in Publications 70 + 71 + Include the basic theme in your publication record: 72 + 73 + ```json 74 + { 75 + "$type": "site.standard.publication", 76 + "url": "https://myblog.com", 77 + "name": "My Blog", 78 + "basicTheme": { 79 + "$type": "site.standard.theme.basic", 80 + "background": { 81 + "$type": "site.standard.theme.color#rgb", 82 + "r": 255, 83 + "g": 255, 84 + "b": 255 85 + }, 86 + "foreground": { 87 + "$type": "site.standard.theme.color#rgb", 88 + "r": 31, 89 + "g": 41, 90 + "b": 55 91 + }, 92 + "accent": { 93 + "$type": "site.standard.theme.color#rgb", 94 + "r": 59, 95 + "g": 130, 96 + "b": 246 97 + }, 98 + "accentForeground": { 99 + "$type": "site.standard.theme.color#rgb", 100 + "r": 255, 101 + "g": 255, 102 + "b": 255 103 + } 104 + } 105 + } 106 + ``` 107 + 108 + ## Best Practices 109 + 110 + 2. **Consider readability**: Ensure foreground/background combinations are legible 111 + 3. **Test button colors**: Verify accent/accentForeground pairs have sufficient contrast 112 + 5. **Provide all required properties**: All four color properties are required for a valid theme 113 + 114 + ## Related 115 + 116 + - [Publication lexicon](/docs/lexicons/publication) - Publications can include basicTheme 117 + - [Quick Start](/docs/quick-start) - Implementation guide 118 + - [Implementations](/docs/implementations) - See how platforms use theming
+48
content/docs/permissions.mdx
··· 1 + --- 2 + title: Permissions 3 + description: Standard.site provides a permission set for applications to access publications, documents, and subscriptions. 4 + date: 2026-02-10 5 + --- 6 + 7 + import { Table } from '@/app/components/docs' 8 + import { StandardSite } from '@/app/components/docs' 9 + 10 + # Permissions 11 + 12 + <StandardSite /> provides a permission set for applications to access publications, documents, and subscriptions. 13 + 14 + ## Overview 15 + 16 + Applications that interact with <StandardSite /> records on a user's Personal Data Server (PDS) must request appropriate permissions. Our permission set defines which collections an application can read from and write to. 17 + 18 + ## Full <StandardSite /> Access 19 + 20 + The `site.standard.authFull` permission set provides complete access to all <StandardSite /> features. 21 + 22 + ### Requesting Permissions 23 + 24 + Include `site.standard.authFull` in the OAuth scope when requesting user authorization: 25 + 26 + ``` 27 + include:site.standard.authFull 28 + ``` 29 + 30 + ### Granted Permissions 31 + 32 + This permission set grants access to the following collections: 33 + 34 + <Table 35 + headers={['Collection', 'Access scopes']} 36 + rows={[ 37 + ['site.standard.publication', 'Create, update, and delete publication records'], 38 + ['site.standard.document', 'Create, update, and delete document records'], 39 + ['site.standard.graph.subscription', 'Create, update, and delete subscription records'], 40 + ]} 41 + /> 42 + 43 + ## Related 44 + 45 + - [Quick Start](/docs/quick-start) - Get started implementing <StandardSite /> 46 + - [Publication lexicon](/docs/lexicons/publication) - Understanding publication records 47 + - [Document lexicon](/docs/lexicons/document) - Understanding document records 48 + - [Subscription lexicon](/docs/lexicons/subscription) - Understanding subscription records
+95
content/docs/quick-start.mdx
··· 1 + --- 2 + title: Quick Start 3 + description: The quick start guide to implement Standard.site lexicons in your site, tool or app. 4 + date: 2026-02-10 5 + --- 6 + 7 + import { StandardSite } from '@/app/components/docs' 8 + 9 + # Quick Start 10 + 11 + Get started with <StandardSite /> lexicons. 12 + 13 + ## What You Need 14 + 15 + - An AT Protocol [Identity](https://atproto.com/guides/identity) 16 + - A website or blog (any domain works) 17 + 18 + ## Basic Implementation 19 + 20 + ### 1. Reference the Lexicons 21 + 22 + <StandardSite /> lexicons are published under the `site.standard` namespace. The main lexicons are: 23 + 24 + - [`site.standard.publication`](/docs/lexicons/publication) - Publication metadata 25 + - [`site.standard.document`](/docs/lexicons/document) - Document content and metadata 26 + - [`site.standard.graph.subscription`](/docs/lexicons/subscription) - User-publication relationships 27 + 28 + ### 2. Create a Publication Record 29 + 30 + A publication requires a `url` and `name`: 31 + 32 + ```json 33 + { 34 + "$type": "site.standard.publication", 35 + "url": "https://myblog.com", 36 + "name": "My Blog", 37 + "description": "A personal blog about technology", 38 + "preferences": { 39 + "showInDiscover": true 40 + } 41 + } 42 + ``` 43 + 44 + ### 3. Verify the Publication 45 + 46 + Add a `.well-known` endpoint to the domain: 47 + 48 + ``` 49 + https://myblog.com/.well-known/site.standard.publication 50 + ``` 51 + 52 + This should return the publication's AT-URI: 53 + 54 + ``` 55 + at://did:plc:yourDID/site.standard.publication/rkey 56 + ``` 57 + 58 + ### 4. Create a Document Record 59 + 60 + Documents require `site`, `title`, and `publishedAt`: 61 + 62 + ```json 63 + { 64 + "$type": "site.standard.document", 65 + "site": "at://did:plc:abc123/site.standard.publication/3lwafzkjqm25s", 66 + "title": "My First Post", 67 + "path": "/posts/my-first-post", 68 + "description": "An introduction to my blog", 69 + "publishedAt": "2024-01-20T14:30:00.000Z", 70 + "tags": ["introduction", "blog"], 71 + "textContent": "Full text content here..." 72 + } 73 + ``` 74 + 75 + ### 5. Verify the Document 76 + 77 + Add a `<link>` tag to the document's HTML: 78 + 79 + ```html 80 + <link 81 + rel="site.standard.document" 82 + href="at://did:plc:yourDID/site.standard.document/rkey" 83 + /> 84 + ``` 85 + 86 + ## Extensibility 87 + 88 + While the minimum required properties are straightforward, additional properties can be added as needed. The lexicons are designed to be starting points, not constraints. 89 + 90 + ## Next Steps 91 + 92 + - Learn about [Verification](/docs/verification) in detail 93 + - Explore the [Publication](/docs/lexicons/publication) schema 94 + - Review [Document](/docs/lexicons/document) properties and options 95 + - Check out [Implementations](/docs/implementations) for tools and examples
+78
content/docs/verification.mdx
··· 1 + --- 2 + title: Verification 3 + description: Reference guide to understand how Standard.site records are verified to avoid impersonation or spam. 4 + date: 2026-02-10 5 + --- 6 + 7 + 8 + import { StandardSite } from '@/app/components/docs' 9 + 10 + # Verification 11 + 12 + Since <StandardSite /> records reference domains and web pages, a verifiable way for these resources to point back to their corresponding records is needed. 13 + 14 + ## Overview 15 + 16 + Verification is accomplished using a `.well-known` endpoint for publications, and an HTML `<link>` tag for documents. 17 + 18 + When an application needs to verify a record, it fetches the appropriate verification endpoint and checks that the returned value matches the record's AT-URI. 19 + 20 + A <StandardSite /> record should only be considered "valid" if the author of the material provides an accurate verification endpoint pointing to the record. 21 + 22 + ## Publication Verification 23 + 24 + To verify a publication, add a `.well-known` endpoint to the domain: 25 + 26 + ``` 27 + /.well-known/site.standard.publication 28 + ``` 29 + 30 + The endpoint should return the AT-URI of the publication record: 31 + 32 + ``` 33 + at://did:plc:abc123/site.standard.publication/rkey 34 + ``` 35 + 36 + ### Non-root Publications 37 + 38 + If the publication does not live at the domain root, append the publication path to the endpoint: 39 + 40 + ``` 41 + /.well-known/site.standard.publication/path/to/publication 42 + ``` 43 + 44 + ## Document Verification 45 + 46 + To verify an individual document, include a `<link>` tag in the document's `<head>` that references its AT-URI. 47 + 48 + ### HTML Example 49 + 50 + ```html 51 + <link 52 + rel="site.standard.document" 53 + href="at://did:plc:xyz789/site.standard.document/rkey" 54 + /> 55 + ``` 56 + 57 + This confirms the association between the rendered document and its `site.standard.document` record. 58 + 59 + ## Verification Flow 60 + 61 + 1. An application discovers a <StandardSite /> record 62 + 2. The record contains a `url` (for publications) or `site` + `path` (for documents) 63 + 3. The application fetches the verification endpoint from that URL 64 + 4. The application checks if the returned AT-URI matches the record 65 + 5. If they match, the record is verified 66 + 67 + ## Best Practices 68 + 69 + - Always implement verification for production records 70 + - Use HTTPS for all publication and document URLs 71 + - Keep AT-URIs consistent across records and verification endpoints 72 + - Update verification endpoints when migrating records to a new DID 73 + 74 + ## Related 75 + 76 + - [Publication lexicon](/docs/lexicons/publication) - Understanding publication records 77 + - [Document lexicon](/docs/lexicons/document) - Understanding document records 78 + - [Quick Start](/docs/quick-start) - Implementation guide
+108
mdx-components.tsx
··· 1 + import type { MDXComponents } from 'mdx/types' 2 + import Link from 'next/link' 3 + import { ClickableHeading } from '@/app/components/docs/ClickableHeading' 4 + import { DocsPageMenu } from '@/app/components/docs/DocsPageMenu' 5 + 6 + export function useMDXComponents(components: MDXComponents): MDXComponents { 7 + return { 8 + h1: ({ children }) => ( 9 + <div className="flex items-start justify-between gap-2"> 10 + <ClickableHeading level={1}>{children}</ClickableHeading> 11 + <DocsPageMenu /> 12 + </div> 13 + ), 14 + h2: ({ children }) => ( 15 + <ClickableHeading level={2}>{children}</ClickableHeading> 16 + ), 17 + h3: ({ children }) => ( 18 + <ClickableHeading level={3}>{children}</ClickableHeading> 19 + ), 20 + h4: ({ children }) => ( 21 + <ClickableHeading level={4}>{children}</ClickableHeading> 22 + ), 23 + p: ({ children }) => ( 24 + <p className="text-base sm:text-lg leading-relaxed tracking-tight text-muted mb-4"> 25 + {children} 26 + </p> 27 + ), 28 + a: ({ href, children }) => { 29 + const isInternal = href && (href.startsWith('/') || href.startsWith('#')) 30 + const className = "text-base-content underline underline-offset-2 hover:text-muted transition-colors" 31 + 32 + if (isInternal) { 33 + return ( 34 + <Link href={href} className={className}> 35 + {children} 36 + </Link> 37 + ) 38 + } 39 + 40 + return ( 41 + <a href={href} className={className} target="_blank" rel="noopener noreferrer"> 42 + {children} 43 + </a> 44 + ) 45 + }, 46 + strong: ({ children }) => ( 47 + <strong className="font-medium text-base-content">{children}</strong> 48 + ), 49 + code: ({ children }) => ( 50 + <code className="font-mono text-sm bg-base-200 px-1.5 py-0.5 rounded text-base-content"> 51 + {children} 52 + </code> 53 + ), 54 + pre: ({ children }) => ( 55 + <pre className="font-mono text-sm bg-base-200 border border-border rounded-xl p-4 overflow-x-auto mb-6"> 56 + {children} 57 + </pre> 58 + ), 59 + ul: ({ children }) => ( 60 + <ul className="list-disc list-outside ml-5 text-muted mb-4 space-y-2"> 61 + {children} 62 + </ul> 63 + ), 64 + ol: ({ children }) => ( 65 + <ol className="list-decimal list-outside ml-5 text-muted mb-4 space-y-2"> 66 + {children} 67 + </ol> 68 + ), 69 + li: ({ children }) => ( 70 + <li className="text-base sm:text-lg leading-relaxed tracking-tight"> 71 + {children} 72 + </li> 73 + ), 74 + blockquote: ({ children }) => ( 75 + <blockquote className="border-l-4 border-border pl-4 italic text-muted my-6"> 76 + {children} 77 + </blockquote> 78 + ), 79 + hr: () => <hr className="h-px w-full bg-border my-8 border-0" />, 80 + table: ({ children }) => ( 81 + <div className="overflow-x-auto mb-6"> 82 + <table className="w-full text-base border-collapse"> 83 + {children} 84 + </table> 85 + </div> 86 + ), 87 + thead: ({ children }) => ( 88 + <thead>{children}</thead> 89 + ), 90 + tbody: ({ children }) => ( 91 + <tbody>{children}</tbody> 92 + ), 93 + tr: ({ children }) => ( 94 + <tr>{children}</tr> 95 + ), 96 + th: ({ children }) => ( 97 + <th className="text-left font-medium text-base-content border-b border-border px-3 py-2"> 98 + {children} 99 + </th> 100 + ), 101 + td: ({ children }) => ( 102 + <td className="text-muted border-b border-border px-3 py-2"> 103 + {children} 104 + </td> 105 + ), 106 + ...components, 107 + } 108 + }
+12 -2
next.config.ts
··· 1 1 import type { NextConfig } from "next"; 2 + import createMDX from '@next/mdx'; 2 3 3 4 const nextConfig: NextConfig = { 4 - output: 'export' 5 + output: 'export', 6 + pageExtensions: ['js', 'jsx', 'md', 'mdx', 'ts', 'tsx'], 5 7 }; 6 8 7 - export default nextConfig; 9 + const withMDX = createMDX({ 10 + extension: /\.mdx?$/, 11 + options: { 12 + remarkPlugins: ['remark-frontmatter', 'remark-gfm'], 13 + rehypePlugins: ['rehype-slug'], 14 + }, 15 + }); 16 + 17 + export default withMDX(nextConfig);
+2050 -8
package-lock.json
··· 9 9 "version": "0.1.0", 10 10 "dependencies": { 11 11 "@atproto/api": "^0.18.8", 12 + "@mdx-js/loader": "^3.1.1", 13 + "@mdx-js/react": "^3.1.1", 14 + "@next/mdx": "^16.1.1", 12 15 "lucide-react": "^0.562.0", 13 16 "motion": "^12.23.26", 14 17 "next": "16.1.0", 15 18 "react": "19.2.3", 16 19 "react-dom": "19.2.3", 17 - "react-progressive-blur": "^1.0.6" 20 + "react-progressive-blur": "^1.0.6", 21 + "rehype-slug": "^6.0.0", 22 + "remark-gfm": "^4.0.1" 18 23 }, 19 24 "devDependencies": { 20 25 "@tailwindcss/postcss": "^4", 26 + "@types/mdx": "^2.0.13", 21 27 "@types/node": "^20", 22 28 "@types/react": "^19", 23 29 "@types/react-dom": "^19", ··· 1104 1110 "@jridgewell/sourcemap-codec": "^1.4.14" 1105 1111 } 1106 1112 }, 1113 + "node_modules/@mdx-js/loader": { 1114 + "version": "3.1.1", 1115 + "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-3.1.1.tgz", 1116 + "integrity": "sha512-0TTacJyZ9mDmY+VefuthVshaNIyCGZHJG2fMnGaDttCt8HmjUF7SizlHJpaCDoGnN635nK1wpzfpx/Xx5S4WnQ==", 1117 + "license": "MIT", 1118 + "dependencies": { 1119 + "@mdx-js/mdx": "^3.0.0", 1120 + "source-map": "^0.7.0" 1121 + }, 1122 + "funding": { 1123 + "type": "opencollective", 1124 + "url": "https://opencollective.com/unified" 1125 + }, 1126 + "peerDependencies": { 1127 + "webpack": ">=5" 1128 + }, 1129 + "peerDependenciesMeta": { 1130 + "webpack": { 1131 + "optional": true 1132 + } 1133 + } 1134 + }, 1135 + "node_modules/@mdx-js/mdx": { 1136 + "version": "3.1.1", 1137 + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz", 1138 + "integrity": "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==", 1139 + "license": "MIT", 1140 + "dependencies": { 1141 + "@types/estree": "^1.0.0", 1142 + "@types/estree-jsx": "^1.0.0", 1143 + "@types/hast": "^3.0.0", 1144 + "@types/mdx": "^2.0.0", 1145 + "acorn": "^8.0.0", 1146 + "collapse-white-space": "^2.0.0", 1147 + "devlop": "^1.0.0", 1148 + "estree-util-is-identifier-name": "^3.0.0", 1149 + "estree-util-scope": "^1.0.0", 1150 + "estree-walker": "^3.0.0", 1151 + "hast-util-to-jsx-runtime": "^2.0.0", 1152 + "markdown-extensions": "^2.0.0", 1153 + "recma-build-jsx": "^1.0.0", 1154 + "recma-jsx": "^1.0.0", 1155 + "recma-stringify": "^1.0.0", 1156 + "rehype-recma": "^1.0.0", 1157 + "remark-mdx": "^3.0.0", 1158 + "remark-parse": "^11.0.0", 1159 + "remark-rehype": "^11.0.0", 1160 + "source-map": "^0.7.0", 1161 + "unified": "^11.0.0", 1162 + "unist-util-position-from-estree": "^2.0.0", 1163 + "unist-util-stringify-position": "^4.0.0", 1164 + "unist-util-visit": "^5.0.0", 1165 + "vfile": "^6.0.0" 1166 + }, 1167 + "funding": { 1168 + "type": "opencollective", 1169 + "url": "https://opencollective.com/unified" 1170 + } 1171 + }, 1172 + "node_modules/@mdx-js/react": { 1173 + "version": "3.1.1", 1174 + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.1.tgz", 1175 + "integrity": "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==", 1176 + "license": "MIT", 1177 + "dependencies": { 1178 + "@types/mdx": "^2.0.0" 1179 + }, 1180 + "funding": { 1181 + "type": "opencollective", 1182 + "url": "https://opencollective.com/unified" 1183 + }, 1184 + "peerDependencies": { 1185 + "@types/react": ">=16", 1186 + "react": ">=16" 1187 + } 1188 + }, 1107 1189 "node_modules/@napi-rs/wasm-runtime": { 1108 1190 "version": "0.2.12", 1109 1191 "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", ··· 1131 1213 "license": "MIT", 1132 1214 "dependencies": { 1133 1215 "fast-glob": "3.3.1" 1216 + } 1217 + }, 1218 + "node_modules/@next/mdx": { 1219 + "version": "16.1.6", 1220 + "resolved": "https://registry.npmjs.org/@next/mdx/-/mdx-16.1.6.tgz", 1221 + "integrity": "sha512-PT5JR4WPPYOls7WD6xEqUVVI9HDY8kY7XLQsNYB2lSZk5eJSXWu3ECtIYmfR0hZpx8Sg7BKZYKi2+u5OTSEx0w==", 1222 + "license": "MIT", 1223 + "dependencies": { 1224 + "source-map": "^0.7.0" 1225 + }, 1226 + "peerDependencies": { 1227 + "@mdx-js/loader": ">=0.15.0", 1228 + "@mdx-js/react": ">=0.15.0" 1229 + }, 1230 + "peerDependenciesMeta": { 1231 + "@mdx-js/loader": { 1232 + "optional": true 1233 + }, 1234 + "@mdx-js/react": { 1235 + "optional": true 1236 + } 1134 1237 } 1135 1238 }, 1136 1239 "node_modules/@next/swc-darwin-arm64": { ··· 1607 1710 "tslib": "^2.4.0" 1608 1711 } 1609 1712 }, 1713 + "node_modules/@types/debug": { 1714 + "version": "4.1.12", 1715 + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", 1716 + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", 1717 + "license": "MIT", 1718 + "dependencies": { 1719 + "@types/ms": "*" 1720 + } 1721 + }, 1610 1722 "node_modules/@types/estree": { 1611 1723 "version": "1.0.8", 1612 1724 "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", 1613 1725 "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", 1614 - "dev": true, 1615 1726 "license": "MIT" 1616 1727 }, 1728 + "node_modules/@types/estree-jsx": { 1729 + "version": "1.0.5", 1730 + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", 1731 + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", 1732 + "license": "MIT", 1733 + "dependencies": { 1734 + "@types/estree": "*" 1735 + } 1736 + }, 1737 + "node_modules/@types/hast": { 1738 + "version": "3.0.4", 1739 + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", 1740 + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", 1741 + "license": "MIT", 1742 + "dependencies": { 1743 + "@types/unist": "*" 1744 + } 1745 + }, 1617 1746 "node_modules/@types/json-schema": { 1618 1747 "version": "7.0.15", 1619 1748 "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", ··· 1628 1757 "dev": true, 1629 1758 "license": "MIT" 1630 1759 }, 1760 + "node_modules/@types/mdast": { 1761 + "version": "4.0.4", 1762 + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", 1763 + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", 1764 + "license": "MIT", 1765 + "dependencies": { 1766 + "@types/unist": "*" 1767 + } 1768 + }, 1769 + "node_modules/@types/mdx": { 1770 + "version": "2.0.13", 1771 + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", 1772 + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", 1773 + "license": "MIT" 1774 + }, 1775 + "node_modules/@types/ms": { 1776 + "version": "2.1.0", 1777 + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", 1778 + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", 1779 + "license": "MIT" 1780 + }, 1631 1781 "node_modules/@types/node": { 1632 1782 "version": "20.19.27", 1633 1783 "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.27.tgz", ··· 1642 1792 "version": "19.2.7", 1643 1793 "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", 1644 1794 "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", 1645 - "dev": true, 1646 1795 "license": "MIT", 1647 1796 "dependencies": { 1648 1797 "csstype": "^3.2.2" ··· 1657 1806 "peerDependencies": { 1658 1807 "@types/react": "^19.2.0" 1659 1808 } 1809 + }, 1810 + "node_modules/@types/unist": { 1811 + "version": "3.0.3", 1812 + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", 1813 + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", 1814 + "license": "MIT" 1660 1815 }, 1661 1816 "node_modules/@typescript-eslint/eslint-plugin": { 1662 1817 "version": "8.52.0", ··· 1927 2082 "url": "https://opencollective.com/typescript-eslint" 1928 2083 } 1929 2084 }, 2085 + "node_modules/@ungap/structured-clone": { 2086 + "version": "1.3.0", 2087 + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", 2088 + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", 2089 + "license": "ISC" 2090 + }, 1930 2091 "node_modules/@unrs/resolver-binding-android-arm-eabi": { 1931 2092 "version": "1.11.1", 1932 2093 "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", ··· 2200 2361 "version": "8.15.0", 2201 2362 "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", 2202 2363 "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", 2203 - "dev": true, 2204 2364 "license": "MIT", 2205 2365 "bin": { 2206 2366 "acorn": "bin/acorn" ··· 2213 2373 "version": "5.3.2", 2214 2374 "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 2215 2375 "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 2216 - "dev": true, 2217 2376 "license": "MIT", 2218 2377 "peerDependencies": { 2219 2378 "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" ··· 2435 2594 "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", 2436 2595 "dev": true, 2437 2596 "license": "MIT" 2597 + }, 2598 + "node_modules/astring": { 2599 + "version": "1.9.0", 2600 + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", 2601 + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", 2602 + "license": "MIT", 2603 + "bin": { 2604 + "astring": "bin/astring" 2605 + } 2438 2606 }, 2439 2607 "node_modules/async-function": { 2440 2608 "version": "1.0.0", ··· 2488 2656 "node": ">= 0.4" 2489 2657 } 2490 2658 }, 2659 + "node_modules/bail": { 2660 + "version": "2.0.2", 2661 + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", 2662 + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", 2663 + "license": "MIT", 2664 + "funding": { 2665 + "type": "github", 2666 + "url": "https://github.com/sponsors/wooorm" 2667 + } 2668 + }, 2491 2669 "node_modules/balanced-match": { 2492 2670 "version": "1.0.2", 2493 2671 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", ··· 2642 2820 ], 2643 2821 "license": "CC-BY-4.0" 2644 2822 }, 2823 + "node_modules/ccount": { 2824 + "version": "2.0.1", 2825 + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", 2826 + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", 2827 + "license": "MIT", 2828 + "funding": { 2829 + "type": "github", 2830 + "url": "https://github.com/sponsors/wooorm" 2831 + } 2832 + }, 2645 2833 "node_modules/chalk": { 2646 2834 "version": "4.1.2", 2647 2835 "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", ··· 2659 2847 "url": "https://github.com/chalk/chalk?sponsor=1" 2660 2848 } 2661 2849 }, 2850 + "node_modules/character-entities": { 2851 + "version": "2.0.2", 2852 + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", 2853 + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", 2854 + "license": "MIT", 2855 + "funding": { 2856 + "type": "github", 2857 + "url": "https://github.com/sponsors/wooorm" 2858 + } 2859 + }, 2860 + "node_modules/character-entities-html4": { 2861 + "version": "2.1.0", 2862 + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", 2863 + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", 2864 + "license": "MIT", 2865 + "funding": { 2866 + "type": "github", 2867 + "url": "https://github.com/sponsors/wooorm" 2868 + } 2869 + }, 2870 + "node_modules/character-entities-legacy": { 2871 + "version": "3.0.0", 2872 + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", 2873 + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", 2874 + "license": "MIT", 2875 + "funding": { 2876 + "type": "github", 2877 + "url": "https://github.com/sponsors/wooorm" 2878 + } 2879 + }, 2880 + "node_modules/character-reference-invalid": { 2881 + "version": "2.0.1", 2882 + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", 2883 + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", 2884 + "license": "MIT", 2885 + "funding": { 2886 + "type": "github", 2887 + "url": "https://github.com/sponsors/wooorm" 2888 + } 2889 + }, 2662 2890 "node_modules/client-only": { 2663 2891 "version": "0.0.1", 2664 2892 "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", 2665 2893 "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", 2666 2894 "license": "MIT" 2667 2895 }, 2896 + "node_modules/collapse-white-space": { 2897 + "version": "2.1.0", 2898 + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", 2899 + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", 2900 + "license": "MIT", 2901 + "funding": { 2902 + "type": "github", 2903 + "url": "https://github.com/sponsors/wooorm" 2904 + } 2905 + }, 2668 2906 "node_modules/color-convert": { 2669 2907 "version": "2.0.1", 2670 2908 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", ··· 2684 2922 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2685 2923 "dev": true, 2686 2924 "license": "MIT" 2925 + }, 2926 + "node_modules/comma-separated-tokens": { 2927 + "version": "2.0.3", 2928 + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", 2929 + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", 2930 + "license": "MIT", 2931 + "funding": { 2932 + "type": "github", 2933 + "url": "https://github.com/sponsors/wooorm" 2934 + } 2687 2935 }, 2688 2936 "node_modules/concat-map": { 2689 2937 "version": "0.0.1", ··· 2718 2966 "version": "3.2.3", 2719 2967 "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", 2720 2968 "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", 2721 - "dev": true, 2722 2969 "license": "MIT" 2723 2970 }, 2724 2971 "node_modules/damerau-levenshtein": { ··· 2786 3033 "version": "4.4.3", 2787 3034 "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", 2788 3035 "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", 2789 - "dev": true, 2790 3036 "license": "MIT", 2791 3037 "dependencies": { 2792 3038 "ms": "^2.1.3" ··· 2800 3046 } 2801 3047 } 2802 3048 }, 3049 + "node_modules/decode-named-character-reference": { 3050 + "version": "1.3.0", 3051 + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", 3052 + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", 3053 + "license": "MIT", 3054 + "dependencies": { 3055 + "character-entities": "^2.0.0" 3056 + }, 3057 + "funding": { 3058 + "type": "github", 3059 + "url": "https://github.com/sponsors/wooorm" 3060 + } 3061 + }, 2803 3062 "node_modules/deep-is": { 2804 3063 "version": "0.1.4", 2805 3064 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", ··· 2843 3102 "url": "https://github.com/sponsors/ljharb" 2844 3103 } 2845 3104 }, 3105 + "node_modules/dequal": { 3106 + "version": "2.0.3", 3107 + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", 3108 + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", 3109 + "license": "MIT", 3110 + "engines": { 3111 + "node": ">=6" 3112 + } 3113 + }, 2846 3114 "node_modules/detect-libc": { 2847 3115 "version": "2.1.2", 2848 3116 "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", ··· 2851 3119 "license": "Apache-2.0", 2852 3120 "engines": { 2853 3121 "node": ">=8" 3122 + } 3123 + }, 3124 + "node_modules/devlop": { 3125 + "version": "1.1.0", 3126 + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", 3127 + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", 3128 + "license": "MIT", 3129 + "dependencies": { 3130 + "dequal": "^2.0.0" 3131 + }, 3132 + "funding": { 3133 + "type": "github", 3134 + "url": "https://github.com/sponsors/wooorm" 2854 3135 } 2855 3136 }, 2856 3137 "node_modules/doctrine": { ··· 3086 3367 "url": "https://github.com/sponsors/ljharb" 3087 3368 } 3088 3369 }, 3370 + "node_modules/esast-util-from-estree": { 3371 + "version": "2.0.0", 3372 + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", 3373 + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", 3374 + "license": "MIT", 3375 + "dependencies": { 3376 + "@types/estree-jsx": "^1.0.0", 3377 + "devlop": "^1.0.0", 3378 + "estree-util-visit": "^2.0.0", 3379 + "unist-util-position-from-estree": "^2.0.0" 3380 + }, 3381 + "funding": { 3382 + "type": "opencollective", 3383 + "url": "https://opencollective.com/unified" 3384 + } 3385 + }, 3386 + "node_modules/esast-util-from-js": { 3387 + "version": "2.0.1", 3388 + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", 3389 + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", 3390 + "license": "MIT", 3391 + "dependencies": { 3392 + "@types/estree-jsx": "^1.0.0", 3393 + "acorn": "^8.0.0", 3394 + "esast-util-from-estree": "^2.0.0", 3395 + "vfile-message": "^4.0.0" 3396 + }, 3397 + "funding": { 3398 + "type": "opencollective", 3399 + "url": "https://opencollective.com/unified" 3400 + } 3401 + }, 3089 3402 "node_modules/escalade": { 3090 3403 "version": "3.2.0", 3091 3404 "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", ··· 3523 3836 "node": ">=4.0" 3524 3837 } 3525 3838 }, 3839 + "node_modules/estree-util-attach-comments": { 3840 + "version": "3.0.0", 3841 + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", 3842 + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", 3843 + "license": "MIT", 3844 + "dependencies": { 3845 + "@types/estree": "^1.0.0" 3846 + }, 3847 + "funding": { 3848 + "type": "opencollective", 3849 + "url": "https://opencollective.com/unified" 3850 + } 3851 + }, 3852 + "node_modules/estree-util-build-jsx": { 3853 + "version": "3.0.1", 3854 + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", 3855 + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", 3856 + "license": "MIT", 3857 + "dependencies": { 3858 + "@types/estree-jsx": "^1.0.0", 3859 + "devlop": "^1.0.0", 3860 + "estree-util-is-identifier-name": "^3.0.0", 3861 + "estree-walker": "^3.0.0" 3862 + }, 3863 + "funding": { 3864 + "type": "opencollective", 3865 + "url": "https://opencollective.com/unified" 3866 + } 3867 + }, 3868 + "node_modules/estree-util-is-identifier-name": { 3869 + "version": "3.0.0", 3870 + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", 3871 + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", 3872 + "license": "MIT", 3873 + "funding": { 3874 + "type": "opencollective", 3875 + "url": "https://opencollective.com/unified" 3876 + } 3877 + }, 3878 + "node_modules/estree-util-scope": { 3879 + "version": "1.0.0", 3880 + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", 3881 + "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", 3882 + "license": "MIT", 3883 + "dependencies": { 3884 + "@types/estree": "^1.0.0", 3885 + "devlop": "^1.0.0" 3886 + }, 3887 + "funding": { 3888 + "type": "opencollective", 3889 + "url": "https://opencollective.com/unified" 3890 + } 3891 + }, 3892 + "node_modules/estree-util-to-js": { 3893 + "version": "2.0.0", 3894 + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", 3895 + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", 3896 + "license": "MIT", 3897 + "dependencies": { 3898 + "@types/estree-jsx": "^1.0.0", 3899 + "astring": "^1.8.0", 3900 + "source-map": "^0.7.0" 3901 + }, 3902 + "funding": { 3903 + "type": "opencollective", 3904 + "url": "https://opencollective.com/unified" 3905 + } 3906 + }, 3907 + "node_modules/estree-util-visit": { 3908 + "version": "2.0.0", 3909 + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", 3910 + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", 3911 + "license": "MIT", 3912 + "dependencies": { 3913 + "@types/estree-jsx": "^1.0.0", 3914 + "@types/unist": "^3.0.0" 3915 + }, 3916 + "funding": { 3917 + "type": "opencollective", 3918 + "url": "https://opencollective.com/unified" 3919 + } 3920 + }, 3921 + "node_modules/estree-walker": { 3922 + "version": "3.0.3", 3923 + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", 3924 + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", 3925 + "license": "MIT", 3926 + "dependencies": { 3927 + "@types/estree": "^1.0.0" 3928 + } 3929 + }, 3526 3930 "node_modules/esutils": { 3527 3931 "version": "2.0.3", 3528 3932 "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", ··· 3532 3936 "engines": { 3533 3937 "node": ">=0.10.0" 3534 3938 } 3939 + }, 3940 + "node_modules/extend": { 3941 + "version": "3.0.2", 3942 + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 3943 + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 3944 + "license": "MIT" 3535 3945 }, 3536 3946 "node_modules/fast-deep-equal": { 3537 3947 "version": "3.1.3", ··· 3832 4242 "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" 3833 4243 } 3834 4244 }, 4245 + "node_modules/github-slugger": { 4246 + "version": "2.0.0", 4247 + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", 4248 + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", 4249 + "license": "ISC" 4250 + }, 3835 4251 "node_modules/glob-parent": { 3836 4252 "version": "6.0.2", 3837 4253 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", ··· 3989 4405 "node": ">= 0.4" 3990 4406 } 3991 4407 }, 4408 + "node_modules/hast-util-heading-rank": { 4409 + "version": "3.0.0", 4410 + "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz", 4411 + "integrity": "sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==", 4412 + "license": "MIT", 4413 + "dependencies": { 4414 + "@types/hast": "^3.0.0" 4415 + }, 4416 + "funding": { 4417 + "type": "opencollective", 4418 + "url": "https://opencollective.com/unified" 4419 + } 4420 + }, 4421 + "node_modules/hast-util-to-estree": { 4422 + "version": "3.1.3", 4423 + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", 4424 + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", 4425 + "license": "MIT", 4426 + "dependencies": { 4427 + "@types/estree": "^1.0.0", 4428 + "@types/estree-jsx": "^1.0.0", 4429 + "@types/hast": "^3.0.0", 4430 + "comma-separated-tokens": "^2.0.0", 4431 + "devlop": "^1.0.0", 4432 + "estree-util-attach-comments": "^3.0.0", 4433 + "estree-util-is-identifier-name": "^3.0.0", 4434 + "hast-util-whitespace": "^3.0.0", 4435 + "mdast-util-mdx-expression": "^2.0.0", 4436 + "mdast-util-mdx-jsx": "^3.0.0", 4437 + "mdast-util-mdxjs-esm": "^2.0.0", 4438 + "property-information": "^7.0.0", 4439 + "space-separated-tokens": "^2.0.0", 4440 + "style-to-js": "^1.0.0", 4441 + "unist-util-position": "^5.0.0", 4442 + "zwitch": "^2.0.0" 4443 + }, 4444 + "funding": { 4445 + "type": "opencollective", 4446 + "url": "https://opencollective.com/unified" 4447 + } 4448 + }, 4449 + "node_modules/hast-util-to-jsx-runtime": { 4450 + "version": "2.3.6", 4451 + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", 4452 + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", 4453 + "license": "MIT", 4454 + "dependencies": { 4455 + "@types/estree": "^1.0.0", 4456 + "@types/hast": "^3.0.0", 4457 + "@types/unist": "^3.0.0", 4458 + "comma-separated-tokens": "^2.0.0", 4459 + "devlop": "^1.0.0", 4460 + "estree-util-is-identifier-name": "^3.0.0", 4461 + "hast-util-whitespace": "^3.0.0", 4462 + "mdast-util-mdx-expression": "^2.0.0", 4463 + "mdast-util-mdx-jsx": "^3.0.0", 4464 + "mdast-util-mdxjs-esm": "^2.0.0", 4465 + "property-information": "^7.0.0", 4466 + "space-separated-tokens": "^2.0.0", 4467 + "style-to-js": "^1.0.0", 4468 + "unist-util-position": "^5.0.0", 4469 + "vfile-message": "^4.0.0" 4470 + }, 4471 + "funding": { 4472 + "type": "opencollective", 4473 + "url": "https://opencollective.com/unified" 4474 + } 4475 + }, 4476 + "node_modules/hast-util-to-string": { 4477 + "version": "3.0.1", 4478 + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", 4479 + "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", 4480 + "license": "MIT", 4481 + "dependencies": { 4482 + "@types/hast": "^3.0.0" 4483 + }, 4484 + "funding": { 4485 + "type": "opencollective", 4486 + "url": "https://opencollective.com/unified" 4487 + } 4488 + }, 4489 + "node_modules/hast-util-whitespace": { 4490 + "version": "3.0.0", 4491 + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", 4492 + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", 4493 + "license": "MIT", 4494 + "dependencies": { 4495 + "@types/hast": "^3.0.0" 4496 + }, 4497 + "funding": { 4498 + "type": "opencollective", 4499 + "url": "https://opencollective.com/unified" 4500 + } 4501 + }, 3992 4502 "node_modules/hermes-estree": { 3993 4503 "version": "0.25.1", 3994 4504 "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", ··· 4043 4553 "node": ">=0.8.19" 4044 4554 } 4045 4555 }, 4556 + "node_modules/inline-style-parser": { 4557 + "version": "0.2.7", 4558 + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", 4559 + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", 4560 + "license": "MIT" 4561 + }, 4046 4562 "node_modules/internal-slot": { 4047 4563 "version": "1.1.0", 4048 4564 "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", ··· 4058 4574 "node": ">= 0.4" 4059 4575 } 4060 4576 }, 4577 + "node_modules/is-alphabetical": { 4578 + "version": "2.0.1", 4579 + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", 4580 + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", 4581 + "license": "MIT", 4582 + "funding": { 4583 + "type": "github", 4584 + "url": "https://github.com/sponsors/wooorm" 4585 + } 4586 + }, 4587 + "node_modules/is-alphanumerical": { 4588 + "version": "2.0.1", 4589 + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", 4590 + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", 4591 + "license": "MIT", 4592 + "dependencies": { 4593 + "is-alphabetical": "^2.0.0", 4594 + "is-decimal": "^2.0.0" 4595 + }, 4596 + "funding": { 4597 + "type": "github", 4598 + "url": "https://github.com/sponsors/wooorm" 4599 + } 4600 + }, 4061 4601 "node_modules/is-array-buffer": { 4062 4602 "version": "3.0.5", 4063 4603 "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", ··· 4216 4756 "url": "https://github.com/sponsors/ljharb" 4217 4757 } 4218 4758 }, 4759 + "node_modules/is-decimal": { 4760 + "version": "2.0.1", 4761 + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", 4762 + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", 4763 + "license": "MIT", 4764 + "funding": { 4765 + "type": "github", 4766 + "url": "https://github.com/sponsors/wooorm" 4767 + } 4768 + }, 4219 4769 "node_modules/is-extglob": { 4220 4770 "version": "2.1.1", 4221 4771 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", ··· 4275 4825 "node": ">=0.10.0" 4276 4826 } 4277 4827 }, 4828 + "node_modules/is-hexadecimal": { 4829 + "version": "2.0.1", 4830 + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", 4831 + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", 4832 + "license": "MIT", 4833 + "funding": { 4834 + "type": "github", 4835 + "url": "https://github.com/sponsors/wooorm" 4836 + } 4837 + }, 4278 4838 "node_modules/is-map": { 4279 4839 "version": "2.0.3", 4280 4840 "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", ··· 4326 4886 }, 4327 4887 "funding": { 4328 4888 "url": "https://github.com/sponsors/ljharb" 4889 + } 4890 + }, 4891 + "node_modules/is-plain-obj": { 4892 + "version": "4.1.0", 4893 + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", 4894 + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", 4895 + "license": "MIT", 4896 + "engines": { 4897 + "node": ">=12" 4898 + }, 4899 + "funding": { 4900 + "url": "https://github.com/sponsors/sindresorhus" 4329 4901 } 4330 4902 }, 4331 4903 "node_modules/is-regex": { ··· 4932 5504 "dev": true, 4933 5505 "license": "MIT" 4934 5506 }, 5507 + "node_modules/longest-streak": { 5508 + "version": "3.1.0", 5509 + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", 5510 + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", 5511 + "license": "MIT", 5512 + "funding": { 5513 + "type": "github", 5514 + "url": "https://github.com/sponsors/wooorm" 5515 + } 5516 + }, 4935 5517 "node_modules/loose-envify": { 4936 5518 "version": "1.4.0", 4937 5519 "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", ··· 4974 5556 "@jridgewell/sourcemap-codec": "^1.5.5" 4975 5557 } 4976 5558 }, 5559 + "node_modules/markdown-extensions": { 5560 + "version": "2.0.0", 5561 + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", 5562 + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", 5563 + "license": "MIT", 5564 + "engines": { 5565 + "node": ">=16" 5566 + }, 5567 + "funding": { 5568 + "url": "https://github.com/sponsors/sindresorhus" 5569 + } 5570 + }, 5571 + "node_modules/markdown-table": { 5572 + "version": "3.0.4", 5573 + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", 5574 + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", 5575 + "license": "MIT", 5576 + "funding": { 5577 + "type": "github", 5578 + "url": "https://github.com/sponsors/wooorm" 5579 + } 5580 + }, 4977 5581 "node_modules/math-intrinsics": { 4978 5582 "version": "1.1.0", 4979 5583 "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", ··· 4984 5588 "node": ">= 0.4" 4985 5589 } 4986 5590 }, 5591 + "node_modules/mdast-util-find-and-replace": { 5592 + "version": "3.0.2", 5593 + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", 5594 + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", 5595 + "license": "MIT", 5596 + "dependencies": { 5597 + "@types/mdast": "^4.0.0", 5598 + "escape-string-regexp": "^5.0.0", 5599 + "unist-util-is": "^6.0.0", 5600 + "unist-util-visit-parents": "^6.0.0" 5601 + }, 5602 + "funding": { 5603 + "type": "opencollective", 5604 + "url": "https://opencollective.com/unified" 5605 + } 5606 + }, 5607 + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { 5608 + "version": "5.0.0", 5609 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", 5610 + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", 5611 + "license": "MIT", 5612 + "engines": { 5613 + "node": ">=12" 5614 + }, 5615 + "funding": { 5616 + "url": "https://github.com/sponsors/sindresorhus" 5617 + } 5618 + }, 5619 + "node_modules/mdast-util-from-markdown": { 5620 + "version": "2.0.2", 5621 + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", 5622 + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", 5623 + "license": "MIT", 5624 + "dependencies": { 5625 + "@types/mdast": "^4.0.0", 5626 + "@types/unist": "^3.0.0", 5627 + "decode-named-character-reference": "^1.0.0", 5628 + "devlop": "^1.0.0", 5629 + "mdast-util-to-string": "^4.0.0", 5630 + "micromark": "^4.0.0", 5631 + "micromark-util-decode-numeric-character-reference": "^2.0.0", 5632 + "micromark-util-decode-string": "^2.0.0", 5633 + "micromark-util-normalize-identifier": "^2.0.0", 5634 + "micromark-util-symbol": "^2.0.0", 5635 + "micromark-util-types": "^2.0.0", 5636 + "unist-util-stringify-position": "^4.0.0" 5637 + }, 5638 + "funding": { 5639 + "type": "opencollective", 5640 + "url": "https://opencollective.com/unified" 5641 + } 5642 + }, 5643 + "node_modules/mdast-util-gfm": { 5644 + "version": "3.1.0", 5645 + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", 5646 + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", 5647 + "license": "MIT", 5648 + "dependencies": { 5649 + "mdast-util-from-markdown": "^2.0.0", 5650 + "mdast-util-gfm-autolink-literal": "^2.0.0", 5651 + "mdast-util-gfm-footnote": "^2.0.0", 5652 + "mdast-util-gfm-strikethrough": "^2.0.0", 5653 + "mdast-util-gfm-table": "^2.0.0", 5654 + "mdast-util-gfm-task-list-item": "^2.0.0", 5655 + "mdast-util-to-markdown": "^2.0.0" 5656 + }, 5657 + "funding": { 5658 + "type": "opencollective", 5659 + "url": "https://opencollective.com/unified" 5660 + } 5661 + }, 5662 + "node_modules/mdast-util-gfm-autolink-literal": { 5663 + "version": "2.0.1", 5664 + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", 5665 + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", 5666 + "license": "MIT", 5667 + "dependencies": { 5668 + "@types/mdast": "^4.0.0", 5669 + "ccount": "^2.0.0", 5670 + "devlop": "^1.0.0", 5671 + "mdast-util-find-and-replace": "^3.0.0", 5672 + "micromark-util-character": "^2.0.0" 5673 + }, 5674 + "funding": { 5675 + "type": "opencollective", 5676 + "url": "https://opencollective.com/unified" 5677 + } 5678 + }, 5679 + "node_modules/mdast-util-gfm-footnote": { 5680 + "version": "2.1.0", 5681 + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", 5682 + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", 5683 + "license": "MIT", 5684 + "dependencies": { 5685 + "@types/mdast": "^4.0.0", 5686 + "devlop": "^1.1.0", 5687 + "mdast-util-from-markdown": "^2.0.0", 5688 + "mdast-util-to-markdown": "^2.0.0", 5689 + "micromark-util-normalize-identifier": "^2.0.0" 5690 + }, 5691 + "funding": { 5692 + "type": "opencollective", 5693 + "url": "https://opencollective.com/unified" 5694 + } 5695 + }, 5696 + "node_modules/mdast-util-gfm-strikethrough": { 5697 + "version": "2.0.0", 5698 + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", 5699 + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", 5700 + "license": "MIT", 5701 + "dependencies": { 5702 + "@types/mdast": "^4.0.0", 5703 + "mdast-util-from-markdown": "^2.0.0", 5704 + "mdast-util-to-markdown": "^2.0.0" 5705 + }, 5706 + "funding": { 5707 + "type": "opencollective", 5708 + "url": "https://opencollective.com/unified" 5709 + } 5710 + }, 5711 + "node_modules/mdast-util-gfm-table": { 5712 + "version": "2.0.0", 5713 + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", 5714 + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", 5715 + "license": "MIT", 5716 + "dependencies": { 5717 + "@types/mdast": "^4.0.0", 5718 + "devlop": "^1.0.0", 5719 + "markdown-table": "^3.0.0", 5720 + "mdast-util-from-markdown": "^2.0.0", 5721 + "mdast-util-to-markdown": "^2.0.0" 5722 + }, 5723 + "funding": { 5724 + "type": "opencollective", 5725 + "url": "https://opencollective.com/unified" 5726 + } 5727 + }, 5728 + "node_modules/mdast-util-gfm-task-list-item": { 5729 + "version": "2.0.0", 5730 + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", 5731 + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", 5732 + "license": "MIT", 5733 + "dependencies": { 5734 + "@types/mdast": "^4.0.0", 5735 + "devlop": "^1.0.0", 5736 + "mdast-util-from-markdown": "^2.0.0", 5737 + "mdast-util-to-markdown": "^2.0.0" 5738 + }, 5739 + "funding": { 5740 + "type": "opencollective", 5741 + "url": "https://opencollective.com/unified" 5742 + } 5743 + }, 5744 + "node_modules/mdast-util-mdx": { 5745 + "version": "3.0.0", 5746 + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", 5747 + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", 5748 + "license": "MIT", 5749 + "dependencies": { 5750 + "mdast-util-from-markdown": "^2.0.0", 5751 + "mdast-util-mdx-expression": "^2.0.0", 5752 + "mdast-util-mdx-jsx": "^3.0.0", 5753 + "mdast-util-mdxjs-esm": "^2.0.0", 5754 + "mdast-util-to-markdown": "^2.0.0" 5755 + }, 5756 + "funding": { 5757 + "type": "opencollective", 5758 + "url": "https://opencollective.com/unified" 5759 + } 5760 + }, 5761 + "node_modules/mdast-util-mdx-expression": { 5762 + "version": "2.0.1", 5763 + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", 5764 + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", 5765 + "license": "MIT", 5766 + "dependencies": { 5767 + "@types/estree-jsx": "^1.0.0", 5768 + "@types/hast": "^3.0.0", 5769 + "@types/mdast": "^4.0.0", 5770 + "devlop": "^1.0.0", 5771 + "mdast-util-from-markdown": "^2.0.0", 5772 + "mdast-util-to-markdown": "^2.0.0" 5773 + }, 5774 + "funding": { 5775 + "type": "opencollective", 5776 + "url": "https://opencollective.com/unified" 5777 + } 5778 + }, 5779 + "node_modules/mdast-util-mdx-jsx": { 5780 + "version": "3.2.0", 5781 + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", 5782 + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", 5783 + "license": "MIT", 5784 + "dependencies": { 5785 + "@types/estree-jsx": "^1.0.0", 5786 + "@types/hast": "^3.0.0", 5787 + "@types/mdast": "^4.0.0", 5788 + "@types/unist": "^3.0.0", 5789 + "ccount": "^2.0.0", 5790 + "devlop": "^1.1.0", 5791 + "mdast-util-from-markdown": "^2.0.0", 5792 + "mdast-util-to-markdown": "^2.0.0", 5793 + "parse-entities": "^4.0.0", 5794 + "stringify-entities": "^4.0.0", 5795 + "unist-util-stringify-position": "^4.0.0", 5796 + "vfile-message": "^4.0.0" 5797 + }, 5798 + "funding": { 5799 + "type": "opencollective", 5800 + "url": "https://opencollective.com/unified" 5801 + } 5802 + }, 5803 + "node_modules/mdast-util-mdxjs-esm": { 5804 + "version": "2.0.1", 5805 + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", 5806 + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", 5807 + "license": "MIT", 5808 + "dependencies": { 5809 + "@types/estree-jsx": "^1.0.0", 5810 + "@types/hast": "^3.0.0", 5811 + "@types/mdast": "^4.0.0", 5812 + "devlop": "^1.0.0", 5813 + "mdast-util-from-markdown": "^2.0.0", 5814 + "mdast-util-to-markdown": "^2.0.0" 5815 + }, 5816 + "funding": { 5817 + "type": "opencollective", 5818 + "url": "https://opencollective.com/unified" 5819 + } 5820 + }, 5821 + "node_modules/mdast-util-phrasing": { 5822 + "version": "4.1.0", 5823 + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", 5824 + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", 5825 + "license": "MIT", 5826 + "dependencies": { 5827 + "@types/mdast": "^4.0.0", 5828 + "unist-util-is": "^6.0.0" 5829 + }, 5830 + "funding": { 5831 + "type": "opencollective", 5832 + "url": "https://opencollective.com/unified" 5833 + } 5834 + }, 5835 + "node_modules/mdast-util-to-hast": { 5836 + "version": "13.2.1", 5837 + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", 5838 + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", 5839 + "license": "MIT", 5840 + "dependencies": { 5841 + "@types/hast": "^3.0.0", 5842 + "@types/mdast": "^4.0.0", 5843 + "@ungap/structured-clone": "^1.0.0", 5844 + "devlop": "^1.0.0", 5845 + "micromark-util-sanitize-uri": "^2.0.0", 5846 + "trim-lines": "^3.0.0", 5847 + "unist-util-position": "^5.0.0", 5848 + "unist-util-visit": "^5.0.0", 5849 + "vfile": "^6.0.0" 5850 + }, 5851 + "funding": { 5852 + "type": "opencollective", 5853 + "url": "https://opencollective.com/unified" 5854 + } 5855 + }, 5856 + "node_modules/mdast-util-to-markdown": { 5857 + "version": "2.1.2", 5858 + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", 5859 + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", 5860 + "license": "MIT", 5861 + "dependencies": { 5862 + "@types/mdast": "^4.0.0", 5863 + "@types/unist": "^3.0.0", 5864 + "longest-streak": "^3.0.0", 5865 + "mdast-util-phrasing": "^4.0.0", 5866 + "mdast-util-to-string": "^4.0.0", 5867 + "micromark-util-classify-character": "^2.0.0", 5868 + "micromark-util-decode-string": "^2.0.0", 5869 + "unist-util-visit": "^5.0.0", 5870 + "zwitch": "^2.0.0" 5871 + }, 5872 + "funding": { 5873 + "type": "opencollective", 5874 + "url": "https://opencollective.com/unified" 5875 + } 5876 + }, 5877 + "node_modules/mdast-util-to-string": { 5878 + "version": "4.0.0", 5879 + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", 5880 + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", 5881 + "license": "MIT", 5882 + "dependencies": { 5883 + "@types/mdast": "^4.0.0" 5884 + }, 5885 + "funding": { 5886 + "type": "opencollective", 5887 + "url": "https://opencollective.com/unified" 5888 + } 5889 + }, 4987 5890 "node_modules/merge2": { 4988 5891 "version": "1.4.1", 4989 5892 "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", ··· 4994 5897 "node": ">= 8" 4995 5898 } 4996 5899 }, 5900 + "node_modules/micromark": { 5901 + "version": "4.0.2", 5902 + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", 5903 + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", 5904 + "funding": [ 5905 + { 5906 + "type": "GitHub Sponsors", 5907 + "url": "https://github.com/sponsors/unifiedjs" 5908 + }, 5909 + { 5910 + "type": "OpenCollective", 5911 + "url": "https://opencollective.com/unified" 5912 + } 5913 + ], 5914 + "license": "MIT", 5915 + "dependencies": { 5916 + "@types/debug": "^4.0.0", 5917 + "debug": "^4.0.0", 5918 + "decode-named-character-reference": "^1.0.0", 5919 + "devlop": "^1.0.0", 5920 + "micromark-core-commonmark": "^2.0.0", 5921 + "micromark-factory-space": "^2.0.0", 5922 + "micromark-util-character": "^2.0.0", 5923 + "micromark-util-chunked": "^2.0.0", 5924 + "micromark-util-combine-extensions": "^2.0.0", 5925 + "micromark-util-decode-numeric-character-reference": "^2.0.0", 5926 + "micromark-util-encode": "^2.0.0", 5927 + "micromark-util-normalize-identifier": "^2.0.0", 5928 + "micromark-util-resolve-all": "^2.0.0", 5929 + "micromark-util-sanitize-uri": "^2.0.0", 5930 + "micromark-util-subtokenize": "^2.0.0", 5931 + "micromark-util-symbol": "^2.0.0", 5932 + "micromark-util-types": "^2.0.0" 5933 + } 5934 + }, 5935 + "node_modules/micromark-core-commonmark": { 5936 + "version": "2.0.3", 5937 + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", 5938 + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", 5939 + "funding": [ 5940 + { 5941 + "type": "GitHub Sponsors", 5942 + "url": "https://github.com/sponsors/unifiedjs" 5943 + }, 5944 + { 5945 + "type": "OpenCollective", 5946 + "url": "https://opencollective.com/unified" 5947 + } 5948 + ], 5949 + "license": "MIT", 5950 + "dependencies": { 5951 + "decode-named-character-reference": "^1.0.0", 5952 + "devlop": "^1.0.0", 5953 + "micromark-factory-destination": "^2.0.0", 5954 + "micromark-factory-label": "^2.0.0", 5955 + "micromark-factory-space": "^2.0.0", 5956 + "micromark-factory-title": "^2.0.0", 5957 + "micromark-factory-whitespace": "^2.0.0", 5958 + "micromark-util-character": "^2.0.0", 5959 + "micromark-util-chunked": "^2.0.0", 5960 + "micromark-util-classify-character": "^2.0.0", 5961 + "micromark-util-html-tag-name": "^2.0.0", 5962 + "micromark-util-normalize-identifier": "^2.0.0", 5963 + "micromark-util-resolve-all": "^2.0.0", 5964 + "micromark-util-subtokenize": "^2.0.0", 5965 + "micromark-util-symbol": "^2.0.0", 5966 + "micromark-util-types": "^2.0.0" 5967 + } 5968 + }, 5969 + "node_modules/micromark-extension-gfm": { 5970 + "version": "3.0.0", 5971 + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", 5972 + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", 5973 + "license": "MIT", 5974 + "dependencies": { 5975 + "micromark-extension-gfm-autolink-literal": "^2.0.0", 5976 + "micromark-extension-gfm-footnote": "^2.0.0", 5977 + "micromark-extension-gfm-strikethrough": "^2.0.0", 5978 + "micromark-extension-gfm-table": "^2.0.0", 5979 + "micromark-extension-gfm-tagfilter": "^2.0.0", 5980 + "micromark-extension-gfm-task-list-item": "^2.0.0", 5981 + "micromark-util-combine-extensions": "^2.0.0", 5982 + "micromark-util-types": "^2.0.0" 5983 + }, 5984 + "funding": { 5985 + "type": "opencollective", 5986 + "url": "https://opencollective.com/unified" 5987 + } 5988 + }, 5989 + "node_modules/micromark-extension-gfm-autolink-literal": { 5990 + "version": "2.1.0", 5991 + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", 5992 + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", 5993 + "license": "MIT", 5994 + "dependencies": { 5995 + "micromark-util-character": "^2.0.0", 5996 + "micromark-util-sanitize-uri": "^2.0.0", 5997 + "micromark-util-symbol": "^2.0.0", 5998 + "micromark-util-types": "^2.0.0" 5999 + }, 6000 + "funding": { 6001 + "type": "opencollective", 6002 + "url": "https://opencollective.com/unified" 6003 + } 6004 + }, 6005 + "node_modules/micromark-extension-gfm-footnote": { 6006 + "version": "2.1.0", 6007 + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", 6008 + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", 6009 + "license": "MIT", 6010 + "dependencies": { 6011 + "devlop": "^1.0.0", 6012 + "micromark-core-commonmark": "^2.0.0", 6013 + "micromark-factory-space": "^2.0.0", 6014 + "micromark-util-character": "^2.0.0", 6015 + "micromark-util-normalize-identifier": "^2.0.0", 6016 + "micromark-util-sanitize-uri": "^2.0.0", 6017 + "micromark-util-symbol": "^2.0.0", 6018 + "micromark-util-types": "^2.0.0" 6019 + }, 6020 + "funding": { 6021 + "type": "opencollective", 6022 + "url": "https://opencollective.com/unified" 6023 + } 6024 + }, 6025 + "node_modules/micromark-extension-gfm-strikethrough": { 6026 + "version": "2.1.0", 6027 + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", 6028 + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", 6029 + "license": "MIT", 6030 + "dependencies": { 6031 + "devlop": "^1.0.0", 6032 + "micromark-util-chunked": "^2.0.0", 6033 + "micromark-util-classify-character": "^2.0.0", 6034 + "micromark-util-resolve-all": "^2.0.0", 6035 + "micromark-util-symbol": "^2.0.0", 6036 + "micromark-util-types": "^2.0.0" 6037 + }, 6038 + "funding": { 6039 + "type": "opencollective", 6040 + "url": "https://opencollective.com/unified" 6041 + } 6042 + }, 6043 + "node_modules/micromark-extension-gfm-table": { 6044 + "version": "2.1.1", 6045 + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", 6046 + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", 6047 + "license": "MIT", 6048 + "dependencies": { 6049 + "devlop": "^1.0.0", 6050 + "micromark-factory-space": "^2.0.0", 6051 + "micromark-util-character": "^2.0.0", 6052 + "micromark-util-symbol": "^2.0.0", 6053 + "micromark-util-types": "^2.0.0" 6054 + }, 6055 + "funding": { 6056 + "type": "opencollective", 6057 + "url": "https://opencollective.com/unified" 6058 + } 6059 + }, 6060 + "node_modules/micromark-extension-gfm-tagfilter": { 6061 + "version": "2.0.0", 6062 + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", 6063 + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", 6064 + "license": "MIT", 6065 + "dependencies": { 6066 + "micromark-util-types": "^2.0.0" 6067 + }, 6068 + "funding": { 6069 + "type": "opencollective", 6070 + "url": "https://opencollective.com/unified" 6071 + } 6072 + }, 6073 + "node_modules/micromark-extension-gfm-task-list-item": { 6074 + "version": "2.1.0", 6075 + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", 6076 + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", 6077 + "license": "MIT", 6078 + "dependencies": { 6079 + "devlop": "^1.0.0", 6080 + "micromark-factory-space": "^2.0.0", 6081 + "micromark-util-character": "^2.0.0", 6082 + "micromark-util-symbol": "^2.0.0", 6083 + "micromark-util-types": "^2.0.0" 6084 + }, 6085 + "funding": { 6086 + "type": "opencollective", 6087 + "url": "https://opencollective.com/unified" 6088 + } 6089 + }, 6090 + "node_modules/micromark-extension-mdx-expression": { 6091 + "version": "3.0.1", 6092 + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", 6093 + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", 6094 + "funding": [ 6095 + { 6096 + "type": "GitHub Sponsors", 6097 + "url": "https://github.com/sponsors/unifiedjs" 6098 + }, 6099 + { 6100 + "type": "OpenCollective", 6101 + "url": "https://opencollective.com/unified" 6102 + } 6103 + ], 6104 + "license": "MIT", 6105 + "dependencies": { 6106 + "@types/estree": "^1.0.0", 6107 + "devlop": "^1.0.0", 6108 + "micromark-factory-mdx-expression": "^2.0.0", 6109 + "micromark-factory-space": "^2.0.0", 6110 + "micromark-util-character": "^2.0.0", 6111 + "micromark-util-events-to-acorn": "^2.0.0", 6112 + "micromark-util-symbol": "^2.0.0", 6113 + "micromark-util-types": "^2.0.0" 6114 + } 6115 + }, 6116 + "node_modules/micromark-extension-mdx-jsx": { 6117 + "version": "3.0.2", 6118 + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", 6119 + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", 6120 + "license": "MIT", 6121 + "dependencies": { 6122 + "@types/estree": "^1.0.0", 6123 + "devlop": "^1.0.0", 6124 + "estree-util-is-identifier-name": "^3.0.0", 6125 + "micromark-factory-mdx-expression": "^2.0.0", 6126 + "micromark-factory-space": "^2.0.0", 6127 + "micromark-util-character": "^2.0.0", 6128 + "micromark-util-events-to-acorn": "^2.0.0", 6129 + "micromark-util-symbol": "^2.0.0", 6130 + "micromark-util-types": "^2.0.0", 6131 + "vfile-message": "^4.0.0" 6132 + }, 6133 + "funding": { 6134 + "type": "opencollective", 6135 + "url": "https://opencollective.com/unified" 6136 + } 6137 + }, 6138 + "node_modules/micromark-extension-mdx-md": { 6139 + "version": "2.0.0", 6140 + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", 6141 + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", 6142 + "license": "MIT", 6143 + "dependencies": { 6144 + "micromark-util-types": "^2.0.0" 6145 + }, 6146 + "funding": { 6147 + "type": "opencollective", 6148 + "url": "https://opencollective.com/unified" 6149 + } 6150 + }, 6151 + "node_modules/micromark-extension-mdxjs": { 6152 + "version": "3.0.0", 6153 + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", 6154 + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", 6155 + "license": "MIT", 6156 + "dependencies": { 6157 + "acorn": "^8.0.0", 6158 + "acorn-jsx": "^5.0.0", 6159 + "micromark-extension-mdx-expression": "^3.0.0", 6160 + "micromark-extension-mdx-jsx": "^3.0.0", 6161 + "micromark-extension-mdx-md": "^2.0.0", 6162 + "micromark-extension-mdxjs-esm": "^3.0.0", 6163 + "micromark-util-combine-extensions": "^2.0.0", 6164 + "micromark-util-types": "^2.0.0" 6165 + }, 6166 + "funding": { 6167 + "type": "opencollective", 6168 + "url": "https://opencollective.com/unified" 6169 + } 6170 + }, 6171 + "node_modules/micromark-extension-mdxjs-esm": { 6172 + "version": "3.0.0", 6173 + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", 6174 + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", 6175 + "license": "MIT", 6176 + "dependencies": { 6177 + "@types/estree": "^1.0.0", 6178 + "devlop": "^1.0.0", 6179 + "micromark-core-commonmark": "^2.0.0", 6180 + "micromark-util-character": "^2.0.0", 6181 + "micromark-util-events-to-acorn": "^2.0.0", 6182 + "micromark-util-symbol": "^2.0.0", 6183 + "micromark-util-types": "^2.0.0", 6184 + "unist-util-position-from-estree": "^2.0.0", 6185 + "vfile-message": "^4.0.0" 6186 + }, 6187 + "funding": { 6188 + "type": "opencollective", 6189 + "url": "https://opencollective.com/unified" 6190 + } 6191 + }, 6192 + "node_modules/micromark-factory-destination": { 6193 + "version": "2.0.1", 6194 + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", 6195 + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", 6196 + "funding": [ 6197 + { 6198 + "type": "GitHub Sponsors", 6199 + "url": "https://github.com/sponsors/unifiedjs" 6200 + }, 6201 + { 6202 + "type": "OpenCollective", 6203 + "url": "https://opencollective.com/unified" 6204 + } 6205 + ], 6206 + "license": "MIT", 6207 + "dependencies": { 6208 + "micromark-util-character": "^2.0.0", 6209 + "micromark-util-symbol": "^2.0.0", 6210 + "micromark-util-types": "^2.0.0" 6211 + } 6212 + }, 6213 + "node_modules/micromark-factory-label": { 6214 + "version": "2.0.1", 6215 + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", 6216 + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", 6217 + "funding": [ 6218 + { 6219 + "type": "GitHub Sponsors", 6220 + "url": "https://github.com/sponsors/unifiedjs" 6221 + }, 6222 + { 6223 + "type": "OpenCollective", 6224 + "url": "https://opencollective.com/unified" 6225 + } 6226 + ], 6227 + "license": "MIT", 6228 + "dependencies": { 6229 + "devlop": "^1.0.0", 6230 + "micromark-util-character": "^2.0.0", 6231 + "micromark-util-symbol": "^2.0.0", 6232 + "micromark-util-types": "^2.0.0" 6233 + } 6234 + }, 6235 + "node_modules/micromark-factory-mdx-expression": { 6236 + "version": "2.0.3", 6237 + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", 6238 + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", 6239 + "funding": [ 6240 + { 6241 + "type": "GitHub Sponsors", 6242 + "url": "https://github.com/sponsors/unifiedjs" 6243 + }, 6244 + { 6245 + "type": "OpenCollective", 6246 + "url": "https://opencollective.com/unified" 6247 + } 6248 + ], 6249 + "license": "MIT", 6250 + "dependencies": { 6251 + "@types/estree": "^1.0.0", 6252 + "devlop": "^1.0.0", 6253 + "micromark-factory-space": "^2.0.0", 6254 + "micromark-util-character": "^2.0.0", 6255 + "micromark-util-events-to-acorn": "^2.0.0", 6256 + "micromark-util-symbol": "^2.0.0", 6257 + "micromark-util-types": "^2.0.0", 6258 + "unist-util-position-from-estree": "^2.0.0", 6259 + "vfile-message": "^4.0.0" 6260 + } 6261 + }, 6262 + "node_modules/micromark-factory-space": { 6263 + "version": "2.0.1", 6264 + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", 6265 + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", 6266 + "funding": [ 6267 + { 6268 + "type": "GitHub Sponsors", 6269 + "url": "https://github.com/sponsors/unifiedjs" 6270 + }, 6271 + { 6272 + "type": "OpenCollective", 6273 + "url": "https://opencollective.com/unified" 6274 + } 6275 + ], 6276 + "license": "MIT", 6277 + "dependencies": { 6278 + "micromark-util-character": "^2.0.0", 6279 + "micromark-util-types": "^2.0.0" 6280 + } 6281 + }, 6282 + "node_modules/micromark-factory-title": { 6283 + "version": "2.0.1", 6284 + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", 6285 + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", 6286 + "funding": [ 6287 + { 6288 + "type": "GitHub Sponsors", 6289 + "url": "https://github.com/sponsors/unifiedjs" 6290 + }, 6291 + { 6292 + "type": "OpenCollective", 6293 + "url": "https://opencollective.com/unified" 6294 + } 6295 + ], 6296 + "license": "MIT", 6297 + "dependencies": { 6298 + "micromark-factory-space": "^2.0.0", 6299 + "micromark-util-character": "^2.0.0", 6300 + "micromark-util-symbol": "^2.0.0", 6301 + "micromark-util-types": "^2.0.0" 6302 + } 6303 + }, 6304 + "node_modules/micromark-factory-whitespace": { 6305 + "version": "2.0.1", 6306 + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", 6307 + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", 6308 + "funding": [ 6309 + { 6310 + "type": "GitHub Sponsors", 6311 + "url": "https://github.com/sponsors/unifiedjs" 6312 + }, 6313 + { 6314 + "type": "OpenCollective", 6315 + "url": "https://opencollective.com/unified" 6316 + } 6317 + ], 6318 + "license": "MIT", 6319 + "dependencies": { 6320 + "micromark-factory-space": "^2.0.0", 6321 + "micromark-util-character": "^2.0.0", 6322 + "micromark-util-symbol": "^2.0.0", 6323 + "micromark-util-types": "^2.0.0" 6324 + } 6325 + }, 6326 + "node_modules/micromark-util-character": { 6327 + "version": "2.1.1", 6328 + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", 6329 + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", 6330 + "funding": [ 6331 + { 6332 + "type": "GitHub Sponsors", 6333 + "url": "https://github.com/sponsors/unifiedjs" 6334 + }, 6335 + { 6336 + "type": "OpenCollective", 6337 + "url": "https://opencollective.com/unified" 6338 + } 6339 + ], 6340 + "license": "MIT", 6341 + "dependencies": { 6342 + "micromark-util-symbol": "^2.0.0", 6343 + "micromark-util-types": "^2.0.0" 6344 + } 6345 + }, 6346 + "node_modules/micromark-util-chunked": { 6347 + "version": "2.0.1", 6348 + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", 6349 + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", 6350 + "funding": [ 6351 + { 6352 + "type": "GitHub Sponsors", 6353 + "url": "https://github.com/sponsors/unifiedjs" 6354 + }, 6355 + { 6356 + "type": "OpenCollective", 6357 + "url": "https://opencollective.com/unified" 6358 + } 6359 + ], 6360 + "license": "MIT", 6361 + "dependencies": { 6362 + "micromark-util-symbol": "^2.0.0" 6363 + } 6364 + }, 6365 + "node_modules/micromark-util-classify-character": { 6366 + "version": "2.0.1", 6367 + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", 6368 + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", 6369 + "funding": [ 6370 + { 6371 + "type": "GitHub Sponsors", 6372 + "url": "https://github.com/sponsors/unifiedjs" 6373 + }, 6374 + { 6375 + "type": "OpenCollective", 6376 + "url": "https://opencollective.com/unified" 6377 + } 6378 + ], 6379 + "license": "MIT", 6380 + "dependencies": { 6381 + "micromark-util-character": "^2.0.0", 6382 + "micromark-util-symbol": "^2.0.0", 6383 + "micromark-util-types": "^2.0.0" 6384 + } 6385 + }, 6386 + "node_modules/micromark-util-combine-extensions": { 6387 + "version": "2.0.1", 6388 + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", 6389 + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", 6390 + "funding": [ 6391 + { 6392 + "type": "GitHub Sponsors", 6393 + "url": "https://github.com/sponsors/unifiedjs" 6394 + }, 6395 + { 6396 + "type": "OpenCollective", 6397 + "url": "https://opencollective.com/unified" 6398 + } 6399 + ], 6400 + "license": "MIT", 6401 + "dependencies": { 6402 + "micromark-util-chunked": "^2.0.0", 6403 + "micromark-util-types": "^2.0.0" 6404 + } 6405 + }, 6406 + "node_modules/micromark-util-decode-numeric-character-reference": { 6407 + "version": "2.0.2", 6408 + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", 6409 + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", 6410 + "funding": [ 6411 + { 6412 + "type": "GitHub Sponsors", 6413 + "url": "https://github.com/sponsors/unifiedjs" 6414 + }, 6415 + { 6416 + "type": "OpenCollective", 6417 + "url": "https://opencollective.com/unified" 6418 + } 6419 + ], 6420 + "license": "MIT", 6421 + "dependencies": { 6422 + "micromark-util-symbol": "^2.0.0" 6423 + } 6424 + }, 6425 + "node_modules/micromark-util-decode-string": { 6426 + "version": "2.0.1", 6427 + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", 6428 + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", 6429 + "funding": [ 6430 + { 6431 + "type": "GitHub Sponsors", 6432 + "url": "https://github.com/sponsors/unifiedjs" 6433 + }, 6434 + { 6435 + "type": "OpenCollective", 6436 + "url": "https://opencollective.com/unified" 6437 + } 6438 + ], 6439 + "license": "MIT", 6440 + "dependencies": { 6441 + "decode-named-character-reference": "^1.0.0", 6442 + "micromark-util-character": "^2.0.0", 6443 + "micromark-util-decode-numeric-character-reference": "^2.0.0", 6444 + "micromark-util-symbol": "^2.0.0" 6445 + } 6446 + }, 6447 + "node_modules/micromark-util-encode": { 6448 + "version": "2.0.1", 6449 + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", 6450 + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", 6451 + "funding": [ 6452 + { 6453 + "type": "GitHub Sponsors", 6454 + "url": "https://github.com/sponsors/unifiedjs" 6455 + }, 6456 + { 6457 + "type": "OpenCollective", 6458 + "url": "https://opencollective.com/unified" 6459 + } 6460 + ], 6461 + "license": "MIT" 6462 + }, 6463 + "node_modules/micromark-util-events-to-acorn": { 6464 + "version": "2.0.3", 6465 + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", 6466 + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", 6467 + "funding": [ 6468 + { 6469 + "type": "GitHub Sponsors", 6470 + "url": "https://github.com/sponsors/unifiedjs" 6471 + }, 6472 + { 6473 + "type": "OpenCollective", 6474 + "url": "https://opencollective.com/unified" 6475 + } 6476 + ], 6477 + "license": "MIT", 6478 + "dependencies": { 6479 + "@types/estree": "^1.0.0", 6480 + "@types/unist": "^3.0.0", 6481 + "devlop": "^1.0.0", 6482 + "estree-util-visit": "^2.0.0", 6483 + "micromark-util-symbol": "^2.0.0", 6484 + "micromark-util-types": "^2.0.0", 6485 + "vfile-message": "^4.0.0" 6486 + } 6487 + }, 6488 + "node_modules/micromark-util-html-tag-name": { 6489 + "version": "2.0.1", 6490 + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", 6491 + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", 6492 + "funding": [ 6493 + { 6494 + "type": "GitHub Sponsors", 6495 + "url": "https://github.com/sponsors/unifiedjs" 6496 + }, 6497 + { 6498 + "type": "OpenCollective", 6499 + "url": "https://opencollective.com/unified" 6500 + } 6501 + ], 6502 + "license": "MIT" 6503 + }, 6504 + "node_modules/micromark-util-normalize-identifier": { 6505 + "version": "2.0.1", 6506 + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", 6507 + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", 6508 + "funding": [ 6509 + { 6510 + "type": "GitHub Sponsors", 6511 + "url": "https://github.com/sponsors/unifiedjs" 6512 + }, 6513 + { 6514 + "type": "OpenCollective", 6515 + "url": "https://opencollective.com/unified" 6516 + } 6517 + ], 6518 + "license": "MIT", 6519 + "dependencies": { 6520 + "micromark-util-symbol": "^2.0.0" 6521 + } 6522 + }, 6523 + "node_modules/micromark-util-resolve-all": { 6524 + "version": "2.0.1", 6525 + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", 6526 + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", 6527 + "funding": [ 6528 + { 6529 + "type": "GitHub Sponsors", 6530 + "url": "https://github.com/sponsors/unifiedjs" 6531 + }, 6532 + { 6533 + "type": "OpenCollective", 6534 + "url": "https://opencollective.com/unified" 6535 + } 6536 + ], 6537 + "license": "MIT", 6538 + "dependencies": { 6539 + "micromark-util-types": "^2.0.0" 6540 + } 6541 + }, 6542 + "node_modules/micromark-util-sanitize-uri": { 6543 + "version": "2.0.1", 6544 + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", 6545 + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", 6546 + "funding": [ 6547 + { 6548 + "type": "GitHub Sponsors", 6549 + "url": "https://github.com/sponsors/unifiedjs" 6550 + }, 6551 + { 6552 + "type": "OpenCollective", 6553 + "url": "https://opencollective.com/unified" 6554 + } 6555 + ], 6556 + "license": "MIT", 6557 + "dependencies": { 6558 + "micromark-util-character": "^2.0.0", 6559 + "micromark-util-encode": "^2.0.0", 6560 + "micromark-util-symbol": "^2.0.0" 6561 + } 6562 + }, 6563 + "node_modules/micromark-util-subtokenize": { 6564 + "version": "2.1.0", 6565 + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", 6566 + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", 6567 + "funding": [ 6568 + { 6569 + "type": "GitHub Sponsors", 6570 + "url": "https://github.com/sponsors/unifiedjs" 6571 + }, 6572 + { 6573 + "type": "OpenCollective", 6574 + "url": "https://opencollective.com/unified" 6575 + } 6576 + ], 6577 + "license": "MIT", 6578 + "dependencies": { 6579 + "devlop": "^1.0.0", 6580 + "micromark-util-chunked": "^2.0.0", 6581 + "micromark-util-symbol": "^2.0.0", 6582 + "micromark-util-types": "^2.0.0" 6583 + } 6584 + }, 6585 + "node_modules/micromark-util-symbol": { 6586 + "version": "2.0.1", 6587 + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", 6588 + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", 6589 + "funding": [ 6590 + { 6591 + "type": "GitHub Sponsors", 6592 + "url": "https://github.com/sponsors/unifiedjs" 6593 + }, 6594 + { 6595 + "type": "OpenCollective", 6596 + "url": "https://opencollective.com/unified" 6597 + } 6598 + ], 6599 + "license": "MIT" 6600 + }, 6601 + "node_modules/micromark-util-types": { 6602 + "version": "2.0.2", 6603 + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", 6604 + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", 6605 + "funding": [ 6606 + { 6607 + "type": "GitHub Sponsors", 6608 + "url": "https://github.com/sponsors/unifiedjs" 6609 + }, 6610 + { 6611 + "type": "OpenCollective", 6612 + "url": "https://opencollective.com/unified" 6613 + } 6614 + ], 6615 + "license": "MIT" 6616 + }, 4997 6617 "node_modules/micromatch": { 4998 6618 "version": "4.0.8", 4999 6619 "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", ··· 5076 6696 "version": "2.1.3", 5077 6697 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 5078 6698 "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 5079 - "dev": true, 5080 6699 "license": "MIT" 5081 6700 }, 5082 6701 "node_modules/multiformats": { ··· 5418 7037 "node": ">=6" 5419 7038 } 5420 7039 }, 7040 + "node_modules/parse-entities": { 7041 + "version": "4.0.2", 7042 + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", 7043 + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", 7044 + "license": "MIT", 7045 + "dependencies": { 7046 + "@types/unist": "^2.0.0", 7047 + "character-entities-legacy": "^3.0.0", 7048 + "character-reference-invalid": "^2.0.0", 7049 + "decode-named-character-reference": "^1.0.0", 7050 + "is-alphanumerical": "^2.0.0", 7051 + "is-decimal": "^2.0.0", 7052 + "is-hexadecimal": "^2.0.0" 7053 + }, 7054 + "funding": { 7055 + "type": "github", 7056 + "url": "https://github.com/sponsors/wooorm" 7057 + } 7058 + }, 7059 + "node_modules/parse-entities/node_modules/@types/unist": { 7060 + "version": "2.0.11", 7061 + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", 7062 + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", 7063 + "license": "MIT" 7064 + }, 5421 7065 "node_modules/path-exists": { 5422 7066 "version": "4.0.0", 5423 7067 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", ··· 5525 7169 "react-is": "^16.13.1" 5526 7170 } 5527 7171 }, 7172 + "node_modules/property-information": { 7173 + "version": "7.1.0", 7174 + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", 7175 + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", 7176 + "license": "MIT", 7177 + "funding": { 7178 + "type": "github", 7179 + "url": "https://github.com/sponsors/wooorm" 7180 + } 7181 + }, 5528 7182 "node_modules/punycode": { 5529 7183 "version": "2.3.1", 5530 7184 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", ··· 5597 7251 "react-dom": ">=17.0.0" 5598 7252 } 5599 7253 }, 7254 + "node_modules/recma-build-jsx": { 7255 + "version": "1.0.0", 7256 + "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", 7257 + "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", 7258 + "license": "MIT", 7259 + "dependencies": { 7260 + "@types/estree": "^1.0.0", 7261 + "estree-util-build-jsx": "^3.0.0", 7262 + "vfile": "^6.0.0" 7263 + }, 7264 + "funding": { 7265 + "type": "opencollective", 7266 + "url": "https://opencollective.com/unified" 7267 + } 7268 + }, 7269 + "node_modules/recma-jsx": { 7270 + "version": "1.0.1", 7271 + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz", 7272 + "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==", 7273 + "license": "MIT", 7274 + "dependencies": { 7275 + "acorn-jsx": "^5.0.0", 7276 + "estree-util-to-js": "^2.0.0", 7277 + "recma-parse": "^1.0.0", 7278 + "recma-stringify": "^1.0.0", 7279 + "unified": "^11.0.0" 7280 + }, 7281 + "funding": { 7282 + "type": "opencollective", 7283 + "url": "https://opencollective.com/unified" 7284 + }, 7285 + "peerDependencies": { 7286 + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 7287 + } 7288 + }, 7289 + "node_modules/recma-parse": { 7290 + "version": "1.0.0", 7291 + "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", 7292 + "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", 7293 + "license": "MIT", 7294 + "dependencies": { 7295 + "@types/estree": "^1.0.0", 7296 + "esast-util-from-js": "^2.0.0", 7297 + "unified": "^11.0.0", 7298 + "vfile": "^6.0.0" 7299 + }, 7300 + "funding": { 7301 + "type": "opencollective", 7302 + "url": "https://opencollective.com/unified" 7303 + } 7304 + }, 7305 + "node_modules/recma-stringify": { 7306 + "version": "1.0.0", 7307 + "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", 7308 + "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", 7309 + "license": "MIT", 7310 + "dependencies": { 7311 + "@types/estree": "^1.0.0", 7312 + "estree-util-to-js": "^2.0.0", 7313 + "unified": "^11.0.0", 7314 + "vfile": "^6.0.0" 7315 + }, 7316 + "funding": { 7317 + "type": "opencollective", 7318 + "url": "https://opencollective.com/unified" 7319 + } 7320 + }, 5600 7321 "node_modules/reflect.getprototypeof": { 5601 7322 "version": "1.0.10", 5602 7323 "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", ··· 5641 7362 "url": "https://github.com/sponsors/ljharb" 5642 7363 } 5643 7364 }, 7365 + "node_modules/rehype-recma": { 7366 + "version": "1.0.0", 7367 + "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", 7368 + "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", 7369 + "license": "MIT", 7370 + "dependencies": { 7371 + "@types/estree": "^1.0.0", 7372 + "@types/hast": "^3.0.0", 7373 + "hast-util-to-estree": "^3.0.0" 7374 + }, 7375 + "funding": { 7376 + "type": "opencollective", 7377 + "url": "https://opencollective.com/unified" 7378 + } 7379 + }, 7380 + "node_modules/rehype-slug": { 7381 + "version": "6.0.0", 7382 + "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-6.0.0.tgz", 7383 + "integrity": "sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==", 7384 + "license": "MIT", 7385 + "dependencies": { 7386 + "@types/hast": "^3.0.0", 7387 + "github-slugger": "^2.0.0", 7388 + "hast-util-heading-rank": "^3.0.0", 7389 + "hast-util-to-string": "^3.0.0", 7390 + "unist-util-visit": "^5.0.0" 7391 + }, 7392 + "funding": { 7393 + "type": "opencollective", 7394 + "url": "https://opencollective.com/unified" 7395 + } 7396 + }, 7397 + "node_modules/remark-gfm": { 7398 + "version": "4.0.1", 7399 + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", 7400 + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", 7401 + "license": "MIT", 7402 + "dependencies": { 7403 + "@types/mdast": "^4.0.0", 7404 + "mdast-util-gfm": "^3.0.0", 7405 + "micromark-extension-gfm": "^3.0.0", 7406 + "remark-parse": "^11.0.0", 7407 + "remark-stringify": "^11.0.0", 7408 + "unified": "^11.0.0" 7409 + }, 7410 + "funding": { 7411 + "type": "opencollective", 7412 + "url": "https://opencollective.com/unified" 7413 + } 7414 + }, 7415 + "node_modules/remark-mdx": { 7416 + "version": "3.1.1", 7417 + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz", 7418 + "integrity": "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==", 7419 + "license": "MIT", 7420 + "dependencies": { 7421 + "mdast-util-mdx": "^3.0.0", 7422 + "micromark-extension-mdxjs": "^3.0.0" 7423 + }, 7424 + "funding": { 7425 + "type": "opencollective", 7426 + "url": "https://opencollective.com/unified" 7427 + } 7428 + }, 7429 + "node_modules/remark-parse": { 7430 + "version": "11.0.0", 7431 + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", 7432 + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", 7433 + "license": "MIT", 7434 + "dependencies": { 7435 + "@types/mdast": "^4.0.0", 7436 + "mdast-util-from-markdown": "^2.0.0", 7437 + "micromark-util-types": "^2.0.0", 7438 + "unified": "^11.0.0" 7439 + }, 7440 + "funding": { 7441 + "type": "opencollective", 7442 + "url": "https://opencollective.com/unified" 7443 + } 7444 + }, 7445 + "node_modules/remark-rehype": { 7446 + "version": "11.1.2", 7447 + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", 7448 + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", 7449 + "license": "MIT", 7450 + "dependencies": { 7451 + "@types/hast": "^3.0.0", 7452 + "@types/mdast": "^4.0.0", 7453 + "mdast-util-to-hast": "^13.0.0", 7454 + "unified": "^11.0.0", 7455 + "vfile": "^6.0.0" 7456 + }, 7457 + "funding": { 7458 + "type": "opencollective", 7459 + "url": "https://opencollective.com/unified" 7460 + } 7461 + }, 7462 + "node_modules/remark-stringify": { 7463 + "version": "11.0.0", 7464 + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", 7465 + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", 7466 + "license": "MIT", 7467 + "dependencies": { 7468 + "@types/mdast": "^4.0.0", 7469 + "mdast-util-to-markdown": "^2.0.0", 7470 + "unified": "^11.0.0" 7471 + }, 7472 + "funding": { 7473 + "type": "opencollective", 7474 + "url": "https://opencollective.com/unified" 7475 + } 7476 + }, 5644 7477 "node_modules/resolve": { 5645 7478 "version": "1.22.11", 5646 7479 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", ··· 5994 7827 "url": "https://github.com/sponsors/ljharb" 5995 7828 } 5996 7829 }, 7830 + "node_modules/source-map": { 7831 + "version": "0.7.6", 7832 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", 7833 + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", 7834 + "license": "BSD-3-Clause", 7835 + "engines": { 7836 + "node": ">= 12" 7837 + } 7838 + }, 5997 7839 "node_modules/source-map-js": { 5998 7840 "version": "1.2.1", 5999 7841 "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", ··· 6003 7845 "node": ">=0.10.0" 6004 7846 } 6005 7847 }, 7848 + "node_modules/space-separated-tokens": { 7849 + "version": "2.0.2", 7850 + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", 7851 + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", 7852 + "license": "MIT", 7853 + "funding": { 7854 + "type": "github", 7855 + "url": "https://github.com/sponsors/wooorm" 7856 + } 7857 + }, 6006 7858 "node_modules/stable-hash": { 6007 7859 "version": "0.0.5", 6008 7860 "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", ··· 6137 7989 "url": "https://github.com/sponsors/ljharb" 6138 7990 } 6139 7991 }, 7992 + "node_modules/stringify-entities": { 7993 + "version": "4.0.4", 7994 + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", 7995 + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", 7996 + "license": "MIT", 7997 + "dependencies": { 7998 + "character-entities-html4": "^2.0.0", 7999 + "character-entities-legacy": "^3.0.0" 8000 + }, 8001 + "funding": { 8002 + "type": "github", 8003 + "url": "https://github.com/sponsors/wooorm" 8004 + } 8005 + }, 6140 8006 "node_modules/strip-bom": { 6141 8007 "version": "3.0.0", 6142 8008 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", ··· 6160 8026 "url": "https://github.com/sponsors/sindresorhus" 6161 8027 } 6162 8028 }, 8029 + "node_modules/style-to-js": { 8030 + "version": "1.1.21", 8031 + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", 8032 + "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", 8033 + "license": "MIT", 8034 + "dependencies": { 8035 + "style-to-object": "1.0.14" 8036 + } 8037 + }, 8038 + "node_modules/style-to-object": { 8039 + "version": "1.0.14", 8040 + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", 8041 + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", 8042 + "license": "MIT", 8043 + "dependencies": { 8044 + "inline-style-parser": "0.2.7" 8045 + } 8046 + }, 6163 8047 "node_modules/styled-jsx": { 6164 8048 "version": "5.1.6", 6165 8049 "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", ··· 6298 8182 }, 6299 8183 "engines": { 6300 8184 "node": ">=8.0" 8185 + } 8186 + }, 8187 + "node_modules/trim-lines": { 8188 + "version": "3.0.1", 8189 + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", 8190 + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", 8191 + "license": "MIT", 8192 + "funding": { 8193 + "type": "github", 8194 + "url": "https://github.com/sponsors/wooorm" 8195 + } 8196 + }, 8197 + "node_modules/trough": { 8198 + "version": "2.2.0", 8199 + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", 8200 + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", 8201 + "license": "MIT", 8202 + "funding": { 8203 + "type": "github", 8204 + "url": "https://github.com/sponsors/wooorm" 6301 8205 } 6302 8206 }, 6303 8207 "node_modules/ts-api-utils": { ··· 6515 8419 "integrity": "sha512-jHGmj2LUuqDcX3hqY12Ql+uhUTn8huuxNZGq7GvtF6bSybzH3aFgedYu/KTzQStEgt1Ra2F3HxadNXsNjb3m3g==", 6516 8420 "license": "MIT" 6517 8421 }, 8422 + "node_modules/unified": { 8423 + "version": "11.0.5", 8424 + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", 8425 + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", 8426 + "license": "MIT", 8427 + "dependencies": { 8428 + "@types/unist": "^3.0.0", 8429 + "bail": "^2.0.0", 8430 + "devlop": "^1.0.0", 8431 + "extend": "^3.0.0", 8432 + "is-plain-obj": "^4.0.0", 8433 + "trough": "^2.0.0", 8434 + "vfile": "^6.0.0" 8435 + }, 8436 + "funding": { 8437 + "type": "opencollective", 8438 + "url": "https://opencollective.com/unified" 8439 + } 8440 + }, 8441 + "node_modules/unist-util-is": { 8442 + "version": "6.0.1", 8443 + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", 8444 + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", 8445 + "license": "MIT", 8446 + "dependencies": { 8447 + "@types/unist": "^3.0.0" 8448 + }, 8449 + "funding": { 8450 + "type": "opencollective", 8451 + "url": "https://opencollective.com/unified" 8452 + } 8453 + }, 8454 + "node_modules/unist-util-position": { 8455 + "version": "5.0.0", 8456 + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", 8457 + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", 8458 + "license": "MIT", 8459 + "dependencies": { 8460 + "@types/unist": "^3.0.0" 8461 + }, 8462 + "funding": { 8463 + "type": "opencollective", 8464 + "url": "https://opencollective.com/unified" 8465 + } 8466 + }, 8467 + "node_modules/unist-util-position-from-estree": { 8468 + "version": "2.0.0", 8469 + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", 8470 + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", 8471 + "license": "MIT", 8472 + "dependencies": { 8473 + "@types/unist": "^3.0.0" 8474 + }, 8475 + "funding": { 8476 + "type": "opencollective", 8477 + "url": "https://opencollective.com/unified" 8478 + } 8479 + }, 8480 + "node_modules/unist-util-stringify-position": { 8481 + "version": "4.0.0", 8482 + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", 8483 + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", 8484 + "license": "MIT", 8485 + "dependencies": { 8486 + "@types/unist": "^3.0.0" 8487 + }, 8488 + "funding": { 8489 + "type": "opencollective", 8490 + "url": "https://opencollective.com/unified" 8491 + } 8492 + }, 8493 + "node_modules/unist-util-visit": { 8494 + "version": "5.1.0", 8495 + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", 8496 + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", 8497 + "license": "MIT", 8498 + "dependencies": { 8499 + "@types/unist": "^3.0.0", 8500 + "unist-util-is": "^6.0.0", 8501 + "unist-util-visit-parents": "^6.0.0" 8502 + }, 8503 + "funding": { 8504 + "type": "opencollective", 8505 + "url": "https://opencollective.com/unified" 8506 + } 8507 + }, 8508 + "node_modules/unist-util-visit-parents": { 8509 + "version": "6.0.2", 8510 + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", 8511 + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", 8512 + "license": "MIT", 8513 + "dependencies": { 8514 + "@types/unist": "^3.0.0", 8515 + "unist-util-is": "^6.0.0" 8516 + }, 8517 + "funding": { 8518 + "type": "opencollective", 8519 + "url": "https://opencollective.com/unified" 8520 + } 8521 + }, 6518 8522 "node_modules/unrs-resolver": { 6519 8523 "version": "1.11.1", 6520 8524 "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", ··· 6589 8593 "license": "BSD-2-Clause", 6590 8594 "dependencies": { 6591 8595 "punycode": "^2.1.0" 8596 + } 8597 + }, 8598 + "node_modules/vfile": { 8599 + "version": "6.0.3", 8600 + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", 8601 + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", 8602 + "license": "MIT", 8603 + "dependencies": { 8604 + "@types/unist": "^3.0.0", 8605 + "vfile-message": "^4.0.0" 8606 + }, 8607 + "funding": { 8608 + "type": "opencollective", 8609 + "url": "https://opencollective.com/unified" 8610 + } 8611 + }, 8612 + "node_modules/vfile-message": { 8613 + "version": "4.0.3", 8614 + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", 8615 + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", 8616 + "license": "MIT", 8617 + "dependencies": { 8618 + "@types/unist": "^3.0.0", 8619 + "unist-util-stringify-position": "^4.0.0" 8620 + }, 8621 + "funding": { 8622 + "type": "opencollective", 8623 + "url": "https://opencollective.com/unified" 6592 8624 } 6593 8625 }, 6594 8626 "node_modules/which": { ··· 6746 8778 }, 6747 8779 "peerDependencies": { 6748 8780 "zod": "^3.25.0 || ^4.0.0" 8781 + } 8782 + }, 8783 + "node_modules/zwitch": { 8784 + "version": "2.0.4", 8785 + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", 8786 + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", 8787 + "license": "MIT", 8788 + "funding": { 8789 + "type": "github", 8790 + "url": "https://github.com/sponsors/wooorm" 6749 8791 } 6750 8792 } 6751 8793 }
+8 -1
package.json
··· 10 10 }, 11 11 "dependencies": { 12 12 "@atproto/api": "^0.18.8", 13 + "@mdx-js/loader": "^3.1.1", 14 + "@mdx-js/react": "^3.1.1", 15 + "@next/mdx": "^16.1.1", 13 16 "lucide-react": "^0.562.0", 14 17 "motion": "^12.23.26", 15 18 "next": "16.1.0", 16 19 "react": "19.2.3", 20 + "react-dom": "19.2.3", 17 21 "react-progressive-blur": "^1.0.6", 18 - "react-dom": "19.2.3" 22 + "rehype-slug": "^6.0.0", 23 + "remark-frontmatter": "^5.0.0", 24 + "remark-gfm": "^4.0.1" 19 25 }, 20 26 "devDependencies": { 21 27 "@tailwindcss/postcss": "^4", 28 + "@types/mdx": "^2.0.13", 22 29 "@types/node": "^20", 23 30 "@types/react": "^19", 24 31 "@types/react-dom": "^19",
public/.well-known/.gitkeep

This is a binary file and will not be displayed.

+1
public/.well-known/site.standard.publication
··· 1 + at://did:plc:re3ebnp5v7ffagz6rb6xfei4/site.standard.publication/3me5vykp6lf2y
+61
public/llms.txt
··· 1 + # Standard.site Documentation 2 + 3 + ## Overview 4 + Standard.site provides AT Protocol lexicons for long-form publishing on the open social web. 5 + 6 + ## Navigation 7 + 8 + ### Getting Started 9 + - Introduction: https://standard.site/docs/introduction 10 + Overview of Standard.site lexicons and core concepts 11 + 12 + - Quick Start: https://standard.site/docs/quick-start 13 + Step-by-step guide to implementing Standard.site lexicons 14 + 15 + - Permissions: https://standard.site/docs/permissions 16 + Understanding record permissions and access control 17 + 18 + - Verification: https://standard.site/docs/verification 19 + Linking records to domains for authenticity 20 + 21 + ### Core Lexicons 22 + - Publication: https://standard.site/docs/lexicons/publication 23 + `site.standard.publication` - Collection metadata and theming 24 + 25 + - Document: https://standard.site/docs/lexicons/document 26 + `site.standard.document` - Individual document records 27 + 28 + - Subscription: https://standard.site/docs/lexicons/subscription 29 + `site.standard.graph.subscription` - Follow relationships 30 + 31 + - Theme: https://standard.site/docs/lexicons/theme 32 + `site.standard.theme` - Theming configuration 33 + 34 + ### Resources 35 + - Implementations: https://standard.site/docs/implementations 36 + Tools and platforms using Standard.site lexicons 37 + 38 + - FAQ: https://standard.site/docs/faq 39 + Common questions and answers 40 + 41 + ## Features 42 + - All documentation pages support anchor links (click any heading to copy its link) 43 + - Each page provides a "Markdown" link in the footer for direct AI agent consumption 44 + - Full markdown source available via API: /api/docs/markdown/{slug} 45 + 46 + ## API Access 47 + GET /api/docs/markdown/{slug} - Returns the raw markdown content of any documentation page 48 + Example: /api/docs/markdown/introduction 49 + 50 + ## Key Concepts 51 + - AT Protocol: Authenticated Transfer Protocol - decentralized social networking 52 + - PDS: Personal Data Server - stores user data and records 53 + - Lexicons: Schemas that define record types in AT Protocol 54 + - NSID: Namespaced Identifier - unique identifier format for lexicons 55 + 56 + ## Implementation Quick Reference 57 + 1. Create publication record with site.standard.publication lexicon 58 + 2. Create document records with site.standard.document lexicon 59 + 3. Link documents to publication via publication reference 60 + 4. Implement verification to link records to your domain 61 + 5. Support subscription records for follow functionality
+10
sequoia.json
··· 1 + { 2 + "siteUrl": "https://standard.site", 3 + "contentDir": "./content", 4 + "outputDir": "./out", 5 + "pathPrefix": "/docs", 6 + "publicationUri": "at://did:plc:re3ebnp5v7ffagz6rb6xfei4/site.standard.publication/3me5vykp6lf2y", 7 + "frontmatter": { 8 + "publishDate": "date" 9 + } 10 + }
+1
tsconfig.json
··· 26 26 "next-env.d.ts", 27 27 "**/*.ts", 28 28 "**/*.tsx", 29 + "**/*.mdx", 29 30 ".next/types/**/*.ts", 30 31 ".next/dev/types/**/*.ts", 31 32 "**/*.mts"