docs: improve changelog page

This commit is contained in:
Bereket Engida
2024-12-03 00:46:14 +03:00
parent b400d722fd
commit 0c243af55c
7 changed files with 309 additions and 153 deletions

View File

@@ -1,32 +1,74 @@
import Link from "next/link";
import { useId } from "react";
import { changelog } from "@/app/source";
import { notFound } from "next/navigation";
import { cn } from "@/lib/utils";
import { Badge } from "@/components/ui/badge";
import { IconLink } from "./_components/changelog-layout";
import { BookIcon, GitHubIcon, XIcon } from "./_components/icons";
import { DiscordLogoIcon } from "@radix-ui/react-icons";
import { StarField } from "./_components/stat-field";
import { betterFetch } from "@better-fetch/fetch";
import Markdown from "react-markdown";
import defaultMdxComponents from "fumadocs-ui/mdx";
import rehypeHighlight from "rehype-highlight";
import "highlight.js/styles/dark.css";
const ChangelogPage = () => {
// @ts-ignore
const page = changelog.getPage();
export const dynamic = "force-static";
if (page == null) {
notFound();
const ChangelogPage = async () => {
const { data: releases } = await betterFetch<
{
id: number;
tag_name: string;
name: string;
body: string;
html_url: string;
prerelease: boolean;
published_at: string;
}[]
>("https://api.github.com/repos/better-auth/better-auth/releases");
const messages = releases
?.filter((release) => !release.prerelease)
.map((release) => ({
tag: release.tag_name,
title: release.name,
content: getContent(release.body),
date: new Date(release.published_at).toLocaleDateString("en-US", {
year: "numeric",
month: "short",
day: "numeric",
}),
url: release.html_url,
}));
function getContent(content: string) {
const lines = content.split("\n");
const newContext = lines.map((line) => {
if (line.startsWith("- ")) {
const mainContent = line.split(";")[0];
const context = line.split(";")[2];
const mentions = context
.split(" ")
.filter((word) => word.startsWith("@"))
.map((mention) => {
const username = mention.replace("@", "");
const avatarUrl = `https://github.com/${username}.png`;
return `[![${mention}](${avatarUrl})](https://github.com/${username})`;
});
// Remove &nbsp
return mainContent.replace(/&nbsp/g, "") + " " + mentions.join(" ");
}
return line;
});
return newContext.join("\n");
}
const MDX = page.data.body;
return (
<div className="grid md:grid-cols-2 items-start">
<div className="bg-gradient-to-tr overflow-hidden px-12 py-24 md:py-0 -mt-[100px] md:h-dvh relative md:sticky top-0 from-transparent dark:via-stone-950/5 via-stone-100/30 to-stone-200/20 dark:to-transparent/10">
<StarField className="top-1/2 -translate-y-1/2 left-1/2 -translate-x-1/2" />
<Glow />
<div className="flex flex-col justify-center max-w-xl mx-auto h-full">
<div className="flex flex-col md:justify-center max-w-xl mx-auto h-full">
<h1 className="mt-14 font-sans font-semibold tracking-tighter text-5xl">
All of the changes made will be{" "}
<span className="">available here.</span>
@@ -37,7 +79,7 @@ const ChangelogPage = () => {
and more secure.
</p>
<hr className="h-px bg-gray-300 mt-5" />
<div className="mt-8 flex flex-wrap text-gray-600 dark:text-gray-300 justify-center gap-x-1 gap-y-3 sm:gap-x-2 lg:justify-start">
<div className="mt-8 flex flex-wrap text-gray-600 dark:text-gray-300 gap-x-1 gap-y-3 sm:gap-x-2">
<IconLink
href="/docs"
icon={BookIcon}
@@ -61,8 +103,7 @@ const ChangelogPage = () => {
</IconLink>
</div>
<p className="flex items-baseline absolute bottom-4 max-md:left-1/2 max-md:-translate-x-1/2 gap-x-2 text-[0.8125rem]/6 text-gray-500">
Brought to you by{" "}
<IconLink href="#" icon={XIcon} compact>
<IconLink href="https://x.com/better_auth" icon={XIcon} compact>
BETTER-AUTH.
</IconLink>
</p>
@@ -72,14 +113,22 @@ const ChangelogPage = () => {
<div className="absolute top-0 left-0 mb-2 w-2 h-full -translate-x-full bg-gradient-to-b from-black/10 dark:from-white/20 from-50% to-50% to-transparent bg-[length:100%_5px] bg-repeat-y"></div>
<div className="max-w-2xl relative">
<MDX
<Markdown
rehypePlugins={[[rehypeHighlight]]}
components={{
pre: (props) => (
<defaultMdxComponents.pre
{...props}
className={cn(props.className, " ml-10 my-2")}
/>
),
h2: (props) => (
<h2
className="text-2xl relative mt-16 font-bold flex-col flex justify-center tracking-tighter"
id={props.children?.toString().split("date=")[0].trim()} // Extract ID dynamically
className="text-2xl relative mb-6 font-bold flex-col flex justify-center tracking-tighter before:content-[''] before:block before:h-[65px] before:-mt-[10px]"
{...props}
>
<div className="sticky top-0 left-[-9.9rem]">
<div className="sticky top-0 left-[-9.9rem] hidden md:block">
<time className="flex gap-2 items-center text-gray-500 dark:text-white/80 text-sm md:absolute md:left-[-9.8rem] font-normal tracking-normal">
{props.children?.toString().includes("date=") &&
props.children?.toString().split("date=")[1]}
@@ -87,32 +136,62 @@ const ChangelogPage = () => {
<div className="w-4 h-[1px] dark:bg-white/60 bg-black" />
</time>
</div>
{props.children?.toString().split("date=")[0].trim()}
<Link
href={
`#${props.children
?.toString()
.split("date=")[0]
.trim()}` || "#"
}
>
{props.children?.toString().split("date=")[0].trim()}
</Link>
<p className="text-xs font-normal opacity-60 hidden">
{props.children?.toString().includes("date=") &&
props.children?.toString().split("date=")[1]}
</p>
</h2>
),
h3: (props) => (
<h3 className="text-xl tracking-tighter" {...props} />
),
p: (props) => <p className="my-4" {...props} />,
p: (props) => <p className="my-0 ml-10 text-sm" {...props} />,
ul: (props) => (
<ul
className="list-disc ml-10 my-4 text-[0.855rem] text-gray-600 dark:text-gray-300"
className="list-disc ml-10 text-[0.855rem] text-gray-600 dark:text-gray-300"
{...props}
/>
),
li: (props) => <li className="my-px" {...props} />,
li: (props) => <li className="my-1" {...props} />,
a: ({ className, ...props }: any) => (
<Link
target="_blank"
className={cn("font-medium underline", className)}
{...props}
/>
),
Badge: (props) => (
<Badge variant="secondary" className="py-0" {...props} />
strong: (props) => (
<strong className="font-semibold" {...props} />
),
img: (props) => (
<img
className="rounded-full w-6 h-6 border opacity-70 inline-block"
{...props}
style={{ maxWidth: "100%" }}
/>
),
}}
/>
>
{messages
?.map((message) => {
return `
## ${message.title} date=${message.date}
${message.content}
`;
})
.join("\n")}
</Markdown>
</div>
</div>
</div>

View File

@@ -2,6 +2,14 @@
@tailwind components;
@tailwind utilities;
html {
scroll-behavior: smooth;
}
.hljs {
background: none !important;
}
@layer base {
:root {
--background: 0 0% 100%;

View File

@@ -8,9 +8,4 @@ export const source = loader({
source: createMDXSource(docs, meta),
});
export const changelog = loader({
baseUrl: "/changelog",
source: createMDXSource(_changelog, meta),
});
export const openapi = createOpenAPI({});

View File

@@ -1,122 +0,0 @@
---
title: Basic Usage
description: Getting started with Better Auth
---
## v1.0 date=Nov 22, 2024
The first stable release of Better Auth is now available!
[Read the release notes](https://better-auth.com/v1).
## v0.6.0 date=Oct 26, 2024
- Email OTP Plugin
- Optimized Database Queries (huge improvements)
- Manual Account linking
- Dropbox SSO
- LinkedIn SSO
- Improved two-factor flow
- Add search for admin plugin
- Cookie based session Cache
- Support additional fields on user update
- Better Express integration
See [release notes](https://github.com/better-auth/better-auth/releases/tag/v0.6.0) for full list of changes.
<Badge>
🚧 We are still in beta and we don't recommend using better-auth in production. V1 should be out by November 22.
</Badge>
## v0.5.0 date=Oct 18, 2024
Multi Session Plugin, JWT & JWKS Plugin, Change Email Flow, SSR support for Nuxt, CF Workers compatibility, and many more.
### Features & Changes
- Multi Session Plugin
- JWT & JWKS Plugin
- Change Email Flow
- CF Workers compatibility
- Add support for custom id
- Support useSession ssr for Nuxt
- Moved the CLI to a separate package `@better-auth/cli`
See [release notes](https://github.com/better-auth/better-auth/releases/tag/v0.5.0) for full list of changes.
## v0.4.0 date=Oct 11, 2024
Admin Plugin, Microsoft SSO, Typed Additional Fields on core tables, Secondary storage and many more.
### Features & Changes
- Admin Plugin
- Generic OAuth Plugin
- Add support for typed additional fields on core tables
- Custom field names for core tables
- Secondary storage
- Add support for Kysely instance as a database
- Microsoft SSO
See [release notes](https://github.com/better-auth/better-auth/releases/tag/v0.4.0) for full list of changes.
<Badge>
🚧 We are still in beta and we don't recommend using better-auth in production just yet
</Badge>
## v0.3.0 date=Oct 4, 2024
Database Schema Generation, Phone Number Plugin, Anonymous Plugin, Better type Inference, Custom table names, and many more.
### Features & Changes
- Database Schema Generation
- Phone Number Plugin
- Anonymous Plugin
- Better type Inference
- User Delete API
- Custom table/model names
- Removed flat db config
- New core table for verification use cases
- Moved passkey challenge keys to be stored on db
- Many bug fixes and improvements
See [release notes](https://github.com/better-auth/better-auth/releases/tag/v0.3.0) for full list of changes.
<Badge>
🚧 We are still in beta and we don't recommend using better-auth in production just yet.
</Badge>
## v0.2.0 date=Oct 4, 2024
We have added support for database adapters including Prisma, Drizzle, and MongoDB, along with other changes.
### Changes
- Database adapters support including Prisma, Drizzle, and MongoDB
- Database hooks
- Cross-domain cookies
- onRequest and onResponse plugin hooks
- Init interface for plugins
See [Changelog](https://github.com/better-auth/better-auth/releases/tag/v0.2.0) for full list of changes.
<Badge>
🚧 We are still in beta and we don't recommend using better-auth in production just yet.
</Badge>
## Beta Release date=Oct 4, 2024
The first beta release of better-auth is now available!
### Features
- Multiple framework support
- Email & Password Authentication
- OAuth Authentication
- Account & Session Management
- Rate Limiting
- Multiple Plugins
- Migration CLI
- And more...

View File

@@ -31,6 +31,9 @@ export default withMDX({
{
hostname: "pbs.twimg.com",
},
{
hostname: "github.com",
}
],
},
});

View File

@@ -11,9 +11,11 @@
"postinstall": "fumadocs-mdx"
},
"dependencies": {
"@better-fetch/fetch": "1.1.12",
"@codesandbox/sandpack-react": "^2.19.8",
"@hookform/resolvers": "^3.9.0",
"@loglib/tracker": "^0.8.0",
"@octokit/rest": "^21.0.2",
"@radix-ui/react-accordion": "^1.2.0",
"@radix-ui/react-alert-dialog": "^1.1.1",
"@radix-ui/react-aspect-ratio": "^1.1.0",
@@ -83,9 +85,11 @@
"react-day-picker": "8.10.1",
"react-dom": "^18.3.1",
"react-hook-form": "^7.52.2",
"react-markdown": "^9.0.1",
"react-resizable-panels": "^2.1.2",
"react-use-measure": "^2.1.1",
"recharts": "^2.12.7",
"rehype-highlight": "^7.0.1",
"rehype-mermaid": "^2.1.0",
"remark-codesandbox": "^0.10.1",
"shiki": "^1.23.1",

189
pnpm-lock.yaml generated
View File

@@ -328,6 +328,9 @@ importers:
docs:
dependencies:
'@better-fetch/fetch':
specifier: 1.1.12
version: 1.1.12
'@codesandbox/sandpack-react':
specifier: ^2.19.8
version: 2.19.9(@lezer/common@1.2.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -337,6 +340,9 @@ importers:
'@loglib/tracker':
specifier: ^0.8.0
version: 0.8.0(react@18.3.1)
'@octokit/rest':
specifier: ^21.0.2
version: 21.0.2
'@radix-ui/react-accordion':
specifier: ^1.2.0
version: 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -544,6 +550,9 @@ importers:
react-hook-form:
specifier: ^7.52.2
version: 7.53.1(react@18.3.1)
react-markdown:
specifier: ^9.0.1
version: 9.0.1(@types/react@18.3.12)(react@18.3.1)
react-resizable-panels:
specifier: ^2.1.2
version: 2.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -553,6 +562,9 @@ importers:
recharts:
specifier: ^2.12.7
version: 2.13.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
rehype-highlight:
specifier: ^7.0.1
version: 7.0.1
rehype-mermaid:
specifier: ^2.1.0
version: 2.1.0
@@ -4547,6 +4559,58 @@ packages:
'@nuxtjs/tailwindcss@6.12.2':
resolution: {integrity: sha512-qPJiFH67CkTj/2kBGBzqXihOD1rQXMsbVS4vdQvfBxOBLPfGhU1yw7AATdhPl2BBjO2krjJLuZj39t7dnDYOwg==}
'@octokit/auth-token@5.1.1':
resolution: {integrity: sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==}
engines: {node: '>= 18'}
'@octokit/core@6.1.2':
resolution: {integrity: sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==}
engines: {node: '>= 18'}
'@octokit/endpoint@10.1.1':
resolution: {integrity: sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==}
engines: {node: '>= 18'}
'@octokit/graphql@8.1.1':
resolution: {integrity: sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==}
engines: {node: '>= 18'}
'@octokit/openapi-types@22.2.0':
resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==}
'@octokit/plugin-paginate-rest@11.3.6':
resolution: {integrity: sha512-zcvqqf/+TicbTCa/Z+3w4eBJcAxCFymtc0UAIsR3dEVoNilWld4oXdscQ3laXamTszUZdusw97K8+DrbFiOwjw==}
engines: {node: '>= 18'}
peerDependencies:
'@octokit/core': '>=6'
'@octokit/plugin-request-log@5.3.1':
resolution: {integrity: sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==}
engines: {node: '>= 18'}
peerDependencies:
'@octokit/core': '>=6'
'@octokit/plugin-rest-endpoint-methods@13.2.6':
resolution: {integrity: sha512-wMsdyHMjSfKjGINkdGKki06VEkgdEldIGstIEyGX0wbYHGByOwN/KiM+hAAlUwAtPkP3gvXtVQA9L3ITdV2tVw==}
engines: {node: '>= 18'}
peerDependencies:
'@octokit/core': '>=6'
'@octokit/request-error@6.1.5':
resolution: {integrity: sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==}
engines: {node: '>= 18'}
'@octokit/request@9.1.3':
resolution: {integrity: sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==}
engines: {node: '>= 18'}
'@octokit/rest@21.0.2':
resolution: {integrity: sha512-+CiLisCoyWmYicH25y1cDfCrv41kRSvTq6pPWtRroRJzhsCZWZyCqGyI8foJT5LmScADSwRAnr/xo+eewL04wQ==}
engines: {node: '>= 18'}
'@octokit/types@13.6.2':
resolution: {integrity: sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==}
'@one-ini/wasm@0.1.1':
resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==}
@@ -8093,6 +8157,9 @@ packages:
resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==}
engines: {node: '>= 0.8'}
before-after-hook@3.0.2:
resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==}
better-auth@0.6.2:
resolution: {integrity: sha512-7lh0ph5eXnoyMDs9hbL32hrY+e/y7Abk0IHtCS5h0fbObZNA1Uv2uW4G89RuHQG30LI7VeB4klYGn6Qcs74DrA==}
@@ -10974,6 +11041,10 @@ packages:
hey-listen@1.0.8:
resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==}
highlight.js@11.10.0:
resolution: {integrity: sha512-SYVnVFswQER+zu1laSya563s+F8VDGt7o35d4utbamowvUNLLMovFqwCLSocpZTz3MgaSRA1IbqRWZv97dtErQ==}
engines: {node: '>=12.0.0'}
hoist-non-react-statics@3.3.2:
resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
@@ -11013,6 +11084,9 @@ packages:
resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==}
engines: {node: '>=14'}
html-url-attributes@3.0.1:
resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==}
html-void-elements@3.0.0:
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
@@ -12171,6 +12245,9 @@ packages:
resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==}
engines: {node: '>=0.10.0'}
lowlight@3.2.0:
resolution: {integrity: sha512-8Me8xHTCBYEXwcJIPcurnXTeERl3plwb4207v6KPye48kX/oaYDiwXy+OCm3M/pyAPUrkMhalKsbYPm24f/UDg==}
lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
@@ -14376,6 +14453,12 @@ packages:
react-is@18.3.1:
resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
react-markdown@9.0.1:
resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==}
peerDependencies:
'@types/react': '>=18'
react: '>=18'
react-medium-image-zoom@5.2.10:
resolution: {integrity: sha512-JBYf4u0zsocezIDtrjwStD+8sX+c8XuLsdz+HxPbojRj0sCicua0XOQKysuPetoFyX+YgStfj+vEtZ+699O/pg==}
peerDependencies:
@@ -14698,6 +14781,9 @@ packages:
resolution: {integrity: sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==}
hasBin: true
rehype-highlight@7.0.1:
resolution: {integrity: sha512-dB/vVGFsbm7xPglqnYbg0ABg6rAuIWKycTvuXaOO27SgLoOFNoTlniTBtAxp3n5ZyMioW1a3KwiNqgjkb6Skjg==}
rehype-mermaid@2.1.0:
resolution: {integrity: sha512-YgzHXaUTzp+loffUvAoX+vtNNl36WL12GWYv4farPeW9GRFfYdgNg15O/3nADAW/Yh5/997Vv+0WaWOJ24/YSg==}
@@ -16272,6 +16358,9 @@ packages:
unist-util-visit@5.0.0:
resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
universal-user-agent@7.0.2:
resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==}
universalify@0.1.2:
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
engines: {node: '>= 4.0.0'}
@@ -20720,6 +20809,67 @@ snapshots:
- ts-node
- webpack-sources
'@octokit/auth-token@5.1.1': {}
'@octokit/core@6.1.2':
dependencies:
'@octokit/auth-token': 5.1.1
'@octokit/graphql': 8.1.1
'@octokit/request': 9.1.3
'@octokit/request-error': 6.1.5
'@octokit/types': 13.6.2
before-after-hook: 3.0.2
universal-user-agent: 7.0.2
'@octokit/endpoint@10.1.1':
dependencies:
'@octokit/types': 13.6.2
universal-user-agent: 7.0.2
'@octokit/graphql@8.1.1':
dependencies:
'@octokit/request': 9.1.3
'@octokit/types': 13.6.2
universal-user-agent: 7.0.2
'@octokit/openapi-types@22.2.0': {}
'@octokit/plugin-paginate-rest@11.3.6(@octokit/core@6.1.2)':
dependencies:
'@octokit/core': 6.1.2
'@octokit/types': 13.6.2
'@octokit/plugin-request-log@5.3.1(@octokit/core@6.1.2)':
dependencies:
'@octokit/core': 6.1.2
'@octokit/plugin-rest-endpoint-methods@13.2.6(@octokit/core@6.1.2)':
dependencies:
'@octokit/core': 6.1.2
'@octokit/types': 13.6.2
'@octokit/request-error@6.1.5':
dependencies:
'@octokit/types': 13.6.2
'@octokit/request@9.1.3':
dependencies:
'@octokit/endpoint': 10.1.1
'@octokit/request-error': 6.1.5
'@octokit/types': 13.6.2
universal-user-agent: 7.0.2
'@octokit/rest@21.0.2':
dependencies:
'@octokit/core': 6.1.2
'@octokit/plugin-paginate-rest': 11.3.6(@octokit/core@6.1.2)
'@octokit/plugin-request-log': 5.3.1(@octokit/core@6.1.2)
'@octokit/plugin-rest-endpoint-methods': 13.2.6(@octokit/core@6.1.2)
'@octokit/types@13.6.2':
dependencies:
'@octokit/openapi-types': 22.2.0
'@one-ini/wasm@0.1.1': {}
'@open-draft/deferred-promise@2.2.0': {}
@@ -25694,6 +25844,8 @@ snapshots:
dependencies:
safe-buffer: 5.1.2
before-after-hook@3.0.2: {}
better-auth@0.6.2(@vue/devtools-api@7.6.2)(encoding@0.1.13)(react@18.3.1)(solid-js@1.9.3)(vue@3.5.13(typescript@5.6.3)):
dependencies:
'@better-fetch/fetch': 1.1.12
@@ -29492,6 +29644,8 @@ snapshots:
hey-listen@1.0.8: {}
highlight.js@11.10.0: {}
hoist-non-react-statics@3.3.2:
dependencies:
react-is: 16.13.1
@@ -29528,6 +29682,8 @@ snapshots:
htmlparser2: 8.0.2
selderee: 0.11.0
html-url-attributes@3.0.1: {}
html-void-elements@3.0.0: {}
htmlparser2@8.0.2:
@@ -30663,6 +30819,12 @@ snapshots:
lowercase-keys@1.0.1: {}
lowlight@3.2.0:
dependencies:
'@types/hast': 3.0.4
devlop: 1.1.0
highlight.js: 11.10.0
lru-cache@10.4.3: {}
lru-cache@4.1.5:
@@ -33669,6 +33831,23 @@ snapshots:
react-is@18.3.1: {}
react-markdown@9.0.1(@types/react@18.3.12)(react@18.3.1):
dependencies:
'@types/hast': 3.0.4
'@types/react': 18.3.12
devlop: 1.1.0
hast-util-to-jsx-runtime: 2.3.2
html-url-attributes: 3.0.1
mdast-util-to-hast: 13.2.0
react: 18.3.1
remark-parse: 11.0.0
remark-rehype: 11.1.1
unified: 11.0.4
unist-util-visit: 5.0.0
vfile: 6.0.3
transitivePeerDependencies:
- supports-color
react-medium-image-zoom@5.2.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
react: 18.3.1
@@ -34110,6 +34289,14 @@ snapshots:
dependencies:
jsesc: 3.0.2
rehype-highlight@7.0.1:
dependencies:
'@types/hast': 3.0.4
hast-util-to-text: 4.0.2
lowlight: 3.2.0
unist-util-visit: 5.0.0
vfile: 6.0.3
rehype-mermaid@2.1.0:
dependencies:
'@types/hast': 3.0.4
@@ -36009,6 +36196,8 @@ snapshots:
unist-util-is: 6.0.0
unist-util-visit-parents: 6.0.1
universal-user-agent@7.0.2: {}
universalify@0.1.2: {}
universalify@1.0.0: {}