diff --git a/.gitignore b/.gitignore index b4f171d..ebae1a3 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,9 @@ node_modules/* .next .env* tsconfig.tsbuildinfo +_pagefind/ +out/ +pagefind.log # Generated public/robots.txt diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1537cd4..b84acc5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,3 +1,4 @@ +--- repos: - repo: "https://github.com/DavidAnson/markdownlint-cli2" rev: "v0.14.0" diff --git a/.yamllint b/.yamllint index 0b026c1..d84f32e 100644 --- a/.yamllint +++ b/.yamllint @@ -6,6 +6,7 @@ yaml-files: - ".yamllint" ignore: | pnpm-lock.yaml + pnpm-workspace.yaml node_modules/ extends: "default" rules: diff --git a/pages/_meta.ts b/app/_meta.ts similarity index 84% rename from pages/_meta.ts rename to app/_meta.ts index a17c406..bc2eaff 100644 --- a/pages/_meta.ts +++ b/app/_meta.ts @@ -1,3 +1,5 @@ +import type { MetaRecord } from "nextra"; + export default { index: { title: "Documentation", @@ -19,4 +21,4 @@ export default { title: "MCP", type: "page", }, -}; +} satisfies MetaRecord; diff --git a/pages/authzed/_meta.ts b/app/authzed/_meta.ts similarity index 100% rename from pages/authzed/_meta.ts rename to app/authzed/_meta.ts diff --git a/pages/authzed/api/_meta.ts b/app/authzed/api/_meta.ts similarity index 83% rename from pages/authzed/api/_meta.ts rename to app/authzed/api/_meta.ts index 741b713..0913628 100644 --- a/pages/authzed/api/_meta.ts +++ b/app/authzed/api/_meta.ts @@ -1,8 +1,9 @@ +import type { MetaRecord } from "nextra"; + export default { "grpc-api": { title: "gRPC API Reference", href: "https://buf.build/authzed/api/docs/main:authzed.api.v1", - newWindow: true, }, "http-api": { title: "HTTP API Reference", @@ -10,6 +11,5 @@ export default { "cloud-api": { title: "Cloud API Reference", href: "https://www.postman.com/authzed/spicedb/collection/5fm402n/authzed-cloud-api", - newWindow: true, }, -}; +} satisfies MetaRecord; diff --git a/app/authzed/api/http-api/page.mdx b/app/authzed/api/http-api/page.mdx new file mode 100644 index 0000000..d5644f6 --- /dev/null +++ b/app/authzed/api/http-api/page.mdx @@ -0,0 +1,5 @@ +import { Swagger } from "@/components/swagger"; + +# HTTP API Documentation + + diff --git a/pages/authzed/concepts/audit-logging.mdx b/app/authzed/concepts/audit-logging/page.mdx similarity index 100% rename from pages/authzed/concepts/audit-logging.mdx rename to app/authzed/concepts/audit-logging/page.mdx diff --git a/pages/authzed/concepts/authzed-materialize.mdx b/app/authzed/concepts/authzed-materialize/page.mdx similarity index 100% rename from pages/authzed/concepts/authzed-materialize.mdx rename to app/authzed/concepts/authzed-materialize/page.mdx diff --git a/pages/authzed/concepts/feature-maturity.mdx b/app/authzed/concepts/feature-maturity/page.mdx similarity index 100% rename from pages/authzed/concepts/feature-maturity.mdx rename to app/authzed/concepts/feature-maturity/page.mdx diff --git a/pages/authzed/concepts/management-dashboard.mdx b/app/authzed/concepts/management-dashboard/page.mdx similarity index 100% rename from pages/authzed/concepts/management-dashboard.mdx rename to app/authzed/concepts/management-dashboard/page.mdx diff --git a/pages/authzed/concepts/multi-region.mdx b/app/authzed/concepts/multi-region/page.mdx similarity index 100% rename from pages/authzed/concepts/multi-region.mdx rename to app/authzed/concepts/multi-region/page.mdx diff --git a/pages/authzed/concepts/private-networking.mdx b/app/authzed/concepts/private-networking/page.mdx similarity index 100% rename from pages/authzed/concepts/private-networking.mdx rename to app/authzed/concepts/private-networking/page.mdx diff --git a/pages/authzed/concepts/restricted-api-access.mdx b/app/authzed/concepts/restricted-api-access/page.mdx similarity index 100% rename from pages/authzed/concepts/restricted-api-access.mdx rename to app/authzed/concepts/restricted-api-access/page.mdx diff --git a/pages/authzed/concepts/security-embargo.mdx b/app/authzed/concepts/security-embargo/page.mdx similarity index 100% rename from pages/authzed/concepts/security-embargo.mdx rename to app/authzed/concepts/security-embargo/page.mdx diff --git a/pages/authzed/concepts/update-channels.mdx b/app/authzed/concepts/update-channels/page.mdx similarity index 100% rename from pages/authzed/concepts/update-channels.mdx rename to app/authzed/concepts/update-channels/page.mdx diff --git a/pages/authzed/concepts/workload-isolation.mdx b/app/authzed/concepts/workload-isolation/page.mdx similarity index 95% rename from pages/authzed/concepts/workload-isolation.mdx rename to app/authzed/concepts/workload-isolation/page.mdx index 8fd6760..a3296f4 100644 --- a/pages/authzed/concepts/workload-isolation.mdx +++ b/app/authzed/concepts/workload-isolation/page.mdx @@ -1,4 +1,4 @@ -import YouTube from "react-youtube"; +import YouTube from "@/components/youtube-wrapper"; # Workload Isolation diff --git a/pages/authzed/guides/_meta.ts b/app/authzed/guides/_meta.ts similarity index 100% rename from pages/authzed/guides/_meta.ts rename to app/authzed/guides/_meta.ts diff --git a/pages/authzed/guides/cloud.mdx b/app/authzed/guides/cloud/page.mdx similarity index 98% rename from pages/authzed/guides/cloud.mdx rename to app/authzed/guides/cloud/page.mdx index b9efb20..9fdd88a 100644 --- a/pages/authzed/guides/cloud.mdx +++ b/app/authzed/guides/cloud/page.mdx @@ -1,5 +1,5 @@ import { Callout } from "nextra/components"; -import YouTube from "react-youtube"; +import YouTube from "@/components/youtube-wrapper"; # Getting Started with AuthZed Cloud diff --git a/pages/authzed/guides/picking-a-product.mdx b/app/authzed/guides/picking-a-product/page.mdx similarity index 100% rename from pages/authzed/guides/picking-a-product.mdx rename to app/authzed/guides/picking-a-product/page.mdx diff --git a/pages/authzed/guides/setting-up-private-networking.mdx b/app/authzed/guides/setting-up-private-networking/page.mdx similarity index 100% rename from pages/authzed/guides/setting-up-private-networking.mdx rename to app/authzed/guides/setting-up-private-networking/page.mdx diff --git a/pages/authzed/links/_meta.ts b/app/authzed/links/_meta.ts similarity index 83% rename from pages/authzed/links/_meta.ts rename to app/authzed/links/_meta.ts index f088674..8b48d86 100644 --- a/pages/authzed/links/_meta.ts +++ b/app/authzed/links/_meta.ts @@ -1,22 +1,20 @@ +import type { MetaRecord } from "nextra"; + export default { schedule: { title: "Schedule a Call", href: "https://authzed.com/call?utm_source=docs", - newWindow: true, }, changelog: { title: "Changelog", href: "https://changelog.authzed.cloud?utm_source=docs", - newWindow: true, }, "security-policies": { title: "Security Policies", href: "https://security.authzed.com?utm_source=docs", - newWindow: true, }, status: { title: "Service Status Page", href: "https://status.authzed.com?utm_source=docs", - newWindow: true, }, -}; +} satisfies MetaRecord; diff --git a/pages/best-practices/_meta.ts b/app/best-practices/_meta.ts similarity index 100% rename from pages/best-practices/_meta.ts rename to app/best-practices/_meta.ts diff --git a/pages/best-practices/index.mdx b/app/best-practices/page.mdx similarity index 100% rename from pages/best-practices/index.mdx rename to app/best-practices/page.mdx diff --git a/app/globals.css b/app/globals.css new file mode 100644 index 0000000..1c64aeb --- /dev/null +++ b/app/globals.css @@ -0,0 +1,95 @@ +@import "tailwindcss"; + +@custom-variant dark (&:is(html[class~="dark"] *)); + +@theme { + --breakpoint-*: initial; + --breakpoint-sm: 640px; + --breakpoint-md: 768px; + --breakpoint-lg: 1024px; + --breakpoint-xl: 1280px; + --breakpoint-2xl: 1536px; + + --text-*: initial; + --text-xs: 0.75rem; + --text-sm: 0.875rem; + --text-base: 1rem; + --text-lg: 1.125rem; + --text-xl: 1.25rem; + --text-2xl: 1.5rem; + --text-3xl: 1.875rem; + --text-4xl: 2.25rem; + --text-5xl: 3rem; + --text-6xl: 4rem; + + --tracking-*: initial; + --tracking-tight: -0.015em; + + --color-dark: #111; + --color-transparent: transparent; + --color-current: currentColor; + --color-black: #000; + --color-white: #fff; + + --color-primary-50: #fafafa; + --color-primary-100: #f5f5f5; + --color-primary-200: #e5e5e5; + --color-primary-300: #d4d4d4; + --color-primary-400: #a3a3a3; + --color-primary-500: #737373; + --color-primary-600: #525252; + --color-primary-700: #404040; + --color-primary-800: #262626; + --color-primary-900: #171717; + --color-primary-950: #0a0a0a; +} + +/* + The default border color has changed to `currentcolor` in Tailwind CSS v4, + so we've added these compatibility styles to make sure everything still + looks the same as it did with Tailwind CSS v3. + + If we ever want to remove these styles, we need to add an explicit border + color utility to any element that depends on these defaults. +*/ +@layer base { + *, + ::after, + ::before, + ::backdrop, + ::file-selector-button { + border-color: var(--color-gray-200, currentcolor); + } +} + +body { + font-feature-settings: + "rlig" 1, + "calt" 1; +} + +/* https://github.com/tjallingt/react-youtube/issues/242 */ +.youtubeContainer { + position: relative; + width: 100%; + height: 0; + padding-bottom: 56.25%; + overflow: hidden; + margin-bottom: 50px; +} + +.youtubeContainer iframe { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; +} + +.swagger-ui .information-container { + display: none; +} + +.swagger-ui .scheme-container { + display: none; +} diff --git a/app/layout.tsx b/app/layout.tsx new file mode 100644 index 0000000..a7846fa --- /dev/null +++ b/app/layout.tsx @@ -0,0 +1,109 @@ +import { Layout, Navbar, Footer } from "nextra-theme-docs"; +import Link from "next/link"; +import { Head, Search, Banner } from "nextra/components"; +import { getPageMap } from "nextra/page-map"; +import "nextra-theme-docs/style.css"; +import Logo from "@/components/icons/logo.svg"; +import LogoIcon from "@/components/icons/logo-icon.svg"; +import BannerContents from "@/components/banner"; +import Providers from "@/components/providers"; +import { TocCTA } from "@/components/cta"; +import type { Metadata, ResolvingMetadata } from "next"; +import { SpeedInsights } from "@vercel/speed-insights/next"; +import "./globals.css"; + +import { default as OurLayout } from "@/components/layout"; + +export const generateMetadata = async ( + _props: unknown, + parentPromise: ResolvingMetadata, +): Promise => { + const { description } = await parentPromise; + return { + metadataBase: new URL("https://authzed.com"), + title: { + default: "Authzed Docs", + template: "%s - Authzed Docs", + }, + description: "Welcome to the SpiceDB and AuthZed docs site.", + openGraph: { + title: { + default: "Authzed Docs", + template: "%s - Authzed Docs", + }, + description: description ?? undefined, + }, + alternates: { + // This is how you say "the current page is the canonical one", + // using the metadataBase field. + canonical: "./", + }, + }; +}; + +export default async function RootLayout({ children }) { + const pageMap = await getPageMap(); + const enableSearch = + process.env.NEXT_PUBLIC_ENABLE_SEARCH_BLOG_INTEGRATION === "true"; + + const navbar = ( + } + logoLink="https://authzed.com" + chatLink="https://authzed.com/discord" + projectLink="https://github.com/authzed/spicedb" + /> + ); + + return ( + + + + + + + } + navbar={navbar} + footer={ +
+ + + {" "} + © {new Date().getFullYear()} AuthZed. +
+ } + darkMode + docsRepositoryBase="https://github.com/authzed/docs/tree/main" + search={enableSearch && } + sidebar={{ + defaultMenuCollapseLevel: 1, + toggleButton: true, + }} + pageMap={pageMap} + feedback={{ + content: ( + + Something unclear? +
+ Create an issue → +
+ ), + }} + toc={{ backToTop: true, extraContent: }} + > + + + {children} + +
+ + + ); +} diff --git a/pages/mcp/_meta.ts b/app/mcp/_meta.ts similarity index 100% rename from pages/mcp/_meta.ts rename to app/mcp/_meta.ts diff --git a/pages/mcp/authzed/_meta.ts b/app/mcp/authzed/_meta.ts similarity index 100% rename from pages/mcp/authzed/_meta.ts rename to app/mcp/authzed/_meta.ts diff --git a/pages/mcp/authzed/authzed-mcp-server.mdx b/app/mcp/authzed/authzed-mcp-server/page.mdx similarity index 100% rename from pages/mcp/authzed/authzed-mcp-server.mdx rename to app/mcp/authzed/authzed-mcp-server/page.mdx diff --git a/pages/mcp/authzed/spicedb-dev-mcp-server.mdx b/app/mcp/authzed/spicedb-dev-mcp-server/page.mdx similarity index 100% rename from pages/mcp/authzed/spicedb-dev-mcp-server.mdx rename to app/mcp/authzed/spicedb-dev-mcp-server/page.mdx diff --git a/pages/mcp/index.mdx b/app/mcp/page.mdx similarity index 100% rename from pages/mcp/index.mdx rename to app/mcp/page.mdx diff --git a/pages/index.mdx b/app/page.mdx similarity index 70% rename from pages/index.mdx rename to app/page.mdx index 0ec4b14..fb847ae 100644 --- a/pages/index.mdx +++ b/app/page.mdx @@ -1,4 +1,6 @@ -# +--- +title: Authzed Docs +--- Browse documentation for **SpiceDB** or **AuthZed Products** by selecting one below. @@ -9,13 +11,13 @@ import { Cards } from "nextra/components"; image arrow title="View" - href="spicedb/getting-started/discovering-spicedb" + href="/spicedb/getting-started/discovering-spicedb" >

SpiceDB Documentation

- +

AuthZed Products Documentation

diff --git a/pages/spicedb/_meta.ts b/app/spicedb/_meta.ts similarity index 100% rename from pages/spicedb/_meta.ts rename to app/spicedb/_meta.ts diff --git a/pages/spicedb/api/_meta.ts b/app/spicedb/api/_meta.ts similarity index 82% rename from pages/spicedb/api/_meta.ts rename to app/spicedb/api/_meta.ts index 139b8b3..4ab1c4d 100644 --- a/pages/spicedb/api/_meta.ts +++ b/app/spicedb/api/_meta.ts @@ -1,8 +1,9 @@ +import type { MetaRecord } from "nextra"; + export default { "grpc-api": { title: "gRPC API Reference", href: "https://buf.build/authzed/api/docs/main:authzed.api.v1", - newWindow: true, }, "http-api": { title: "HTTP API Reference", @@ -10,6 +11,5 @@ export default { postman: { title: "Postman Collection", href: "https://www.postman.com/authzed/workspace/spicedb/overview", - newWindow: true, }, -}; +} satisfies MetaRecord; diff --git a/app/spicedb/api/http-api/page.mdx b/app/spicedb/api/http-api/page.mdx new file mode 100644 index 0000000..d5644f6 --- /dev/null +++ b/app/spicedb/api/http-api/page.mdx @@ -0,0 +1,5 @@ +import { Swagger } from "@/components/swagger"; + +# HTTP API Documentation + + diff --git a/pages/spicedb/concepts/_meta.ts b/app/spicedb/concepts/_meta.ts similarity index 100% rename from pages/spicedb/concepts/_meta.ts rename to app/spicedb/concepts/_meta.ts diff --git a/pages/spicedb/concepts/caveats.mdx b/app/spicedb/concepts/caveats/page.mdx similarity index 100% rename from pages/spicedb/concepts/caveats.mdx rename to app/spicedb/concepts/caveats/page.mdx diff --git a/pages/spicedb/concepts/commands.mdx b/app/spicedb/concepts/commands/page.mdx similarity index 98% rename from pages/spicedb/concepts/commands.mdx rename to app/spicedb/concepts/commands/page.mdx index 733b81a..939f3df 100644 --- a/pages/spicedb/concepts/commands.mdx +++ b/app/spicedb/concepts/commands/page.mdx @@ -27,13 +27,12 @@ A database that stores and computes permissions ### Children commands -- [spicedb datastore](#reference-spicedb-datastore) - datastore operations -- [spicedb lsp](#reference-spicedb-lsp) - serve language server protocol -- [spicedb man](#reference-spicedb-man) - Generate man page -- [spicedb serve](#reference-spicedb-serve) - serve the permissions database -- [spicedb serve-testing](#reference-spicedb-serve-testing) - test server with an in-memory datastore -- [spicedb version](#reference-spicedb-version) - displays the version of SpiceDB - +- [spicedb datastore](#reference-spicedb-datastore) - datastore operations +- [spicedb lsp](#reference-spicedb-lsp) - serve language server protocol +- [spicedb man](#reference-spicedb-man) - Generate man page +- [spicedb serve](#reference-spicedb-serve) - serve the permissions database +- [spicedb serve-testing](#reference-spicedb-serve-testing) - test server with an in-memory datastore +- [spicedb version](#reference-spicedb-version) - displays the version of SpiceDB ## Reference: `spicedb datastore` @@ -49,11 +48,10 @@ Operations against the configured datastore ### Children commands -- [spicedb datastore gc](#reference-spicedb-datastore-gc) - executes garbage collection -- [spicedb datastore head](#reference-spicedb-datastore-head) - compute the head (latest) database migration revision available -- [spicedb datastore migrate](#reference-spicedb-datastore-migrate) - execute datastore schema migrations -- [spicedb datastore repair](#reference-spicedb-datastore-repair) - executes datastore repair - +- [spicedb datastore gc](#reference-spicedb-datastore-gc) - executes garbage collection +- [spicedb datastore head](#reference-spicedb-datastore-head) - compute the head (latest) database migration revision available +- [spicedb datastore migrate](#reference-spicedb-datastore-migrate) - execute datastore schema migrations +- [spicedb datastore repair](#reference-spicedb-datastore-repair) - executes datastore repair ## Reference: `spicedb datastore gc` @@ -148,8 +146,6 @@ spicedb datastore gc [flags] --skip-release-check if true, skips checking for new SpiceDB releases ``` - - ## Reference: `spicedb datastore head` compute the head (latest) database migration revision available @@ -181,8 +177,6 @@ spicedb datastore head [flags] --skip-release-check if true, skips checking for new SpiceDB releases ``` - - ## Reference: `spicedb datastore migrate` Executes datastore schema migrations for the datastore. @@ -222,8 +216,6 @@ spicedb datastore migrate [revision] [flags] --skip-release-check if true, skips checking for new SpiceDB releases ``` - - ## Reference: `spicedb datastore repair` Executes a repair operation for the datastore @@ -317,8 +309,6 @@ spicedb datastore repair [flags] --skip-release-check if true, skips checking for new SpiceDB releases ``` - - ## Reference: `spicedb lsp` serve language server protocol @@ -342,12 +332,10 @@ spicedb lsp [flags] --skip-release-check if true, skips checking for new SpiceDB releases ``` - - ## Reference: `spicedb man` Generate a man page for SpiceDB. - The output can be redirected to a file and installed to the system: +The output can be redirected to a file and installed to the system: ``` spicedb man > spicedb.1 @@ -355,7 +343,6 @@ Generate a man page for SpiceDB. sudo mandb # Update man page database ``` - ``` spicedb man ``` @@ -368,8 +355,6 @@ spicedb man --skip-release-check if true, skips checking for new SpiceDB releases ``` - - ## Reference: `spicedb serve` start a SpiceDB server @@ -557,8 +542,6 @@ spicedb serve [flags] --skip-release-check if true, skips checking for new SpiceDB releases ``` - - ## Reference: `spicedb serve-testing` An in-memory spicedb server which serves completely isolated datastores per client-supplied auth token used. @@ -620,8 +603,6 @@ spicedb serve-testing [flags] --skip-release-check if true, skips checking for new SpiceDB releases ``` - - ## Reference: `spicedb version` displays the version of SpiceDB @@ -643,6 +624,3 @@ spicedb version [flags] --log-level string verbosity of logging ("trace", "debug", "info", "warn", "error") (default "info") --skip-release-check if true, skips checking for new SpiceDB releases ``` - - - diff --git a/pages/spicedb/concepts/consistency.mdx b/app/spicedb/concepts/consistency/page.mdx similarity index 99% rename from pages/spicedb/concepts/consistency.mdx rename to app/spicedb/concepts/consistency/page.mdx index d733d61..82dbb90 100644 --- a/pages/spicedb/concepts/consistency.mdx +++ b/app/spicedb/concepts/consistency/page.mdx @@ -1,4 +1,4 @@ -import YouTube from "react-youtube"; +import YouTube from "@/components/youtube-wrapper"; import { Callout } from "nextra/components"; # Consistency diff --git a/pages/spicedb/concepts/datastore-migrations.mdx b/app/spicedb/concepts/datastore-migrations/page.mdx similarity index 100% rename from pages/spicedb/concepts/datastore-migrations.mdx rename to app/spicedb/concepts/datastore-migrations/page.mdx diff --git a/pages/spicedb/concepts/datastores.mdx b/app/spicedb/concepts/datastores/page.mdx similarity index 100% rename from pages/spicedb/concepts/datastores.mdx rename to app/spicedb/concepts/datastores/page.mdx diff --git a/pages/spicedb/concepts/expiring-relationships.mdx b/app/spicedb/concepts/expiring-relationships/page.mdx similarity index 100% rename from pages/spicedb/concepts/expiring-relationships.mdx rename to app/spicedb/concepts/expiring-relationships/page.mdx diff --git a/pages/spicedb/concepts/reflection-apis.mdx b/app/spicedb/concepts/reflection-apis/page.mdx similarity index 100% rename from pages/spicedb/concepts/reflection-apis.mdx rename to app/spicedb/concepts/reflection-apis/page.mdx diff --git a/pages/spicedb/concepts/relationships.mdx b/app/spicedb/concepts/relationships/page.mdx similarity index 100% rename from pages/spicedb/concepts/relationships.mdx rename to app/spicedb/concepts/relationships/page.mdx diff --git a/pages/spicedb/concepts/schema.mdx b/app/spicedb/concepts/schema/page.mdx similarity index 99% rename from pages/spicedb/concepts/schema.mdx rename to app/spicedb/concepts/schema/page.mdx index e0c8079..96bc589 100644 --- a/pages/spicedb/concepts/schema.mdx +++ b/app/spicedb/concepts/schema/page.mdx @@ -1,5 +1,5 @@ import { Callout } from "nextra/components"; -import YouTube from "react-youtube"; +import YouTube from "@/components/youtube-wrapper"; import { InlinePlayground } from "@/components/playground"; # Schema Language Reference diff --git a/pages/spicedb/concepts/watch.mdx b/app/spicedb/concepts/watch/page.mdx similarity index 100% rename from pages/spicedb/concepts/watch.mdx rename to app/spicedb/concepts/watch/page.mdx diff --git a/pages/spicedb/concepts/zanzibar.mdx b/app/spicedb/concepts/zanzibar/page.mdx similarity index 99% rename from pages/spicedb/concepts/zanzibar.mdx rename to app/spicedb/concepts/zanzibar/page.mdx index b0d14ff..60a8b69 100644 --- a/pages/spicedb/concepts/zanzibar.mdx +++ b/app/spicedb/concepts/zanzibar/page.mdx @@ -1,4 +1,4 @@ -import YouTube from "react-youtube"; +import YouTube from "@/components/youtube-wrapper"; import ObjectTypeDiagram from "@/public/images/object-type-regex.svg"; import ObjectIDDiagram from "@/public/images/object-id-regex.svg"; import { Callout } from "nextra/components"; diff --git a/pages/spicedb/getting-started/_meta.ts b/app/spicedb/getting-started/_meta.ts similarity index 100% rename from pages/spicedb/getting-started/_meta.ts rename to app/spicedb/getting-started/_meta.ts diff --git a/pages/spicedb/getting-started/client-libraries.mdx b/app/spicedb/getting-started/client-libraries/page.mdx similarity index 100% rename from pages/spicedb/getting-started/client-libraries.mdx rename to app/spicedb/getting-started/client-libraries/page.mdx diff --git a/pages/spicedb/getting-started/coming-from/_meta.ts b/app/spicedb/getting-started/coming-from/_meta.ts similarity index 100% rename from pages/spicedb/getting-started/coming-from/_meta.ts rename to app/spicedb/getting-started/coming-from/_meta.ts diff --git a/pages/spicedb/getting-started/coming-from/cancancan.mdx b/app/spicedb/getting-started/coming-from/cancancan/page.mdx similarity index 100% rename from pages/spicedb/getting-started/coming-from/cancancan.mdx rename to app/spicedb/getting-started/coming-from/cancancan/page.mdx diff --git a/pages/spicedb/getting-started/coming-from/opa.mdx b/app/spicedb/getting-started/coming-from/opa/page.mdx similarity index 100% rename from pages/spicedb/getting-started/coming-from/opa.mdx rename to app/spicedb/getting-started/coming-from/opa/page.mdx diff --git a/pages/spicedb/getting-started/discovering-spicedb.mdx b/app/spicedb/getting-started/discovering-spicedb/page.mdx similarity index 100% rename from pages/spicedb/getting-started/discovering-spicedb.mdx rename to app/spicedb/getting-started/discovering-spicedb/page.mdx diff --git a/pages/spicedb/getting-started/faq.mdx b/app/spicedb/getting-started/faq/page.mdx similarity index 100% rename from pages/spicedb/getting-started/faq.mdx rename to app/spicedb/getting-started/faq/page.mdx diff --git a/pages/spicedb/getting-started/first-steps.mdx b/app/spicedb/getting-started/first-steps/page.mdx similarity index 98% rename from pages/spicedb/getting-started/first-steps.mdx rename to app/spicedb/getting-started/first-steps/page.mdx index a1aa303..24d52a7 100644 --- a/pages/spicedb/getting-started/first-steps.mdx +++ b/app/spicedb/getting-started/first-steps/page.mdx @@ -1,5 +1,5 @@ import { Cards, Steps } from "nextra/components"; -import YouTube from "react-youtube"; +import YouTube from "@/components/youtube-wrapper"; import { faTerminal, faServer, diff --git a/pages/spicedb/getting-started/install/_meta.ts b/app/spicedb/getting-started/install/_meta.ts similarity index 100% rename from pages/spicedb/getting-started/install/_meta.ts rename to app/spicedb/getting-started/install/_meta.ts diff --git a/pages/spicedb/getting-started/install/debian.mdx b/app/spicedb/getting-started/install/debian/page.mdx similarity index 100% rename from pages/spicedb/getting-started/install/debian.mdx rename to app/spicedb/getting-started/install/debian/page.mdx diff --git a/pages/spicedb/getting-started/install/docker.mdx b/app/spicedb/getting-started/install/docker/page.mdx similarity index 100% rename from pages/spicedb/getting-started/install/docker.mdx rename to app/spicedb/getting-started/install/docker/page.mdx diff --git a/pages/spicedb/getting-started/install/kubernetes.mdx b/app/spicedb/getting-started/install/kubernetes/page.mdx similarity index 100% rename from pages/spicedb/getting-started/install/kubernetes.mdx rename to app/spicedb/getting-started/install/kubernetes/page.mdx diff --git a/pages/spicedb/getting-started/install/macos.mdx b/app/spicedb/getting-started/install/macos/page.mdx similarity index 100% rename from pages/spicedb/getting-started/install/macos.mdx rename to app/spicedb/getting-started/install/macos/page.mdx diff --git a/pages/spicedb/getting-started/install/rhel.mdx b/app/spicedb/getting-started/install/rhel/page.mdx similarity index 100% rename from pages/spicedb/getting-started/install/rhel.mdx rename to app/spicedb/getting-started/install/rhel/page.mdx diff --git a/pages/spicedb/getting-started/install/windows.mdx b/app/spicedb/getting-started/install/windows/page.mdx similarity index 100% rename from pages/spicedb/getting-started/install/windows.mdx rename to app/spicedb/getting-started/install/windows/page.mdx diff --git a/pages/spicedb/getting-started/installing-zed.mdx b/app/spicedb/getting-started/installing-zed/page.mdx similarity index 100% rename from pages/spicedb/getting-started/installing-zed.mdx rename to app/spicedb/getting-started/installing-zed/page.mdx diff --git a/pages/spicedb/getting-started/protecting-a-blog.mdx b/app/spicedb/getting-started/protecting-a-blog/page.mdx similarity index 100% rename from pages/spicedb/getting-started/protecting-a-blog.mdx rename to app/spicedb/getting-started/protecting-a-blog/page.mdx diff --git a/pages/spicedb/links/_meta.ts b/app/spicedb/links/_meta.ts similarity index 84% rename from pages/spicedb/links/_meta.ts rename to app/spicedb/links/_meta.ts index ab75906..c0da549 100644 --- a/pages/spicedb/links/_meta.ts +++ b/app/spicedb/links/_meta.ts @@ -1,27 +1,24 @@ +import type { MetaRecord } from "nextra"; + export default { discord: { title: "SpiceDB Discord", href: "https://authzed.com/discord", - newWindow: true, }, discussions: { title: "GitHub Discussions", href: "https://github.com/orgs/authzed/discussions/new?category=q-a", - newWindow: true, }, "zanzibar-paper": { title: "Annotated Zanzibar Paper", href: "https://authzed.com/zanzibar", - newWindow: true, }, "awesome-list": { title: "SpiceDB Awesome List", href: "https://github.com/authzed/awesome-spicedb#user-content-awesome-spicedb", - newWindow: true, }, examples: { title: "Community Examples", href: "https://github.com/authzed/examples", - newWindow: true, }, -}; +} satisfies MetaRecord; diff --git a/pages/spicedb/modeling/_meta.ts b/app/spicedb/modeling/_meta.ts similarity index 100% rename from pages/spicedb/modeling/_meta.ts rename to app/spicedb/modeling/_meta.ts diff --git a/pages/spicedb/modeling/access-control-audit.mdx b/app/spicedb/modeling/access-control-audit/page.mdx similarity index 100% rename from pages/spicedb/modeling/access-control-audit.mdx rename to app/spicedb/modeling/access-control-audit/page.mdx diff --git a/pages/spicedb/modeling/access-control-management.mdx b/app/spicedb/modeling/access-control-management/page.mdx similarity index 100% rename from pages/spicedb/modeling/access-control-management.mdx rename to app/spicedb/modeling/access-control-management/page.mdx diff --git a/pages/spicedb/modeling/attributes.mdx b/app/spicedb/modeling/attributes/page.mdx similarity index 100% rename from pages/spicedb/modeling/attributes.mdx rename to app/spicedb/modeling/attributes/page.mdx diff --git a/pages/spicedb/modeling/composable-schemas.mdx b/app/spicedb/modeling/composable-schemas/page.mdx similarity index 100% rename from pages/spicedb/modeling/composable-schemas.mdx rename to app/spicedb/modeling/composable-schemas/page.mdx diff --git a/pages/spicedb/modeling/developing-a-schema.mdx b/app/spicedb/modeling/developing-a-schema/page.mdx similarity index 99% rename from pages/spicedb/modeling/developing-a-schema.mdx rename to app/spicedb/modeling/developing-a-schema/page.mdx index a5e2f64..35b13e3 100644 --- a/pages/spicedb/modeling/developing-a-schema.mdx +++ b/app/spicedb/modeling/developing-a-schema/page.mdx @@ -1,5 +1,5 @@ import { Callout } from "nextra/components"; -import YouTube from "react-youtube"; +import YouTube from "@/components/youtube-wrapper"; import { InlinePlayground } from "@/components/playground"; # Developing a Schema diff --git a/pages/spicedb/modeling/migrating-schema.mdx b/app/spicedb/modeling/migrating-schema/page.mdx similarity index 100% rename from pages/spicedb/modeling/migrating-schema.mdx rename to app/spicedb/modeling/migrating-schema/page.mdx diff --git a/pages/spicedb/modeling/protecting-a-list-endpoint.mdx b/app/spicedb/modeling/protecting-a-list-endpoint/page.mdx similarity index 100% rename from pages/spicedb/modeling/protecting-a-list-endpoint.mdx rename to app/spicedb/modeling/protecting-a-list-endpoint/page.mdx diff --git a/pages/spicedb/modeling/recursion-and-max-depth.mdx b/app/spicedb/modeling/recursion-and-max-depth/page.mdx similarity index 100% rename from pages/spicedb/modeling/recursion-and-max-depth.mdx rename to app/spicedb/modeling/recursion-and-max-depth/page.mdx diff --git a/pages/spicedb/modeling/representing-users.mdx b/app/spicedb/modeling/representing-users/page.mdx similarity index 100% rename from pages/spicedb/modeling/representing-users.mdx rename to app/spicedb/modeling/representing-users/page.mdx diff --git a/pages/spicedb/modeling/validation-testing-debugging.mdx b/app/spicedb/modeling/validation-testing-debugging/page.mdx similarity index 99% rename from pages/spicedb/modeling/validation-testing-debugging.mdx rename to app/spicedb/modeling/validation-testing-debugging/page.mdx index 75c78ab..04973c1 100644 --- a/pages/spicedb/modeling/validation-testing-debugging.mdx +++ b/app/spicedb/modeling/validation-testing-debugging/page.mdx @@ -1,5 +1,5 @@ import { Callout } from "nextra/components"; -import YouTube from "react-youtube"; +import YouTube from "@/components/youtube-wrapper"; # Validation, Testing, Debugging SpiceDB Schemas diff --git a/pages/spicedb/ops/_meta.ts b/app/spicedb/ops/_meta.ts similarity index 100% rename from pages/spicedb/ops/_meta.ts rename to app/spicedb/ops/_meta.ts diff --git a/pages/spicedb/ops/ai-agent-authorization.mdx b/app/spicedb/ops/ai-agent-authorization/page.mdx similarity index 100% rename from pages/spicedb/ops/ai-agent-authorization.mdx rename to app/spicedb/ops/ai-agent-authorization/page.mdx diff --git a/pages/spicedb/ops/data/_meta.ts b/app/spicedb/ops/data/_meta.ts similarity index 100% rename from pages/spicedb/ops/data/_meta.ts rename to app/spicedb/ops/data/_meta.ts diff --git a/pages/spicedb/ops/data/bulk-operations.mdx b/app/spicedb/ops/data/bulk-operations/page.mdx similarity index 100% rename from pages/spicedb/ops/data/bulk-operations.mdx rename to app/spicedb/ops/data/bulk-operations/page.mdx diff --git a/pages/spicedb/ops/data/migrations.mdx b/app/spicedb/ops/data/migrations/page.mdx similarity index 100% rename from pages/spicedb/ops/data/migrations.mdx rename to app/spicedb/ops/data/migrations/page.mdx diff --git a/pages/spicedb/ops/data/writing-relationships.mdx b/app/spicedb/ops/data/writing-relationships/page.mdx similarity index 100% rename from pages/spicedb/ops/data/writing-relationships.mdx rename to app/spicedb/ops/data/writing-relationships/page.mdx diff --git a/pages/spicedb/ops/deploying-spicedb-operator.mdx b/app/spicedb/ops/deploying-spicedb-operator/page.mdx similarity index 100% rename from pages/spicedb/ops/deploying-spicedb-operator.mdx rename to app/spicedb/ops/deploying-spicedb-operator/page.mdx diff --git a/pages/spicedb/ops/eks.mdx b/app/spicedb/ops/eks/page.mdx similarity index 99% rename from pages/spicedb/ops/eks.mdx rename to app/spicedb/ops/eks/page.mdx index 5a446e0..e975b32 100644 --- a/pages/spicedb/ops/eks.mdx +++ b/app/spicedb/ops/eks/page.mdx @@ -1,5 +1,5 @@ import { Callout, Steps } from "nextra/components"; -import YouTube from "react-youtube"; +import YouTube from "@/components/youtube-wrapper"; # Installing SpiceDB on Amazon EKS diff --git a/pages/spicedb/ops/load-testing.mdx b/app/spicedb/ops/load-testing/page.mdx similarity index 99% rename from pages/spicedb/ops/load-testing.mdx rename to app/spicedb/ops/load-testing/page.mdx index 27eed4f..e3fb07a 100644 --- a/pages/spicedb/ops/load-testing.mdx +++ b/app/spicedb/ops/load-testing/page.mdx @@ -1,5 +1,5 @@ import { Callout, Tabs } from "nextra/components"; -import YouTube from "react-youtube"; +import YouTube from "@/components/youtube-wrapper"; import { InlinePlayground } from "@/components/playground"; diff --git a/pages/spicedb/ops/observability.mdx b/app/spicedb/ops/observability/page.mdx similarity index 99% rename from pages/spicedb/ops/observability.mdx rename to app/spicedb/ops/observability/page.mdx index b5ac042..d44a16d 100644 --- a/pages/spicedb/ops/observability.mdx +++ b/app/spicedb/ops/observability/page.mdx @@ -1,5 +1,5 @@ import { Callout, Tabs } from "nextra/components"; -import YouTube from "react-youtube"; +import YouTube from "@/components/youtube-wrapper"; # Observability Tooling diff --git a/pages/spicedb/ops/operator.mdx b/app/spicedb/ops/operator/page.mdx similarity index 100% rename from pages/spicedb/ops/operator.mdx rename to app/spicedb/ops/operator/page.mdx diff --git a/pages/spicedb/ops/performance.mdx b/app/spicedb/ops/performance/page.mdx similarity index 100% rename from pages/spicedb/ops/performance.mdx rename to app/spicedb/ops/performance/page.mdx diff --git a/pages/spicedb/ops/secure-rag-pipelines.mdx b/app/spicedb/ops/secure-rag-pipelines/page.mdx similarity index 100% rename from pages/spicedb/ops/secure-rag-pipelines.mdx rename to app/spicedb/ops/secure-rag-pipelines/page.mdx diff --git a/pages/spicedb/ops/spicedb-langchain-langgraph-rag.mdx b/app/spicedb/ops/spicedb-langchain-langgraph-rag/page.mdx similarity index 100% rename from pages/spicedb/ops/spicedb-langchain-langgraph-rag.mdx rename to app/spicedb/ops/spicedb-langchain-langgraph-rag/page.mdx diff --git a/components/banner.tsx b/components/banner.tsx index 07a2012..bb4d50a 100644 --- a/components/banner.tsx +++ b/components/banner.tsx @@ -1,8 +1,10 @@ +"use client"; + import { usePathname } from "next/navigation"; export default function Banner() { const pathname = usePathname(); - const isCommercial = pathname.startsWith("/authzed/"); + const isCommercial = pathname?.startsWith("/authzed/"); return isCommercial ? ( diff --git a/components/cta.tsx b/components/cta.tsx index 6701b3b..f6fda5b 100644 --- a/components/cta.tsx +++ b/components/cta.tsx @@ -1,3 +1,5 @@ +"use client"; + import { Button } from "@/components/ui/button"; import { faPhone } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; @@ -6,7 +8,7 @@ import { usePathname } from "next/navigation"; export function TocCTA() { const pathname = usePathname(); - const isCommercial = pathname.startsWith("/authzed/"); + const isCommercial = pathname?.startsWith("/authzed/"); return isCommercial ? (
@@ -24,11 +26,3 @@ export function TocCTA() { <> ); } - -export function NavCTA() { - const pathname = usePathname(); - const isCommercial = pathname.startsWith("/authzed/"); - - // TODO: No-ops for now - return isCommercial ? <> : <>; -} diff --git a/components/footer.tsx b/components/footer.tsx deleted file mode 100644 index 9e10d84..0000000 --- a/components/footer.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import Link from "next/link"; -import { LogoIcon } from "./logo"; -import Scripts from "./scripts"; - -export default function Footer() { - return ( - // Copied from nextra-theme-docs sidebar container -
-
-
-
- {/* TODO: Add footer links here */} - - - -
- -
- © {new Date().getFullYear()} AuthZed. -
-
-
- -
- ); -} diff --git a/components/icons/logo-icon.svg b/components/icons/logo-icon.svg new file mode 100644 index 0000000..80922e2 --- /dev/null +++ b/components/icons/logo-icon.svg @@ -0,0 +1,16 @@ + + + + + diff --git a/components/icons/logo.svg b/components/icons/logo.svg new file mode 100644 index 0000000..ca77c61 --- /dev/null +++ b/components/icons/logo.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + diff --git a/components/logo.tsx b/components/logo.tsx deleted file mode 100644 index 6381c1d..0000000 --- a/components/logo.tsx +++ /dev/null @@ -1,92 +0,0 @@ -export function Logo() { - return ( - - - - - - - - - - - - - - ); -} - -export function LogoIcon() { - return ( - - - - - - ); -} diff --git a/components/nextra/ExternalIcon.tsx b/components/nextra/ExternalIcon.tsx deleted file mode 100644 index 753cc01..0000000 --- a/components/nextra/ExternalIcon.tsx +++ /dev/null @@ -1,21 +0,0 @@ -export default function ExternalIcon(props: { className?: string }) { - return ( - - - - - - ); -} diff --git a/components/nextra/Flexsearch.tsx b/components/nextra/Flexsearch.tsx deleted file mode 100644 index 326eda9..0000000 --- a/components/nextra/Flexsearch.tsx +++ /dev/null @@ -1,408 +0,0 @@ -// Forked from https://github.com/shuding/nextra/blob/7c8c4989021cb556a2f2f9e72b814efa311d7c2b/packages/nextra-theme-docs/src/components/flexsearch.tsx -// MIT License - -// Copyright (c) 2020 Shu Ding - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -import cn from "clsx"; -// flexsearch types are incorrect, they were overwritten in tsconfig.json -import { Document } from "flexsearch"; -import { useRouter } from "next/router"; -import type { SearchData } from "nextra"; -import type { ReactElement, ReactNode } from "react"; -import { useCallback, useState } from "react"; -import ExternalIcon from "./ExternalIcon"; -import { HighlightMatches } from "./HighlightMatches"; -import { Search } from "./Search"; -import { SearchResult } from "./types"; - -// Diff: Inlined definitions -export const DEFAULT_LOCALE = "en-US"; - -type SectionIndex = { - id: string; - url: string; - title: string; - pageId: string; - content: string; - display?: string; -}; - -type PageIndex = { - id: number; - title: string; - content: string; -}; - -// Diff: Additional index for blog posts -type BlogIndex = { - id: number; - title: string; - content: string; - url: string; - summary: string; -}; - -type Result = { - _page_rk: number; - _section_rk: number; - route: string; - prefix: ReactNode; - children: ReactNode; -}; - -// This can be global for better caching. -const indexes: { - // tuple is PageIndex, SectionIndex - [locale: string]: [Document, Document]; -} = {}; - -// Diff: Index for blog posts -// Associated type is BlogIndex -const blogIndex = new Document({ - cache: 100, - tokenize: "forward", - document: { - id: "id", - index: "content", - store: ["title", "url", "summary"], - }, -}); - -// Caches promises that load the index -const loadIndexesPromises = new Map>(); -const loadIndexes = (basePath: string, locale: string): Promise => { - const key = basePath + "@" + locale; - if (loadIndexesPromises.has(key)) { - return loadIndexesPromises.get(key)!; - } - const promise = loadIndexesImpl(basePath, locale); - loadIndexesPromises.set(key, promise); - return promise; -}; - -// Diff: Function for loading blog posts -const loadBlogData = async (basePath: string | undefined) => { - const response = await fetch(`${basePath ?? ""}/feed.json`, { - cache: "force-cache", - }); - const content = await response.json(); - - return content.items.map((item, i) => { - return { - id: i, - title: item.title, - content: item["content_html"], - url: item.url, - summary: item.summary, - }; - }); -}; - -const loadIndexesImpl = async ( - basePath: string, - locale: string, -): Promise => { - const response = await fetch( - `${basePath}/_next/static/chunks/nextra-data-${locale}.json`, - ); - const searchData = (await response.json()) as SearchData; - // Diff: Load blog data - const blogData = await loadBlogData(basePath); - - // Associated type is PageIndex - const pageIndex = new Document({ - cache: 100, - tokenize: "full", - document: { - id: "id", - index: "content", - store: ["title"], - }, - context: { - resolution: 9, - depth: 2, - bidirectional: true, - }, - }); - - // Associated type is SectionIndex - const sectionIndex = new Document({ - cache: 100, - tokenize: "full", - document: { - id: "id", - index: "content", - tag: "pageId", - store: ["title", "content", "url", "display"], - }, - context: { - resolution: 9, - depth: 2, - bidirectional: true, - }, - }); - - let pageId = 0; - - for (const [route, structurizedData] of Object.entries(searchData)) { - let pageContent = ""; - ++pageId; - - for (const [key, content] of Object.entries(structurizedData.data)) { - const [headingId, headingValue] = key.split("#"); - const url = route + (headingId ? "#" + headingId : ""); - const title = headingValue || structurizedData.title; - const paragraphs = content.split("\n"); - - sectionIndex.add({ - id: url, - url, - title, - pageId: `page_${pageId}`, - content: title, - ...(paragraphs[0] && { display: paragraphs[0] }), - }); - - for (let i = 0; i < paragraphs.length; i++) { - sectionIndex.add({ - id: `${url}_${i}`, - url, - title, - pageId: `page_${pageId}`, - content: paragraphs[i], - }); - } - - // Add the page itself. - pageContent += ` ${title} ${content}`; - } - - pageIndex.add({ - id: pageId, - title: structurizedData.title, - content: pageContent, - }); - } - - // Diff: Add posts to index - blogData.map((post) => { - blogIndex.add(post); - }); - - indexes[locale] = [pageIndex, sectionIndex]; -}; - -export function Flexsearch({ - className, -}: { - className?: string; -}): ReactElement { - const { locale = DEFAULT_LOCALE, basePath } = useRouter(); - const [loading, setLoading] = useState(false); - const [error, setError] = useState(false); - const [results, setResults] = useState([]); - const [search, setSearch] = useState(""); - - const doSearch = (search: string) => { - if (!search) return; - const [pageIndex, sectionIndex] = indexes[locale]; - - // Show the results for the top 5 pages - const pageResults = - pageIndex.search(search, 5, { - enrich: true, - suggest: true, - })[0]?.result || []; - - const results: Result[] = []; - const pageTitleMatches: Record = {}; - - // Diff: Actually limit page results to 3 - for (let i = 0; i < Math.min(pageResults.length, 3); i++) { - const result = pageResults[i]; - pageTitleMatches[i] = 0; - - // Show the top 5 results for each page - const sectionResults = - sectionIndex.search(search, 5, { - enrich: true, - suggest: true, - tag: `page_${result.id}`, - })[0]?.result || []; - - let isFirstItemOfPage = true; - const occurred: Record = {}; - - for (let j = 0; j < sectionResults.length; j++) { - const { doc } = sectionResults[j]; - const isMatchingTitle = doc.display !== undefined; - if (isMatchingTitle) { - pageTitleMatches[i]++; - } - const { url, title } = doc; - const content = doc.display || doc.content; - if (occurred[url + "@" + content]) continue; - occurred[url + "@" + content] = true; - results.push({ - _page_rk: i, - _section_rk: j, - route: url, - prefix: isFirstItemOfPage && ( -
- {result.doc.title} -
- ), - children: ( - <> -
- -
- {content && ( -
- -
- )} - - ), - }); - isFirstItemOfPage = false; - } - } - - // Diff: Adjust result sorting - const pageCounts = new Map(); - const docsSorted = results - .sort((a, b) => { - // Sort by number of matches in the title. - if (a._page_rk === b._page_rk) { - return a._section_rk - b._section_rk; - } - if (pageTitleMatches[a._page_rk] !== pageTitleMatches[b._page_rk]) { - return pageTitleMatches[b._page_rk] - pageTitleMatches[a._page_rk]; - } - return a._page_rk - b._page_rk; - }) - .filter((result) => { - const sectionCount = (pageCounts.get(result._page_rk) ?? 0) + 1; - pageCounts.set(result._page_rk, sectionCount); - // Limit section results to 3 - return sectionCount <= 3; - }, []) - .map((res) => ({ - id: `${res._page_rk}_${res._section_rk}`, - route: res.route, - prefix: res.prefix, - children: res.children, - })); - - const blogResults = - blogIndex.search(search, 5, { - enrich: true, - suggest: true, - })[0]?.result || []; - - // Diff: Include blog results - blogResults.map((item, i) => { - // Limit blog results to 3 - if (i >= 3) return; - - docsSorted.push({ - id: `${item.id}`, - route: item.doc.url, - prefix: ( -
- AuthZed Blog -
- ), - children: ( - <> -
- -
- {item.doc.summary && ( -
- -
- )} - - ), - }); - }); - - setResults(docsSorted); - }; - - const preload = useCallback( - async (active: boolean) => { - if (active && !indexes[locale]) { - setLoading(true); - try { - await loadIndexes(basePath, locale); - } catch (e) { - setError(true); - } - setLoading(false); - } - }, - [locale, basePath], - ); - - const handleChange = async (value: string) => { - setSearch(value); - if (loading) { - return; - } - if (!indexes[locale]) { - setLoading(true); - try { - await loadIndexes(basePath, locale); - } catch (e) { - setError(true); - } - setLoading(false); - } - doSearch(value); - }; - - return ( - - ); -} diff --git a/components/nextra/HighlightMatches.tsx b/components/nextra/HighlightMatches.tsx deleted file mode 100644 index 298fbc4..0000000 --- a/components/nextra/HighlightMatches.tsx +++ /dev/null @@ -1,71 +0,0 @@ -// Forked from https://github.com/shuding/nextra/blob/2e78fe5f52a523399eb491fe525b67c7534f2f0e/packages/nextra-theme-docs/src/components/highlight-matches.tsx -// MIT License - -// Copyright (c) 2020 Shu Ding - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -import escapeStringRegexp from "escape-string-regexp"; -import type { ReactElement, ReactNode } from "react"; -import { memo } from "react"; - -type MatchArgs = { - value?: string; - match: string; -}; - -export const HighlightMatches = memo(function HighlightMatches({ - value, - match, -}: MatchArgs): ReactElement | null { - if (!value) { - return null; - } - const splitText = value.split(""); - const escapedSearch = escapeStringRegexp(match.trim()); - const regexp = new RegExp(escapedSearch.replaceAll(/\s+/g, "|"), "ig"); - let result; - let index = 0; - const content: (string | ReactNode)[] = []; - - while ((result = regexp.exec(value))) { - if (result.index === regexp.lastIndex) { - regexp.lastIndex++; - } else { - const before = splitText.splice(0, result.index - index).join(""); - const after = splitText - .splice(0, regexp.lastIndex - result.index) - .join(""); - content.push( - before, - - {after} - , - ); - index = regexp.lastIndex; - } - } - - return ( - <> - {content} - {splitText.join("")} - - ); -}); diff --git a/components/nextra/Input.tsx b/components/nextra/Input.tsx deleted file mode 100644 index 203e016..0000000 --- a/components/nextra/Input.tsx +++ /dev/null @@ -1,52 +0,0 @@ -// Forked from https://github.com/shuding/nextra/blob/2e78fe5f52a523399eb491fe525b67c7534f2f0e/packages/nextra-theme-docs/src/components/input.tsx -// MIT License - -// Copyright (c) 2020 Shu Ding - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -import cn from "clsx"; -import type { ComponentProps, ReactNode } from "react"; -import { forwardRef } from "react"; - -type InputProps = ComponentProps<"input"> & { suffix?: ReactNode }; - -export const Input = forwardRef( - ({ className, suffix, ...props }, forwardedRef) => ( -
- - {suffix} -
- ), -); - -Input.displayName = "Input"; diff --git a/components/nextra/Search.tsx b/components/nextra/Search.tsx deleted file mode 100644 index b1f38c1..0000000 --- a/components/nextra/Search.tsx +++ /dev/null @@ -1,324 +0,0 @@ -// Forked from https://github.com/shuding/nextra/blob/2e78fe5f52a523399eb491fe525b67c7534f2f0e/packages/nextra-theme-docs/src/components/search.tsx -// MIT License - -// Copyright (c) 2020 Shu Ding - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -import { Transition } from "@headlessui/react"; -import cn from "clsx"; -import { useRouter } from "next/router"; -import { Link } from "nextra-theme-docs"; -import { useMounted } from "nextra/hooks"; -import { InformationCircleIcon, SpinnerIcon } from "nextra/icons"; -import { usePostHog } from "posthog-js/react"; -import type { CompositionEvent, KeyboardEvent, ReactElement } from "react"; -import { Fragment, useCallback, useEffect, useRef, useState } from "react"; -import { Input } from "./Input"; -import { SearchResult } from "./types"; - -type SearchProps = { - className?: string; - overlayClassName?: string; - value: string; - onChange: (newValue: string) => void; - onActive?: (active: boolean) => void; - loading?: boolean; - error?: boolean; - results: SearchResult[]; -}; - -const INPUTS = ["input", "select", "button", "textarea"]; - -export function Search({ - className, - overlayClassName, - value, - onChange, - onActive, - loading, - error, - results, -}: SearchProps): ReactElement { - const [show, setShow] = useState(false); - const [active, setActive] = useState(0); - const router = useRouter(); - // const { setMenu } = useMenu(); - const input = useRef(null); - const ulRef = useRef(null); - const [focused, setFocused] = useState(false); - // Trigger the search after the Input is complete for languages like Chinese - const [composition, setComposition] = useState(true); - const posthog = usePostHog(); - - useEffect(() => { - setActive(0); - }, [value]); - - useEffect(() => { - const down = (e: globalThis.KeyboardEvent): void => { - const activeElement = document.activeElement as HTMLElement; - const tagName = activeElement?.tagName.toLowerCase(); - if ( - !input.current || - !tagName || - INPUTS.includes(tagName) || - activeElement?.isContentEditable - ) - return; - if ( - e.key === "/" || - (e.key === "k" && - (e.metaKey /* for Mac */ || /* for non-Mac */ e.ctrlKey)) - ) { - e.preventDefault(); - // prevent to scroll to top - input.current.focus({ preventScroll: true }); - } else if (e.key === "Escape") { - setShow(false); - input.current.blur(); - } - }; - - window.addEventListener("keydown", down); - return () => { - window.removeEventListener("keydown", down); - }; - }, []); - - const finishSearch = useCallback(() => { - posthog?.capture("search", { query: input.current.value }); - input.current?.blur(); - onChange(""); - setShow(false); - // setMenu(false); - // }, [onChange, setMenu]); - }, [onChange]); - - const handleActive = useCallback( - (e: { currentTarget: { dataset: DOMStringMap } }) => { - const { index } = e.currentTarget.dataset; - setActive(Number(index)); - }, - [], - ); - - const handleKeyDown = useCallback( - function (e: KeyboardEvent) { - switch (e.key) { - case "ArrowDown": { - if (active + 1 < results.length) { - const el = ulRef.current?.querySelector( - `li:nth-of-type(${active + 2}) > a`, - ); - if (el) { - e.preventDefault(); - handleActive({ currentTarget: el }); - el.focus(); - } - } - break; - } - case "ArrowUp": { - if (active - 1 >= 0) { - const el = ulRef.current?.querySelector( - `li:nth-of-type(${active}) > a`, - ); - if (el) { - e.preventDefault(); - handleActive({ currentTarget: el }); - el.focus(); - } - } - break; - } - case "Enter": { - const result = results[active]; - if (result && composition) { - void router.push(result.route); - finishSearch(); - } - break; - } - case "Escape": { - setShow(false); - input.current?.blur(); - break; - } - } - }, - [active, results, router, finishSearch, handleActive, composition], - ); - - const mounted = useMounted(); - const renderList = show && Boolean(value); - - const icon = ( - - { - onChange(""); - }} - > - {value && focused - ? "ESC" - : mounted && - (navigator.userAgent.includes("Macintosh") ? ( - <> - K - - ) : ( - "CTRL K" - ))} - - - ); - const handleComposition = useCallback( - (e: CompositionEvent) => { - setComposition(e.type === "compositionend"); - }, - [], - ); - - return ( -
- {renderList && ( -
setShow(false)} - /> - )} - - { - const { value } = e.target; - onChange(value); - setShow(Boolean(value)); - }} - onFocus={() => { - onActive?.(true); - setFocused(true); - }} - onBlur={() => { - setFocused(false); - }} - onCompositionStart={handleComposition} - onCompositionEnd={handleComposition} - type="search" - placeholder="Search Documentation..." - onKeyDown={handleKeyDown} - suffix={icon} - /> - - -
    - {error ? ( - - - Error while searching. - - ) : loading ? ( - - - - - - Loading... - - - ) : results.length > 0 ? ( - results.map(({ route, prefix, children, id }, i) => ( - - {prefix} -
  • - - {children} - -
  • -
    - )) - ) : ( -
    No Results
    - )} -
-
-
- ); -} diff --git a/components/nextra/types.ts b/components/nextra/types.ts deleted file mode 100644 index ee2c944..0000000 --- a/components/nextra/types.ts +++ /dev/null @@ -1,31 +0,0 @@ -// Forked from https://github.com/shuding/nextra/blob/2e78fe5f52a523399eb491fe525b67c7534f2f0e/packages/nextra-theme-docs/src/types.ts -// MIT License - -// Copyright (c) 2020 Shu Ding - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -import { ReactNode } from "react"; - -export type SearchResult = { - children: ReactNode; - id: string; - prefix?: ReactNode; - route: string; -}; diff --git a/components/providers.tsx b/components/providers.tsx new file mode 100644 index 0000000..f9f3739 --- /dev/null +++ b/components/providers.tsx @@ -0,0 +1,9 @@ +"use client"; + +import posthog from "posthog-js"; +import { PostHogProvider } from "posthog-js/react"; +import type { ReactNode } from "react"; + +export default function Providers({ children }: { children: ReactNode }) { + return {children}; +} diff --git a/components/swagger.tsx b/components/swagger.tsx index 1f84486..5b3cde0 100644 --- a/components/swagger.tsx +++ b/components/swagger.tsx @@ -1,3 +1,5 @@ +"use client"; + import dynamic from "next/dynamic"; import type { SwaggerUIProps } from "swagger-ui-react"; @@ -11,7 +13,7 @@ const SwaggerUI = dynamic( import "swagger-ui-react/swagger-ui.css"; -export function Swagger(props: {}) { +export function Swagger() { return ( ({ + ...docsComponents, + ...components, +}); diff --git a/next-env.d.ts b/next-env.d.ts index 52e831b..36a4fe4 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -1,5 +1,7 @@ /// /// +/// +/// // NOTE: This file should not be edited -// see https://nextjs.org/docs/pages/api-reference/config/typescript for more information. +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/next.config.mjs b/next.config.mjs index 551a36b..13543e7 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,30 +1,10 @@ import nextra from "nextra"; import { createHighlighter } from "shiki"; -import { readFileSync } from "fs"; -import { join } from "path"; - -const authzedGrammar = JSON.parse( - readFileSync( - join(import.meta.dirname, "./grammars/authzed.tmLanguage.json"), - "utf8", - ), -); -const celGrammar = JSON.parse( - readFileSync( - join(import.meta.dirname, "./grammars/cel.tmLanguage.json"), - "utf8", - ), -); -const textProtoGrammar = JSON.parse( - readFileSync( - join(import.meta.dirname, "./grammars/textproto.tmLanguage.json"), - "utf8", - ), -); +import authzedGrammar from "./grammars/authzed.tmLanguage.json" with { type: "json" }; +import celGrammar from "./grammars/cel.tmLanguage.json" with { type: "json" }; +import textProtoGrammar from "./grammars/textproto.tmLanguage.json" with { type: "json" }; const withNextra = nextra({ - theme: "nextra-theme-docs", - themeConfig: "./theme.config.tsx", latex: true, search: { codeblocks: false }, defaultShowCopyCode: true, diff --git a/package.json b/package.json index 495921b..976db54 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "postbuild": "./scripts/postbuild.sh", "start": "next start", "lint:markdown": "markdownlint-cli2", + "gen:pagefind": "node --experimental-strip-types scripts/buildSearchIndex.mts", "format:check": "prettier -c .", "format": "prettier -w ." }, @@ -20,43 +21,40 @@ "@fortawesome/free-brands-svg-icons": "^6.5.2", "@fortawesome/free-solid-svg-icons": "^6.5.2", "@fortawesome/react-fontawesome": "^0.2.2", - "@headlessui/react": "^1.7.19", - "@radix-ui/react-slot": "^1.1.0", + "@radix-ui/react-slot": "^1.2.4", "@segment/in-eu": "^0.4.0", "@svgr/webpack": "^8.1.0", "@vercel/speed-insights": "^1.0.12", - "class-variance-authority": "^0.7.0", + "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "escape-string-regexp": "^5.0.0", - "flexsearch": "^0.8.143", "js-yaml": "^4.1.0", "next": "^15.5.7", "next-sitemap": "^4.2.3", - "nextra": "^3", - "nextra-theme-docs": "^3", + "nextra": "^4.6.0", + "nextra-theme-docs": "^4.6.0", "posthog-js": "^1.223.5", "react": "^18.3.1", "react-dom": "^18.3.1", "react-youtube": "^10.1.0", "sharp": "^0.34.0", "swagger-ui-react": "^5.30.2", - "tailwind-merge": "^2.4.0" + "tailwind-merge": "^3.4.0", + "tailwindcss": "^4.1.17" }, "devDependencies": { - "@tailwindcss/line-clamp": "^0.4.4", - "@tailwindcss/typography": "^0.5.13", + "@tailwindcss/postcss": "^4.1.17", "@types/flexsearch": "^0.7.6", "@types/js-yaml": "^4.0.9", "@types/node": "22.15.29", "@types/react": "^19.1.6", - "autoprefixer": "^10.4.19", "markdownlint-cli2": "^0.13.0", "markdownlint-rule-max-one-sentence-per-line": "^0.0.2", - "postcss": "^8.4.39", + "pagefind": "^1.4.0", + "postcss": "^8.5.6", "prettier": "^3.6.2", - "shiki": "^1.29.2", - "tailwindcss": "^3.4.4", - "typescript": "^4.9.5", + "shiki": "^3.15.0", + "typescript": "^5.9.3", "yaml-loader": "^0.8.1" }, "packageManager": "pnpm@10.17.1" diff --git a/pages/_app.tsx b/pages/_app.tsx deleted file mode 100644 index f9b193e..0000000 --- a/pages/_app.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import posthog from "posthog-js"; -import { PostHogProvider } from "posthog-js/react"; -import { SpeedInsights } from "@vercel/speed-insights/next"; - -import Layout from "@/components/layout"; -import "../globals.css"; - -export default function MyApp({ Component, pageProps }) { - return ( - - - - - - - ); -} diff --git a/pages/authzed/api/http-api.mdx b/pages/authzed/api/http-api.mdx deleted file mode 100644 index 5304c61..0000000 --- a/pages/authzed/api/http-api.mdx +++ /dev/null @@ -1,5 +0,0 @@ -import { Swagger } from "../../../components/swagger"; - -# HTTP API Documentation - - diff --git a/pages/spicedb/api/http-api.mdx b/pages/spicedb/api/http-api.mdx deleted file mode 100644 index 5304c61..0000000 --- a/pages/spicedb/api/http-api.mdx +++ /dev/null @@ -1,5 +0,0 @@ -import { Swagger } from "../../../components/swagger"; - -# HTTP API Documentation - - diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cee3b54..d148189 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,33 +20,27 @@ importers: '@fortawesome/react-fontawesome': specifier: ^0.2.2 version: 0.2.2(@fortawesome/fontawesome-svg-core@6.5.2)(react@18.3.1) - '@headlessui/react': - specifier: ^1.7.19 - version: 1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-slot': - specifier: ^1.1.0 - version: 1.1.0(@types/react@19.1.6)(react@18.3.1) + specifier: ^1.2.4 + version: 1.2.4(@types/react@19.1.6)(react@18.3.1) '@segment/in-eu': specifier: ^0.4.0 version: 0.4.0 '@svgr/webpack': specifier: ^8.1.0 - version: 8.1.0(typescript@4.9.5) + version: 8.1.0(typescript@5.9.3) '@vercel/speed-insights': specifier: ^1.0.12 version: 1.0.12(next@15.5.7(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) class-variance-authority: - specifier: ^0.7.0 - version: 0.7.0 + specifier: ^0.7.1 + version: 0.7.1 clsx: specifier: ^2.1.1 version: 2.1.1 escape-string-regexp: specifier: ^5.0.0 version: 5.0.0 - flexsearch: - specifier: ^0.8.143 - version: 0.8.158 js-yaml: specifier: ^4.1.0 version: 4.1.0 @@ -57,11 +51,11 @@ importers: specifier: ^4.2.3 version: 4.2.3(next@15.5.7(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) nextra: - specifier: ^3 - version: 3.3.1(@types/react@19.1.6)(next@15.5.7(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@4.9.5) + specifier: ^4.6.0 + version: 4.6.0(next@15.5.7(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3) nextra-theme-docs: - specifier: ^3 - version: 3.3.1(next@15.5.7(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@3.3.1(@types/react@19.1.6)(next@15.5.7(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@4.9.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^4.6.0 + version: 4.6.0(@types/react@19.1.6)(next@15.5.7(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@4.6.0(next@15.5.7(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(use-sync-external-store@1.6.0(react@18.3.1)) posthog-js: specifier: ^1.223.5 version: 1.223.5(@rrweb/types@2.0.0-alpha.17) @@ -81,15 +75,15 @@ importers: specifier: ^5.30.2 version: 5.30.2(@types/react@19.1.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tailwind-merge: - specifier: ^2.4.0 - version: 2.4.0 + specifier: ^3.4.0 + version: 3.4.0 + tailwindcss: + specifier: ^4.1.17 + version: 4.1.17 devDependencies: - '@tailwindcss/line-clamp': - specifier: ^0.4.4 - version: 0.4.4(tailwindcss@3.4.4) - '@tailwindcss/typography': - specifier: ^0.5.13 - version: 0.5.13(tailwindcss@3.4.4) + '@tailwindcss/postcss': + specifier: ^4.1.17 + version: 4.1.17 '@types/flexsearch': specifier: ^0.7.6 version: 0.7.6 @@ -102,30 +96,27 @@ importers: '@types/react': specifier: ^19.1.6 version: 19.1.6 - autoprefixer: - specifier: ^10.4.19 - version: 10.4.19(postcss@8.4.39) markdownlint-cli2: specifier: ^0.13.0 version: 0.13.0 markdownlint-rule-max-one-sentence-per-line: specifier: ^0.0.2 version: 0.0.2 + pagefind: + specifier: ^1.4.0 + version: 1.4.0 postcss: - specifier: ^8.4.39 - version: 8.4.39 + specifier: ^8.5.6 + version: 8.5.6 prettier: specifier: ^3.6.2 version: 3.6.2 shiki: - specifier: ^1.29.2 - version: 1.29.2 - tailwindcss: - specifier: ^3.4.4 - version: 3.4.4 + specifier: ^3.15.0 + version: 3.15.0 typescript: - specifier: ^4.9.5 - version: 4.9.5 + specifier: ^5.9.3 + version: 5.9.3 yaml-loader: specifier: ^0.8.1 version: 0.8.1 @@ -838,8 +829,8 @@ packages: '@floating-ui/utils@0.2.10': resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} - '@formatjs/intl-localematcher@0.5.10': - resolution: {integrity: sha512-af3qATX+m4Rnd9+wHcjJ4w2ijq+rAVP3CCinJQvFv1kgSu1W6jypUmvleJxcewdxmutM8dmIRZFxO/IQBZmP2Q==} + '@formatjs/intl-localematcher@0.6.2': + resolution: {integrity: sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA==} '@fortawesome/fontawesome-common-types@6.5.2': resolution: {integrity: sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw==} @@ -863,13 +854,6 @@ packages: '@fortawesome/fontawesome-svg-core': ~1 || ~6 react: '>=16.3' - '@headlessui/react@1.7.19': - resolution: {integrity: sha512-Ll+8q3OlMJfJbAKM/+/Y2q6PPYbryqNTXDbryx7SXLIDamkF6iQFbriYHga0dY44PvDhvvBWCx1Xj4U5+G4hOw==} - engines: {node: '>=10'} - peerDependencies: - react: ^16 || ^17 || ^18 - react-dom: ^16 || ^17 || ^18 - '@headlessui/react@2.2.9': resolution: {integrity: sha512-Mb+Un58gwBn0/yWZfyrCh0TJyurtT+dETj7YHleylHk5od3dv2XqETPGWMyQ5/7sYN7oWdyM1u9MvC0OC8UmzQ==} engines: {node: '>=10'} @@ -1130,14 +1114,21 @@ packages: cpu: [x64] os: [win32] - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} + '@isaacs/balanced-match@4.0.1': + resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} + engines: {node: 20 || >=22} + + '@isaacs/brace-expansion@5.0.0': + resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} + engines: {node: 20 || >=22} '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -1149,107 +1140,110 @@ packages: '@jridgewell/sourcemap-codec@1.4.15': resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} '@mdx-js/mdx@3.1.1': resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} - '@mdx-js/react@3.1.1': - resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} - peerDependencies: - '@types/react': '>=16' - react: '>=16' - '@mermaid-js/parser@0.6.3': resolution: {integrity: sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA==} - '@napi-rs/simple-git-android-arm-eabi@0.1.19': - resolution: {integrity: sha512-XryEH/hadZ4Duk/HS/HC/cA1j0RHmqUGey3MsCf65ZS0VrWMqChXM/xlTPWuY5jfCc/rPubHaqI7DZlbexnX/g==} + '@napi-rs/simple-git-android-arm-eabi@0.1.22': + resolution: {integrity: sha512-JQZdnDNm8o43A5GOzwN/0Tz3CDBQtBUNqzVwEopm32uayjdjxev1Csp1JeaqF3v9djLDIvsSE39ecsN2LhCKKQ==} engines: {node: '>= 10'} cpu: [arm] os: [android] - '@napi-rs/simple-git-android-arm64@0.1.19': - resolution: {integrity: sha512-ZQ0cPvY6nV9p7zrR9ZPo7hQBkDAcY/CHj3BjYNhykeUCiSNCrhvwX+WEeg5on8M1j4d5jcI/cwVG2FslfiByUg==} + '@napi-rs/simple-git-android-arm64@0.1.22': + resolution: {integrity: sha512-46OZ0SkhnvM+fapWjzg/eqbJvClxynUpWYyYBn4jAj7GQs1/Yyc8431spzDmkA8mL0M7Xo8SmbkzTDE7WwYAfg==} engines: {node: '>= 10'} cpu: [arm64] os: [android] - '@napi-rs/simple-git-darwin-arm64@0.1.19': - resolution: {integrity: sha512-viZB5TYgjA1vH+QluhxZo0WKro3xBA+1xSzYx8mcxUMO5gnAoUMwXn0ZO/6Zy6pai+aGae+cj6XihGnrBRu3Pg==} + '@napi-rs/simple-git-darwin-arm64@0.1.22': + resolution: {integrity: sha512-zH3h0C8Mkn9//MajPI6kHnttywjsBmZ37fhLX/Fiw5XKu84eHA6dRyVtMzoZxj6s+bjNTgaMgMUucxPn9ktxTQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@napi-rs/simple-git-darwin-x64@0.1.19': - resolution: {integrity: sha512-6dNkzSNUV5X9rsVYQbpZLyJu4Gtkl2vNJ3abBXHX/Etk0ILG5ZasO3ncznIANZQpqcbn/QPHr49J2QYAXGoKJA==} + '@napi-rs/simple-git-darwin-x64@0.1.22': + resolution: {integrity: sha512-GZN7lRAkGKB6PJxWsoyeYJhh85oOOjVNyl+/uipNX8bR+mFDCqRsCE3rRCFGV9WrZUHXkcuRL2laIRn7lLi3ag==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@napi-rs/simple-git-freebsd-x64@0.1.19': - resolution: {integrity: sha512-sB9krVIchzd20FjI2ZZ8FDsTSsXLBdnwJ6CpeVyrhXHnoszfcqxt49ocZHujAS9lMpXq7i2Nv1EXJmCy4KdhwA==} + '@napi-rs/simple-git-freebsd-x64@0.1.22': + resolution: {integrity: sha512-xyqX1C5I0WBrUgZONxHjZH5a4LqQ9oki3SKFAVpercVYAcx3pq6BkZy1YUOP4qx78WxU1CCNfHBN7V+XO7D99A==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - '@napi-rs/simple-git-linux-arm-gnueabihf@0.1.19': - resolution: {integrity: sha512-6HPn09lr9N1n5/XKfP8Np53g4fEXVxOFqNkS6rTH3Rm1lZHdazTRH62RggXLTguZwjcE+MvOLvoTIoR5kAS8+g==} + '@napi-rs/simple-git-linux-arm-gnueabihf@0.1.22': + resolution: {integrity: sha512-4LOtbp9ll93B9fxRvXiUJd1/RM3uafMJE7dGBZGKWBMGM76+BAcCEUv2BY85EfsU/IgopXI6n09TycRfPWOjxA==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@napi-rs/simple-git-linux-arm64-gnu@0.1.19': - resolution: {integrity: sha512-G0gISckt4cVDp3oh5Z6PV3GHJrJO6Z8bIS+9xA7vTtKdqB1i5y0n3cSFLlzQciLzhr+CajFD27doW4lEyErQ/Q==} + '@napi-rs/simple-git-linux-arm64-gnu@0.1.22': + resolution: {integrity: sha512-GVOjP/JjCzbQ0kSqao7ctC/1sodVtv5VF57rW9BFpo2y6tEYPCqHnkQkTpieuwMNe+TVOhBUC1+wH0d9/knIHg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@napi-rs/simple-git-linux-arm64-musl@0.1.19': - resolution: {integrity: sha512-OwTRF+H4IZYxmDFRi1IrLMfqbdIpvHeYbJl2X94NVsLVOY+3NUHvEzL3fYaVx5urBaMnIK0DD3wZLbcueWvxbA==} + '@napi-rs/simple-git-linux-arm64-musl@0.1.22': + resolution: {integrity: sha512-MOs7fPyJiU/wqOpKzAOmOpxJ/TZfP4JwmvPad/cXTOWYwwyppMlXFRms3i98EU3HOazI/wMU2Ksfda3+TBluWA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@napi-rs/simple-git-linux-powerpc64le-gnu@0.1.19': - resolution: {integrity: sha512-p7zuNNVyzpRvkCt2RIGv9FX/WPcPbZ6/FRUgUTZkA2WU33mrbvNqSi4AOqCCl6mBvEd+EOw5NU4lS9ORRJvAEg==} + '@napi-rs/simple-git-linux-ppc64-gnu@0.1.22': + resolution: {integrity: sha512-L59dR30VBShRUIZ5/cQHU25upNgKS0AMQ7537J6LCIUEFwwXrKORZKJ8ceR+s3Sr/4jempWVvMdjEpFDE4HYww==} engines: {node: '>= 10'} - cpu: [powerpc64le] + cpu: [ppc64] os: [linux] - '@napi-rs/simple-git-linux-s390x-gnu@0.1.19': - resolution: {integrity: sha512-6N2vwJUPLiak8GLrS0a3is0gSb0UwI2CHOOqtvQxPmv+JVI8kn3vKiUscsktdDb0wGEPeZ8PvZs0y8UWix7K4g==} + '@napi-rs/simple-git-linux-s390x-gnu@0.1.22': + resolution: {integrity: sha512-4FHkPlCSIZUGC6HiADffbe6NVoTBMd65pIwcd40IDbtFKOgFMBA+pWRqKiQ21FERGH16Zed7XHJJoY3jpOqtmQ==} engines: {node: '>= 10'} cpu: [s390x] os: [linux] - '@napi-rs/simple-git-linux-x64-gnu@0.1.19': - resolution: {integrity: sha512-61YfeO1J13WK7MalLgP3QlV6of2rWnVw1aqxWkAgy/lGxoOFSJ4Wid6ANVCEZk4tJpPX/XNeneqkUz5xpeb2Cw==} + '@napi-rs/simple-git-linux-x64-gnu@0.1.22': + resolution: {integrity: sha512-Ei1tM5Ho/dwknF3pOzqkNW9Iv8oFzRxE8uOhrITcdlpxRxVrBVptUF6/0WPdvd7R9747D/q61QG/AVyWsWLFKw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@napi-rs/simple-git-linux-x64-musl@0.1.19': - resolution: {integrity: sha512-cCTWNpMJnN3PrUBItWcs3dQKCydsIasbrS3laMzq8k7OzF93Zrp2LWDTPlLCO9brbBVpBzy2Qk5Xg9uAfe/Ukw==} + '@napi-rs/simple-git-linux-x64-musl@0.1.22': + resolution: {integrity: sha512-zRYxg7it0p3rLyEJYoCoL2PQJNgArVLyNavHW03TFUAYkYi5bxQ/UFNVpgxMaXohr5yu7qCBqeo9j4DWeysalg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@napi-rs/simple-git-win32-arm64-msvc@0.1.19': - resolution: {integrity: sha512-sWavb1BjeLKKBA+PbTsRSSzVNfb7V/dOpaJvkgR5d2kWFn/AHmCZHSSj/3nyZdYf0BdDC+DIvqk3daAEZ6QMVw==} + '@napi-rs/simple-git-win32-arm64-msvc@0.1.22': + resolution: {integrity: sha512-XGFR1fj+Y9cWACcovV2Ey/R2xQOZKs8t+7KHPerYdJ4PtjVzGznI4c2EBHXtdOIYvkw7tL5rZ7FN1HJKdD5Quw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@napi-rs/simple-git-win32-x64-msvc@0.1.19': - resolution: {integrity: sha512-FmNuPoK4+qwaSCkp8lm3sJlrxk374enW+zCE5ZksXlZzj/9BDJAULJb5QUJ7o9Y8A/G+d8LkdQLPBE2Jaxe5XA==} + '@napi-rs/simple-git-win32-ia32-msvc@0.1.22': + resolution: {integrity: sha512-Gqr9Y0gs6hcNBA1IXBpoqTFnnIoHuZGhrYqaZzEvGMLrTrpbXrXVEtX3DAAD2RLc1b87CPcJ49a7sre3PU3Rfw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@napi-rs/simple-git-win32-x64-msvc@0.1.22': + resolution: {integrity: sha512-hQjcreHmUcpw4UrtkOron1/TQObfe484lxiXFLLUj7aWnnnOVs1mnXq5/Bo9+3NYZldFpFRJPdPBeHCisXkKJg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@napi-rs/simple-git@0.1.19': - resolution: {integrity: sha512-jMxvwzkKzd3cXo2EB9GM2ic0eYo2rP/BS6gJt6HnWbsDO1O8GSD4k7o2Cpr2YERtMpGF/MGcDfsfj2EbQPtrXw==} + '@napi-rs/simple-git@0.1.22': + resolution: {integrity: sha512-bMVoAKhpjTOPHkW/lprDPwv5aD4R4C3Irt8vn+SKA9wudLe9COLxOhurrKRsxmZccUbWXRF7vukNeGUAj5P8kA==} engines: {node: '>= 10'} '@next/env@13.5.6': @@ -1318,12 +1312,38 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} + '@pagefind/darwin-arm64@1.4.0': + resolution: {integrity: sha512-2vMqkbv3lbx1Awea90gTaBsvpzgRs7MuSgKDxW0m9oV1GPZCZbZBJg/qL83GIUEN2BFlY46dtUZi54pwH+/pTQ==} + cpu: [arm64] + os: [darwin] + + '@pagefind/darwin-x64@1.4.0': + resolution: {integrity: sha512-e7JPIS6L9/cJfow+/IAqknsGqEPjJnVXGjpGm25bnq+NPdoD3c/7fAwr1OXkG4Ocjx6ZGSCijXEV4ryMcH2E3A==} + cpu: [x64] + os: [darwin] + + '@pagefind/freebsd-x64@1.4.0': + resolution: {integrity: sha512-WcJVypXSZ+9HpiqZjFXMUobfFfZZ6NzIYtkhQ9eOhZrQpeY5uQFqNWLCk7w9RkMUwBv1HAMDW3YJQl/8OqsV0Q==} + cpu: [x64] + os: [freebsd] + + '@pagefind/linux-arm64@1.4.0': + resolution: {integrity: sha512-PIt8dkqt4W06KGmQjONw7EZbhDF+uXI7i0XtRLN1vjCUxM9vGPdtJc2mUyVPevjomrGz5M86M8bqTr6cgDp1Uw==} + cpu: [arm64] + os: [linux] + + '@pagefind/linux-x64@1.4.0': + resolution: {integrity: sha512-z4oddcWwQ0UHrTHR8psLnVlz6USGJ/eOlDPTDYZ4cI8TK8PgwRUPQZp9D2iJPNIPcS6Qx/E4TebjuGJOyK8Mmg==} + cpu: [x64] + os: [linux] + + '@pagefind/windows-x64@1.4.0': + resolution: {integrity: sha512-NkT+YAdgS2FPCn8mIA9bQhiBs+xmniMGq1LFPDhcFn0+2yIUEiIG06t7bsZlhdjknEQRTSdT7YitP6fC5qwP0g==} + cpu: [x64] + os: [win32] - '@radix-ui/react-compose-refs@1.1.0': - resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1331,8 +1351,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-slot@1.1.0': - resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} + '@radix-ui/react-slot@1.2.4': + resolution: {integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1386,26 +1406,28 @@ packages: '@segment/in-eu@0.4.0': resolution: {integrity: sha512-4JM6fMRMy1nZQk5x1nB1R4iIFOkcyCiUNOPQo161nUUsNE+U97l46v4xLIqQJAMjXjfxnULFFp+9uf6PYdnLtQ==} - '@shikijs/core@1.29.2': - resolution: {integrity: sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==} + '@shikijs/core@3.15.0': + resolution: {integrity: sha512-8TOG6yG557q+fMsSVa8nkEDOZNTSxjbbR8l6lF2gyr6Np+jrPlslqDxQkN6rMXCECQ3isNPZAGszAfYoJOPGlg==} - '@shikijs/engine-javascript@1.29.2': - resolution: {integrity: sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==} + '@shikijs/engine-javascript@3.15.0': + resolution: {integrity: sha512-ZedbOFpopibdLmvTz2sJPJgns8Xvyabe2QbmqMTz07kt1pTzfEvKZc5IqPVO/XFiEbbNyaOpjPBkkr1vlwS+qg==} - '@shikijs/engine-oniguruma@1.29.2': - resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==} + '@shikijs/engine-oniguruma@3.15.0': + resolution: {integrity: sha512-HnqFsV11skAHvOArMZdLBZZApRSYS4LSztk2K3016Y9VCyZISnlYUYsL2hzlS7tPqKHvNqmI5JSUJZprXloMvA==} - '@shikijs/langs@1.29.2': - resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==} + '@shikijs/langs@3.15.0': + resolution: {integrity: sha512-WpRvEFvkVvO65uKYW4Rzxs+IG0gToyM8SARQMtGGsH4GDMNZrr60qdggXrFOsdfOVssG/QQGEl3FnJ3EZ+8w8A==} - '@shikijs/themes@1.29.2': - resolution: {integrity: sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==} + '@shikijs/themes@3.15.0': + resolution: {integrity: sha512-8ow2zWb1IDvCKjYb0KiLNrK4offFdkfNVPXb1OZykpLCzRU6j+efkY+Y7VQjNlNFXonSw+4AOdGYtmqykDbRiQ==} - '@shikijs/twoslash@1.29.2': - resolution: {integrity: sha512-2S04ppAEa477tiaLfGEn1QJWbZUmbk8UoPbAEw4PifsrxkBXtAtOflIZJNtuCwz8ptc/TPxy7CO7gW4Uoi6o/g==} + '@shikijs/twoslash@3.15.0': + resolution: {integrity: sha512-3GoJvYMm2oj4Mq+yJyXt9vmMFfih34FBlLMYLRAIXNmBrj3/6jsuHKakGHMVza5jui6TmmjbS5bmJI29UHftQQ==} + peerDependencies: + typescript: '>=5.5.0' - '@shikijs/types@1.29.2': - resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==} + '@shikijs/types@3.15.0': + resolution: {integrity: sha512-BnP+y/EQnhihgHy4oIAN+6FFtmfTekwOLsQbRw9hOKwqgNy8Bdsjq8B05oAt/ZgvIWWFrshV71ytOrlPfYjIJw==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -1593,15 +1615,96 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@tailwindcss/line-clamp@0.4.4': - resolution: {integrity: sha512-5U6SY5z8N42VtrCrKlsTAA35gy2VSyYtHWCsg1H87NU1SXnEfekTVlrga9fzUDrrHcGi2Lb5KenUWb4lRQT5/g==} - peerDependencies: - tailwindcss: '>=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1' + '@swc/helpers@0.5.17': + resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} - '@tailwindcss/typography@0.5.13': - resolution: {integrity: sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders' + '@tailwindcss/node@4.1.17': + resolution: {integrity: sha512-csIkHIgLb3JisEFQ0vxr2Y57GUNYh447C8xzwj89U/8fdW8LhProdxvnVH6U8M2Y73QKiTIH+LWbK3V2BBZsAg==} + + '@tailwindcss/oxide-android-arm64@4.1.17': + resolution: {integrity: sha512-BMqpkJHgOZ5z78qqiGE6ZIRExyaHyuxjgrJ6eBO5+hfrfGkuya0lYfw8fRHG77gdTjWkNWEEm+qeG2cDMxArLQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.17': + resolution: {integrity: sha512-EquyumkQweUBNk1zGEU/wfZo2qkp/nQKRZM8bUYO0J+Lums5+wl2CcG1f9BgAjn/u9pJzdYddHWBiFXJTcxmOg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.17': + resolution: {integrity: sha512-gdhEPLzke2Pog8s12oADwYu0IAw04Y2tlmgVzIN0+046ytcgx8uZmCzEg4VcQh+AHKiS7xaL8kGo/QTiNEGRog==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.17': + resolution: {integrity: sha512-hxGS81KskMxML9DXsaXT1H0DyA+ZBIbyG/sSAjWNe2EDl7TkPOBI42GBV3u38itzGUOmFfCzk1iAjDXds8Oh0g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.17': + resolution: {integrity: sha512-k7jWk5E3ldAdw0cNglhjSgv501u7yrMf8oeZ0cElhxU6Y2o7f8yqelOp3fhf7evjIS6ujTI3U8pKUXV2I4iXHQ==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.17': + resolution: {integrity: sha512-HVDOm/mxK6+TbARwdW17WrgDYEGzmoYayrCgmLEw7FxTPLcp/glBisuyWkFz/jb7ZfiAXAXUACfyItn+nTgsdQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.17': + resolution: {integrity: sha512-HvZLfGr42i5anKtIeQzxdkw/wPqIbpeZqe7vd3V9vI3RQxe3xU1fLjss0TjyhxWcBaipk7NYwSrwTwK1hJARMg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.17': + resolution: {integrity: sha512-M3XZuORCGB7VPOEDH+nzpJ21XPvK5PyjlkSFkFziNHGLc5d6g3di2McAAblmaSUNl8IOmzYwLx9NsE7bplNkwQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.17': + resolution: {integrity: sha512-k7f+pf9eXLEey4pBlw+8dgfJHY4PZ5qOUFDyNf7SI6lHjQ9Zt7+NcscjpwdCEbYi6FI5c2KDTDWyf2iHcCSyyQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.1.17': + resolution: {integrity: sha512-cEytGqSSoy7zK4JRWiTCx43FsKP/zGr0CsuMawhH67ONlH+T79VteQeJQRO/X7L0juEUA8ZyuYikcRBf0vsxhg==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.17': + resolution: {integrity: sha512-JU5AHr7gKbZlOGvMdb4722/0aYbU+tN6lv1kONx0JK2cGsh7g148zVWLM0IKR3NeKLv+L90chBVYcJ8uJWbC9A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.17': + resolution: {integrity: sha512-SKWM4waLuqx0IH+FMDUw6R66Hu4OuTALFgnleKbqhgGU30DY20NORZMZUKgLRjQXNN2TLzKvh48QXTig4h4bGw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.17': + resolution: {integrity: sha512-F0F7d01fmkQhsTjXezGBLdrl1KresJTcI3DB8EkScCldyKp3Msz4hub4uyYaVnk88BAS1g5DQjjF6F5qczheLA==} + engines: {node: '>= 10'} + + '@tailwindcss/postcss@4.1.17': + resolution: {integrity: sha512-+nKl9N9mN5uJ+M7dBOOCzINw94MPstNR/GtIhz1fpZysxL/4a+No64jCBD6CPN+bIHWFx3KWuu8XJRrj/572Dw==} '@tanstack/react-virtual@3.13.12': resolution: {integrity: sha512-Gd13QdxPSukP8ZrkbgS2RwoZseTTbQPLnQEn7HY/rqtM+8Zt95f7xKC7N0EsKs7aoz0WzZ+fditZux+F8EzYxA==} @@ -1609,22 +1712,13 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/react-virtual@3.8.1': - resolution: {integrity: sha512-dP5a7giEM4BQWLJ7K07ToZv8rF51mzbrBMkf0scg1QNYuFx3utnPUBPUHdzaowZhIez1K2XS78amuzD+YGRA5Q==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - '@tanstack/virtual-core@3.13.12': resolution: {integrity: sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA==} - '@tanstack/virtual-core@3.8.1': - resolution: {integrity: sha512-uNtAwenT276M9QYCjTBoHZ8X3MUeCRoGK59zPi92hMIxdfS9AyHjkDWJ94WroDxnv48UE+hIeo21BU84jKc8aQ==} - - '@theguild/remark-mermaid@0.1.3': - resolution: {integrity: sha512-2FjVlaaKXK7Zj7UJAgOVTyaahn/3/EAfqYhyXg0BfDBVUl+lXcoIWRaxzqfnDr2rv8ax6GsC5mNh6hAaT86PDw==} + '@theguild/remark-mermaid@0.3.0': + resolution: {integrity: sha512-Fy1J4FSj8totuHsHFpaeWyWRaRSIvpzGTRoEfnNJc1JmLV9uV70sYE3zcT+Jj5Yw20Xq4iCsiT+3Ho49BBZcBQ==} peerDependencies: - react: ^18.2.0 + react: ^18.2.0 || ^19.0.0 '@theguild/remark-npm2yarn@0.3.3': resolution: {integrity: sha512-ma6DvR03gdbvwqfKx1omqhg9May/VYGdMHvTzB4VuxkyS7KzfZ/lzrj43hmcsggpMje0x7SADA/pcMph0ejRnA==} @@ -1641,6 +1735,9 @@ packages: resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} + '@ts-morph/common@0.28.1': + resolution: {integrity: sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g==} + '@types/d3-array@3.2.2': resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} @@ -1740,8 +1837,8 @@ packages: '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - '@types/estree@1.0.7': - resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} '@types/flexsearch@0.7.6': resolution: {integrity: sha512-H5IXcRn96/gaDmo+rDl2aJuIJsob8dgOXDqf8K0t8rWZd1AFNaaspmRsElESiU+EWE33qfbFPgI0OC/B1g9FCA==} @@ -1829,48 +1926,23 @@ packages: resolution: {integrity: sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==} engines: {node: '>=14.6'} + '@zod/core@0.9.0': + resolution: {integrity: sha512-bVfPiV2kDUkAJ4ArvV4MHcPZA8y3xOX6/SjzSy2kX2ACopbaaAP4wk6hd/byRmfi9MLNai+4SFJMmcATdOyclg==} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.14.1: - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} hasBin: true - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - apg-lite@1.0.5: resolution: {integrity: sha512-SlI+nLMQDzCZfS39ihzjGp3JNBQfJXyMi6cg9tkLOCPVErgFsUIAEdO9IezR7kbP5Xd0ozcPNQBkf9TO5cHgWw==} @@ -1896,13 +1968,6 @@ packages: autolinker@3.16.2: resolution: {integrity: sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==} - autoprefixer@10.4.19: - resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -1942,10 +2007,6 @@ packages: big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -1980,10 +2041,6 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} @@ -2025,12 +2082,8 @@ packages: chevrotain@11.0.3: resolution: {integrity: sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==} - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - class-variance-authority@0.7.0: - resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} classnames@2.5.1: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} @@ -2042,14 +2095,13 @@ packages: resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} engines: {node: '>=18'} - clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} - engines: {node: '>=6'} - clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} + code-block-writer@13.0.3: + resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} + collapse-white-space@2.1.0: resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} @@ -2084,10 +2136,6 @@ packages: resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} engines: {node: '>=18'} - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} @@ -2135,8 +2183,8 @@ packages: typescript: optional: true - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} css-select@5.1.0: @@ -2157,11 +2205,6 @@ packages: css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - csso@5.0.5: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} @@ -2179,8 +2222,8 @@ packages: peerDependencies: cytoscape: ^3.2.0 - cytoscape@3.32.0: - resolution: {integrity: sha512-5JHBC9n75kz5851jeklCPmZWcg3hUe6sjqJvyk3+hVqFaKcHwHgxsjeN1yLmggoUc6STbtm9/NQyabQehfjvWQ==} + cytoscape@3.33.1: + resolution: {integrity: sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==} engines: {node: '>=0.10'} d3-array@2.12.1: @@ -2345,8 +2388,8 @@ packages: supports-color: optional: true - debug@4.4.1: - resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -2357,6 +2400,9 @@ packages: decode-named-character-reference@1.1.0: resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==} + decode-named-character-reference@1.2.0: + resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} + deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -2391,12 +2437,6 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} @@ -2410,6 +2450,9 @@ packages: dompurify@3.2.6: resolution: {integrity: sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==} + dompurify@3.3.0: + resolution: {integrity: sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==} + domutils@3.1.0: resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} @@ -2424,31 +2467,23 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.4.819: resolution: {integrity: sha512-8RwI6gKUokbHWcN3iRij/qpvf/wCbIVY5slODi85werwqUQwpFXM+dvUBND93Qh7SB0pW3Hlq3/wZsqQ3M9Jaw==} - emoji-regex-xs@1.0.0: - resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - emojis-list@3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} + enhanced-resolve@5.18.3: + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + engines: {node: '>=10.13.0'} + entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - entities@6.0.0: - resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} error-ex@1.3.2: @@ -2492,11 +2527,6 @@ packages: resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} engines: {node: '>=6'} - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - estree-util-attach-comments@3.0.0: resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} @@ -2515,8 +2545,8 @@ packages: estree-util-to-js@2.0.0: resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} - estree-util-value-to-estree@3.4.0: - resolution: {integrity: sha512-Zlp+gxis+gCfK12d3Srl2PdX2ybsEA8ZYy6vQGVQTNNYLEGRQQ56XB64bjemN8kxIKXP1nC9ip4Z+ILy9LGzvQ==} + estree-util-value-to-estree@3.5.0: + resolution: {integrity: sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ==} estree-util-visit@2.0.0: resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} @@ -2535,10 +2565,6 @@ packages: exsolve@1.0.8: resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} - extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -2549,6 +2575,10 @@ packages: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + fast-json-patch@3.1.1: resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} @@ -2561,6 +2591,15 @@ packages: fault@2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + fflate@0.4.8: resolution: {integrity: sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==} @@ -2568,12 +2607,6 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - flexsearch@0.7.43: - resolution: {integrity: sha512-c5o/+Um8aqCSOXGcZoqZOm+NqtVwNsvVpWv6lfmSclU954O3wvQKxxK8zj74fPaSJbXpSLTs4PRhh+wnoCXnKg==} - - flexsearch@0.8.158: - resolution: {integrity: sha512-UBOzX2rxIrhAeSSCesTI0qB2Q+75n66rofJx5ppZm5tjXV2P6BxOS3VHKsoSdJhIPg9IMzQl3qkVeSFyq3BUdw==} - follow-redirects@1.15.9: resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} engines: {node: '>=4.0'} @@ -2587,10 +2620,6 @@ packages: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} - foreground-child@3.2.1: - resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} - engines: {node: '>=14'} - form-data@4.0.5: resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} @@ -2599,14 +2628,6 @@ packages: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} @@ -2633,15 +2654,6 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob@10.4.4: - resolution: {integrity: sha512-XsOKvHsu38Xe19ZQupE6N/HENeHQBA05o3hV8labZZT2zYDg1+emxWHnc/Bm9AcCMPXfD6jt+QC7zC5JSFyumw==} - engines: {node: 14 >=14.21 || 16 >=16.20 || 18 || 20 || >=22} - hasBin: true - globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -2661,10 +2673,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - gray-matter@4.0.3: - resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} - engines: {node: '>=6.0'} - hachure-fill@0.5.2: resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} @@ -2792,10 +2800,6 @@ packages: is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -2812,18 +2816,10 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true - is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -2866,15 +2862,11 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - jackspeak@3.4.2: - resolution: {integrity: sha512-qH3nOSj8q/8+Eg8LUPOq3C+6HWkpUioIjDsq1+D4zY91oZvpPttw8GwtF1nReRYKXl+1AORyFqtm2f5Q1SB6/Q==} - engines: {node: 14 >=14.21 || 16 >=16.20 || >=18} - javascript-stringify@2.1.0: resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} - jiti@1.21.6: - resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true js-file-download@0.4.12: @@ -2883,10 +2875,6 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -2915,17 +2903,13 @@ packages: resolution: {integrity: sha512-8hfl5RD6P7rEeIbzStBz3h4f+BQHfq/ABtoU6gXKQv5OcZhnmrIpG7e1pYaZ8hS9e0mp+bxUj08fnDUbKctYyA==} engines: {node: '>=0.10'} - katex@0.16.22: - resolution: {integrity: sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==} + katex@0.16.25: + resolution: {integrity: sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q==} hasBin: true khroma@2.1.0: resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} @@ -2939,13 +2923,75 @@ packages: layout-base@2.0.1: resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} + lightningcss-android-arm64@1.30.2: + resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] - lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} - engines: {node: '>=14'} + lightningcss-darwin-arm64@1.30.2: + resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.30.2: + resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.30.2: + resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.30.2: + resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.30.2: + resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.30.2: + resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.30.2: + resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.30.2: + resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.30.2: + resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.2: + resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.2: + resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} + engines: {node: '>= 12.0.0'} lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -2967,18 +3013,9 @@ packages: lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - lodash.castarray@4.4.0: - resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} - lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -2995,13 +3032,12 @@ packages: lowlight@1.20.0: resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==} - lru-cache@10.4.1: - resolution: {integrity: sha512-8h/JsUc/2+Dm9RPJnBAmObGnUqTMmsIKThxixMLOkrebSihRhTV0wLD/8BSk6OU6Pbj8hiDTbsI3fLjBJSlhDg==} - engines: {node: 14 >= 14.21 || 16 >= 16.20 || 18 >=18.20 || 20 || >=22} - lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} @@ -3097,8 +3133,8 @@ packages: mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} mdast-util-to-markdown@2.1.2: resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} @@ -3247,6 +3283,10 @@ packages: resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} engines: {node: '>=8.6'} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -3263,21 +3303,17 @@ packages: resolution: {integrity: sha512-bjdr2xW1dBCMsMGGsUeqM4eFI60m94+szhxWys+B1ztIt6gWSfeGBdSVCIawezeHYLYn0j6zrsXdQS/JllBzww==} engines: {node: '>=6'} + minimatch@10.1.1: + resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} + engines: {node: 20 || >=22} + minimatch@7.4.6: resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} engines: {node: '>=10'} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - mj-context-menu@0.6.1: resolution: {integrity: sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==} @@ -3293,19 +3329,11 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - negotiator@1.0.0: resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} engines: {node: '>= 0.6'} @@ -3348,19 +3376,19 @@ packages: sass: optional: true - nextra-theme-docs@3.3.1: - resolution: {integrity: sha512-P305m2UcW2IDyQhjrcAu0qpdPArikofinABslUCAyixYShsmcdDRUhIMd4QBHYru4gQuVjGWX9PhWZZCbNvzDQ==} + nextra-theme-docs@4.6.0: + resolution: {integrity: sha512-lAFveL2sFZ6NRr602MTwsQK1bjVYYbuHkQlsrHNutwIV6YvD9IruP7M8WUXEMasjH6RY6bVN/BDS/qO7NJgbgg==} peerDependencies: - next: '>=13' - nextra: 3.3.1 + next: '>=14' + nextra: 4.6.0 react: '>=18' react-dom: '>=18' - nextra@3.3.1: - resolution: {integrity: sha512-jiwj+LfUPHHeAxJAEqFuglxnbjFgzAOnDWFsjv7iv3BWiX8OksDwd3I2Sv3j2zba00iIBDEPdNeylfzTtTLZVg==} + nextra@4.6.0: + resolution: {integrity: sha512-7kIBqQm2aEdHTtglcKDf8ZZMfPErY8iVym2a7ujEWUoHbCc5zsWloYdrtSHDRTmOH/hCqSsWJDZX+2lleKQscw==} engines: {node: '>=18'} peerDependencies: - next: '>=13' + next: '>=14' react: '>=18' react-dom: '>=18' @@ -3393,14 +3421,6 @@ packages: node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3416,16 +3436,15 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} - oniguruma-to-es@2.3.0: - resolution: {integrity: sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==} + oniguruma-parser@0.12.1: + resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} + + oniguruma-to-es@4.3.4: + resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} openapi-path-templating@2.2.1: resolution: {integrity: sha512-eN14VrDvl/YyGxxrkGOHkVkWEoPyhyeydOUrbvjoz8K5eIGgELASwN1eqFOJ2CTQMGCy2EntOK1KdtJ8ZMekcg==} @@ -3435,16 +3454,13 @@ packages: resolution: {integrity: sha512-DPlCms3KKEbjVQb0spV6Awfn6UWNheuG/+folQPzh/wUaKwuqvj8zt5gagD7qoyxtE03cIiKPgLFS3Q8Bz00uQ==} engines: {node: '>=12.20.0'} - p-limit@6.2.0: - resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} - engines: {node: '>=18'} - - package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} - package-manager-detector@1.5.0: resolution: {integrity: sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==} + pagefind@1.4.0: + resolution: {integrity: sha512-z2kY1mQlL4J8q5EIsQkLzQjilovKzfNVhX8De6oyE6uHpfFtyBaqUpcl/XzJC/4fjD8vBDyh1zolimIcVrCn9g==} + hasBin: true + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -3465,6 +3481,9 @@ packages: parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + path-data-parser@0.1.0: resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} @@ -3479,10 +3498,6 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -3504,13 +3519,9 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} @@ -3528,58 +3539,13 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-nested@6.0.1: - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-selector-parser@6.0.10: - resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} - engines: {node: '>=4'} - - postcss-selector-parser@6.1.0: - resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} - engines: {node: '>=4'} - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} - - postcss@8.4.39: - resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} - engines: {node: ^10 || ^12 || >=14} - - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} - engines: {node: ^10 || ^12 || >=14} + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} posthog-js@1.223.5: resolution: {integrity: sha512-QCapVOZ0zusWR2BryAc3utuEwlsK4xhbpaHWi56cUJwdHOi3gThmXL/bpS5KZtYAJN3UUEwN5Ef3IcfDLp9fMQ==} @@ -3643,6 +3609,11 @@ packages: randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + react-compiler-runtime@19.1.0-rc.3: + resolution: {integrity: sha512-Cssogys2XZu6SqxRdX2xd8cQAf57BBvFbLEBlIa77161lninbKUn/EqbecCe7W3eqDQfg3rIoOwzExzgCh7h/g==} + peerDependencies: + react: ^17.0.0 || ^18.0.0 || ^19.0.0 || ^0.0.0-experimental + react-copy-to-clipboard@5.1.0: resolution: {integrity: sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A==} peerDependencies: @@ -3712,13 +3683,6 @@ packages: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - reading-time@1.5.0: resolution: {integrity: sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==} @@ -3760,14 +3724,14 @@ packages: regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - regex-recursion@5.1.1: - resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} regex-utilities@2.3.0: resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - regex@5.1.1: - resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} + regex@6.0.1: + resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} @@ -3783,11 +3747,11 @@ packages: rehype-parse@9.0.1: resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==} - rehype-pretty-code@0.14.0: - resolution: {integrity: sha512-hBeKF/Wkkf3zyUS8lal9RCUuhypDWLQc+h9UrP9Pav25FUm/AQAVh4m5gdvJxh4Oz+U+xKvdsV01p1LdvsZTiQ==} + rehype-pretty-code@0.14.1: + resolution: {integrity: sha512-IpG4OL0iYlbx78muVldsK86hdfNoht0z63AP7sekQNW2QOTmjxB7RbTO+rhIYNGRljgHxgVZoPwUl6bIC9SbjA==} engines: {node: '>=18'} peerDependencies: - shiki: ^1.3.0 + shiki: ^1.0.0 || ^2.0.0 || ^3.0.0 rehype-raw@7.0.0: resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} @@ -3893,10 +3857,6 @@ packages: scroll-into-view-if-needed@3.1.0: resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} - section-matter@1.0.0: - resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} - engines: {node: '>=4'} - semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -3915,6 +3875,9 @@ packages: resolution: {integrity: sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==} engines: {node: '>=10'} + server-only@0.0.1: + resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} + set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -3940,8 +3903,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@1.29.2: - resolution: {integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==} + shiki@3.15.0: + resolution: {integrity: sha512-kLdkY6iV3dYbtPwS9KXU7mjfmDm25f5m0IPNFnaXO7TBPcvbUOY72PYXSuSqDzwp+vlH/d7MXpHlKO/x+QoLXw==} short-unique-id@5.3.2: resolution: {integrity: sha512-KRT/hufMSxXKEDSQujfVE0Faa/kZ51ihUcZQAcmP04t00DvPj7Ox5anHke1sJYUtzSuiT/Y5uyzg/W7bBEGhCg==} @@ -3972,9 +3935,9 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -3986,29 +3949,9 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-bom-string@1.0.0: - resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} - engines: {node: '>=0.10.0'} - strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} @@ -4035,11 +3978,6 @@ packages: stylis@4.3.6: resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -4072,25 +4010,24 @@ packages: tabbable@6.3.0: resolution: {integrity: sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ==} - tailwind-merge@2.4.0: - resolution: {integrity: sha512-49AwoOQNKdqKPd9CViyH5wJoSKsCDjUlzL8DxuGp3P1FsGY36NJDAa18jLZcaHAUUuTj+JB8IAo8zWgBNvBF7A==} - - tailwindcss@3.4.4: - resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==} - engines: {node: '>=14.0.0'} - hasBin: true + tailwind-merge@3.4.0: + resolution: {integrity: sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==} - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} + tailwindcss@4.1.17: + resolution: {integrity: sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==} - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} + engines: {node: '>=6'} tinyexec@1.0.2: resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} engines: {node: '>=18'} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + title@4.0.1: resolution: {integrity: sha512-xRnPkJx9nvE5MF6LkB5e8QJjE2FW8269wTu/LQdf7zZqBgPly0QJPf/CWAo7srj5so4yXfoLEdCFgurlpi47zg==} hasBin: true @@ -4134,12 +4071,12 @@ packages: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - ts-mixer@6.0.4: resolution: {integrity: sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==} + ts-morph@27.0.2: + resolution: {integrity: sha512-fhUhgeljcrdZ+9DZND1De1029PrE+cMkIP7ooqkLRTrRLTqcki2AstsyJm0vRNbTbVCNJ0idGlbBrfqc7/nA8w==} + ts-toolbelt@9.6.0: resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} @@ -4149,13 +4086,13 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - twoslash-protocol@0.2.12: - resolution: {integrity: sha512-5qZLXVYfZ9ABdjqbvPc4RWMr7PrpPaaDSeaYY55vl/w1j6H6kzsWK/urAEIXlzYlyrFmyz1UbwIt+AA0ck+wbg==} + twoslash-protocol@0.3.4: + resolution: {integrity: sha512-HHd7lzZNLUvjPzG/IE6js502gEzLC1x7HaO1up/f72d8G8ScWAs9Yfa97igelQRDl5h9tGcdFsRp+lNVre1EeQ==} - twoslash@0.2.12: - resolution: {integrity: sha512-tEHPASMqi7kqwfJbkk7hc/4EhlrKCSLcur+TcvYki3vhIfaRMXnXjaYFgXpoZRbT6GdprD4tGuVBEmTpUgLBsw==} + twoslash@0.3.4: + resolution: {integrity: sha512-RtJURJlGRxrkJmTcZMjpr7jdYly1rfgpujJr1sBM9ch7SKVht/SjFk23IOAyvwT1NLCk+SJiMrvW4rIAUM2Wug==} peerDependencies: - typescript: '*' + typescript: ^5.5.0 type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} @@ -4168,9 +4105,9 @@ packages: types-ramda@0.30.1: resolution: {integrity: sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==} - typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} hasBin: true uc.micro@2.1.0: @@ -4214,6 +4151,9 @@ packages: unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + unist-util-modify-children@4.0.0: resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==} @@ -4241,6 +4181,9 @@ packages: unist-util-visit-parents@6.0.1: resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + unist-util-visit@3.1.0: resolution: {integrity: sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==} @@ -4264,8 +4207,10 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 uuid@11.1.0: resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} @@ -4277,6 +4222,9 @@ packages: vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} @@ -4325,14 +4273,6 @@ packages: wicked-good-xpath@1.3.0: resolution: {integrity: sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==} - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - xml-but-prettier@1.0.1: resolution: {integrity: sha512-C2CJaadHrZTqESlH03WOyw0oZTtoy2uEg6dSDF6YRg+9GnYNub53RRemLpnvtbHDFelxMx4LajiFsYeR6XJHgQ==} @@ -4351,9 +4291,10 @@ packages: engines: {node: '>= 14'} hasBin: true - yocto-queue@1.2.2: - resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} - engines: {node: '>=12.20'} + yaml@2.8.1: + resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} + engines: {node: '>= 14.6'} + hasBin: true youtube-player@5.5.2: resolution: {integrity: sha512-ZGtsemSpXnDky2AUYWgxjaopgB+shFHgXVpiJFeNB5nWEugpW1KWYDaHKuLqh2b67r24GtP6HoSW5swvf0fFIQ==} @@ -4361,14 +4302,26 @@ packages: zenscroll@4.0.2: resolution: {integrity: sha512-jEA1znR7b4C/NnaycInCU6h/d15ZzCd1jmsruqOKnZP6WXQSMH3W2GL+OXbkruslU4h+Tzuos0HdswzRUk/Vgg==} - zod-validation-error@3.5.4: - resolution: {integrity: sha512-+hEiRIiPobgyuFlEojnqjJnhFvg4r/i3cqgcm67eehZf/WBaK3g6cD02YU9mtdVxZjv8CzCA9n/Rhrs3yAAvAw==} - engines: {node: '>=18.0.0'} - peerDependencies: - zod: ^3.24.4 + zod@4.0.0-beta.20250424T163858: + resolution: {integrity: sha512-fKhW+lEJnfUGo0fvQjmam39zUytARR2UdCEh7/OXJSBbKScIhD343K74nW+UUHu/r6dkzN6Uc/GqwogFjzpCXg==} - zod@3.25.49: - resolution: {integrity: sha512-JMMPMy9ZBk3XFEdbM3iL1brx4NUSejd6xr3ELrrGEfGb355gjhiAWtG3K5o+AViV/3ZfkIrCzXsZn6SbLwTR8Q==} + zustand@5.0.8: + resolution: {integrity: sha512-gyPKpIaxY9XcO2vSMrLbiER7QMAMGOQZVRdJ6Zi782jkbzZygq5GI9nG8g+sMgitRtndwaBSl7uiqC49o1SSiw==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=18.0.0' + immer: '>=9.0.6' + react: '>=18.0.0' + use-sync-external-store: '>=1.2.0' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + use-sync-external-store: + optional: true zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -5296,7 +5249,7 @@ snapshots: '@floating-ui/utils@0.2.10': {} - '@formatjs/intl-localematcher@0.5.10': + '@formatjs/intl-localematcher@0.6.2': dependencies: tslib: 2.8.1 @@ -5320,13 +5273,6 @@ snapshots: prop-types: 15.8.1 react: 18.3.1 - '@headlessui/react@1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@tanstack/react-virtual': 3.8.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - client-only: 0.0.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - '@headlessui/react@2.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -5335,7 +5281,7 @@ snapshots: '@tanstack/react-virtual': 3.13.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - use-sync-external-store: 1.5.0(react@18.3.1) + use-sync-external-store: 1.6.0(react@18.3.1) '@iconify/types@2.0.0': {} @@ -5344,7 +5290,7 @@ snapshots: '@antfu/install-pkg': 1.1.0 '@antfu/utils': 9.3.0 '@iconify/types': 2.0.0 - debug: 4.4.1 + debug: 4.4.3 globals: 15.15.0 kolorist: 1.8.0 local-pkg: 1.1.2 @@ -5527,14 +5473,11 @@ snapshots: '@img/sharp-win32-x64@0.34.5': optional: true - '@isaacs/cliui@8.0.2': + '@isaacs/balanced-match@4.0.1': {} + + '@isaacs/brace-expansion@5.0.0': dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/balanced-match': 4.0.1 '@jridgewell/gen-mapping@0.3.5': dependencies: @@ -5542,12 +5485,19 @@ snapshots: '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.2.1': {} '@jridgewell/sourcemap-codec@1.4.15': {} + '@jridgewell/sourcemap-codec@1.5.5': {} + '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 @@ -5555,11 +5505,11 @@ snapshots: '@mdx-js/mdx@3.1.1': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdx': 2.0.13 - acorn: 8.14.1 + acorn: 8.15.0 collapse-white-space: 2.1.0 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 @@ -5568,13 +5518,13 @@ snapshots: hast-util-to-jsx-runtime: 2.3.6 markdown-extensions: 2.0.0 recma-build-jsx: 1.0.0 - recma-jsx: 1.0.1(acorn@8.14.1) + recma-jsx: 1.0.1(acorn@8.15.0) recma-stringify: 1.0.0 rehype-recma: 1.0.0 remark-mdx: 3.1.1 remark-parse: 11.0.0 remark-rehype: 11.1.2 - source-map: 0.7.4 + source-map: 0.7.6 unified: 11.0.5 unist-util-position-from-estree: 2.0.0 unist-util-stringify-position: 4.0.0 @@ -5583,74 +5533,72 @@ snapshots: transitivePeerDependencies: - supports-color - '@mdx-js/react@3.1.1(@types/react@19.1.6)(react@18.3.1)': - dependencies: - '@types/mdx': 2.0.13 - '@types/react': 19.1.6 - react: 18.3.1 - '@mermaid-js/parser@0.6.3': dependencies: langium: 3.3.1 - '@napi-rs/simple-git-android-arm-eabi@0.1.19': + '@napi-rs/simple-git-android-arm-eabi@0.1.22': + optional: true + + '@napi-rs/simple-git-android-arm64@0.1.22': optional: true - '@napi-rs/simple-git-android-arm64@0.1.19': + '@napi-rs/simple-git-darwin-arm64@0.1.22': optional: true - '@napi-rs/simple-git-darwin-arm64@0.1.19': + '@napi-rs/simple-git-darwin-x64@0.1.22': optional: true - '@napi-rs/simple-git-darwin-x64@0.1.19': + '@napi-rs/simple-git-freebsd-x64@0.1.22': optional: true - '@napi-rs/simple-git-freebsd-x64@0.1.19': + '@napi-rs/simple-git-linux-arm-gnueabihf@0.1.22': optional: true - '@napi-rs/simple-git-linux-arm-gnueabihf@0.1.19': + '@napi-rs/simple-git-linux-arm64-gnu@0.1.22': optional: true - '@napi-rs/simple-git-linux-arm64-gnu@0.1.19': + '@napi-rs/simple-git-linux-arm64-musl@0.1.22': optional: true - '@napi-rs/simple-git-linux-arm64-musl@0.1.19': + '@napi-rs/simple-git-linux-ppc64-gnu@0.1.22': optional: true - '@napi-rs/simple-git-linux-powerpc64le-gnu@0.1.19': + '@napi-rs/simple-git-linux-s390x-gnu@0.1.22': optional: true - '@napi-rs/simple-git-linux-s390x-gnu@0.1.19': + '@napi-rs/simple-git-linux-x64-gnu@0.1.22': optional: true - '@napi-rs/simple-git-linux-x64-gnu@0.1.19': + '@napi-rs/simple-git-linux-x64-musl@0.1.22': optional: true - '@napi-rs/simple-git-linux-x64-musl@0.1.19': + '@napi-rs/simple-git-win32-arm64-msvc@0.1.22': optional: true - '@napi-rs/simple-git-win32-arm64-msvc@0.1.19': + '@napi-rs/simple-git-win32-ia32-msvc@0.1.22': optional: true - '@napi-rs/simple-git-win32-x64-msvc@0.1.19': + '@napi-rs/simple-git-win32-x64-msvc@0.1.22': optional: true - '@napi-rs/simple-git@0.1.19': + '@napi-rs/simple-git@0.1.22': optionalDependencies: - '@napi-rs/simple-git-android-arm-eabi': 0.1.19 - '@napi-rs/simple-git-android-arm64': 0.1.19 - '@napi-rs/simple-git-darwin-arm64': 0.1.19 - '@napi-rs/simple-git-darwin-x64': 0.1.19 - '@napi-rs/simple-git-freebsd-x64': 0.1.19 - '@napi-rs/simple-git-linux-arm-gnueabihf': 0.1.19 - '@napi-rs/simple-git-linux-arm64-gnu': 0.1.19 - '@napi-rs/simple-git-linux-arm64-musl': 0.1.19 - '@napi-rs/simple-git-linux-powerpc64le-gnu': 0.1.19 - '@napi-rs/simple-git-linux-s390x-gnu': 0.1.19 - '@napi-rs/simple-git-linux-x64-gnu': 0.1.19 - '@napi-rs/simple-git-linux-x64-musl': 0.1.19 - '@napi-rs/simple-git-win32-arm64-msvc': 0.1.19 - '@napi-rs/simple-git-win32-x64-msvc': 0.1.19 + '@napi-rs/simple-git-android-arm-eabi': 0.1.22 + '@napi-rs/simple-git-android-arm64': 0.1.22 + '@napi-rs/simple-git-darwin-arm64': 0.1.22 + '@napi-rs/simple-git-darwin-x64': 0.1.22 + '@napi-rs/simple-git-freebsd-x64': 0.1.22 + '@napi-rs/simple-git-linux-arm-gnueabihf': 0.1.22 + '@napi-rs/simple-git-linux-arm64-gnu': 0.1.22 + '@napi-rs/simple-git-linux-arm64-musl': 0.1.22 + '@napi-rs/simple-git-linux-ppc64-gnu': 0.1.22 + '@napi-rs/simple-git-linux-s390x-gnu': 0.1.22 + '@napi-rs/simple-git-linux-x64-gnu': 0.1.22 + '@napi-rs/simple-git-linux-x64-musl': 0.1.22 + '@napi-rs/simple-git-win32-arm64-msvc': 0.1.22 + '@napi-rs/simple-git-win32-ia32-msvc': 0.1.22 + '@napi-rs/simple-git-win32-x64-msvc': 0.1.22 '@next/env@13.5.6': {} @@ -5692,18 +5640,33 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@pkgjs/parseargs@0.11.0': + '@pagefind/darwin-arm64@1.4.0': + optional: true + + '@pagefind/darwin-x64@1.4.0': + optional: true + + '@pagefind/freebsd-x64@1.4.0': + optional: true + + '@pagefind/linux-arm64@1.4.0': + optional: true + + '@pagefind/linux-x64@1.4.0': + optional: true + + '@pagefind/windows-x64@1.4.0': optional: true - '@radix-ui/react-compose-refs@1.1.0(@types/react@19.1.6)(react@18.3.1)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.6)(react@18.3.1)': dependencies: react: 18.3.1 optionalDependencies: '@types/react': 19.1.6 - '@radix-ui/react-slot@1.1.0(@types/react@19.1.6)(react@18.3.1)': + '@radix-ui/react-slot@1.2.4(@types/react@19.1.6)(react@18.3.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.1.6)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.6)(react@18.3.1) react: 18.3.1 optionalDependencies: '@types/react': 19.1.6 @@ -5713,7 +5676,7 @@ snapshots: '@react-aria/interactions': 3.25.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-aria/utils': 3.31.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.15 + '@swc/helpers': 0.5.17 clsx: 2.1.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5724,13 +5687,13 @@ snapshots: '@react-aria/utils': 3.31.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-stately/flags': 3.1.2 '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.15 + '@swc/helpers': 0.5.17 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) '@react-aria/ssr@3.9.10(react@18.3.1)': dependencies: - '@swc/helpers': 0.5.15 + '@swc/helpers': 0.5.17 react: 18.3.1 '@react-aria/utils@3.31.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': @@ -5739,18 +5702,18 @@ snapshots: '@react-stately/flags': 3.1.2 '@react-stately/utils': 3.10.8(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.15 + '@swc/helpers': 0.5.17 clsx: 2.1.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) '@react-stately/flags@3.1.2': dependencies: - '@swc/helpers': 0.5.15 + '@swc/helpers': 0.5.17 '@react-stately/utils@3.10.8(react@18.3.1)': dependencies: - '@swc/helpers': 0.5.15 + '@swc/helpers': 0.5.17 react: 18.3.1 '@react-types/shared@3.32.1(react@18.3.1)': @@ -5767,44 +5730,42 @@ snapshots: dependencies: jstz: 2.1.1 - '@shikijs/core@1.29.2': + '@shikijs/core@3.15.0': dependencies: - '@shikijs/engine-javascript': 1.29.2 - '@shikijs/engine-oniguruma': 1.29.2 - '@shikijs/types': 1.29.2 + '@shikijs/types': 3.15.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@1.29.2': + '@shikijs/engine-javascript@3.15.0': dependencies: - '@shikijs/types': 1.29.2 + '@shikijs/types': 3.15.0 '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 2.3.0 + oniguruma-to-es: 4.3.4 - '@shikijs/engine-oniguruma@1.29.2': + '@shikijs/engine-oniguruma@3.15.0': dependencies: - '@shikijs/types': 1.29.2 + '@shikijs/types': 3.15.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@1.29.2': + '@shikijs/langs@3.15.0': dependencies: - '@shikijs/types': 1.29.2 + '@shikijs/types': 3.15.0 - '@shikijs/themes@1.29.2': + '@shikijs/themes@3.15.0': dependencies: - '@shikijs/types': 1.29.2 + '@shikijs/types': 3.15.0 - '@shikijs/twoslash@1.29.2(typescript@4.9.5)': + '@shikijs/twoslash@3.15.0(typescript@5.9.3)': dependencies: - '@shikijs/core': 1.29.2 - '@shikijs/types': 1.29.2 - twoslash: 0.2.12(typescript@4.9.5) + '@shikijs/core': 3.15.0 + '@shikijs/types': 3.15.0 + twoslash: 0.3.4(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - - typescript - '@shikijs/types@1.29.2': + '@shikijs/types@3.15.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -5857,12 +5818,12 @@ snapshots: '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.24.7) '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.24.7) - '@svgr/core@8.1.0(typescript@4.9.5)': + '@svgr/core@8.1.0(typescript@5.9.3)': dependencies: '@babel/core': 7.24.7 '@svgr/babel-preset': 8.1.0(@babel/core@7.24.7) camelcase: 6.3.0 - cosmiconfig: 8.3.6(typescript@4.9.5) + cosmiconfig: 8.3.6(typescript@5.9.3) snake-case: 3.0.4 transitivePeerDependencies: - supports-color @@ -5873,35 +5834,35 @@ snapshots: '@babel/types': 7.24.7 entities: 4.5.0 - '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@4.9.5))': + '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.9.3))': dependencies: '@babel/core': 7.24.7 '@svgr/babel-preset': 8.1.0(@babel/core@7.24.7) - '@svgr/core': 8.1.0(typescript@4.9.5) + '@svgr/core': 8.1.0(typescript@5.9.3) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 transitivePeerDependencies: - supports-color - '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@4.9.5))(typescript@4.9.5)': + '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@5.9.3))(typescript@5.9.3)': dependencies: - '@svgr/core': 8.1.0(typescript@4.9.5) - cosmiconfig: 8.3.6(typescript@4.9.5) + '@svgr/core': 8.1.0(typescript@5.9.3) + cosmiconfig: 8.3.6(typescript@5.9.3) deepmerge: 4.3.1 svgo: 3.3.2 transitivePeerDependencies: - typescript - '@svgr/webpack@8.1.0(typescript@4.9.5)': + '@svgr/webpack@8.1.0(typescript@5.9.3)': dependencies: '@babel/core': 7.24.7 '@babel/plugin-transform-react-constant-elements': 7.24.7(@babel/core@7.24.7) '@babel/preset-env': 7.24.7(@babel/core@7.24.7) '@babel/preset-react': 7.24.7(@babel/core@7.24.7) '@babel/preset-typescript': 7.24.7(@babel/core@7.24.7) - '@svgr/core': 8.1.0(typescript@4.9.5) - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@4.9.5)) - '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@4.9.5))(typescript@4.9.5) + '@svgr/core': 8.1.0(typescript@5.9.3) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.9.3)) + '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.9.3))(typescript@5.9.3) transitivePeerDependencies: - supports-color - typescript @@ -6269,35 +6230,88 @@ snapshots: dependencies: tslib: 2.8.1 - '@tailwindcss/line-clamp@0.4.4(tailwindcss@3.4.4)': + '@swc/helpers@0.5.17': dependencies: - tailwindcss: 3.4.4 + tslib: 2.8.1 - '@tailwindcss/typography@0.5.13(tailwindcss@3.4.4)': + '@tailwindcss/node@4.1.17': dependencies: - lodash.castarray: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.4 + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.18.3 + jiti: 2.6.1 + lightningcss: 1.30.2 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.1.17 - '@tanstack/react-virtual@3.13.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tailwindcss/oxide-android-arm64@4.1.17': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.17': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.17': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.17': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.17': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.17': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.17': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.17': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.17': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.17': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.17': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.17': + optional: true + + '@tailwindcss/oxide@4.1.17': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.17 + '@tailwindcss/oxide-darwin-arm64': 4.1.17 + '@tailwindcss/oxide-darwin-x64': 4.1.17 + '@tailwindcss/oxide-freebsd-x64': 4.1.17 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.17 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.17 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.17 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.17 + '@tailwindcss/oxide-linux-x64-musl': 4.1.17 + '@tailwindcss/oxide-wasm32-wasi': 4.1.17 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.17 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.17 + + '@tailwindcss/postcss@4.1.17': dependencies: - '@tanstack/virtual-core': 3.13.12 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.1.17 + '@tailwindcss/oxide': 4.1.17 + postcss: 8.5.6 + tailwindcss: 4.1.17 - '@tanstack/react-virtual@3.8.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tanstack/react-virtual@3.13.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/virtual-core': 3.8.1 + '@tanstack/virtual-core': 3.13.12 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) '@tanstack/virtual-core@3.13.12': {} - '@tanstack/virtual-core@3.8.1': {} - - '@theguild/remark-mermaid@0.1.3(react@18.3.1)': + '@theguild/remark-mermaid@0.3.0(react@18.3.1)': dependencies: mermaid: 11.12.1 react: 18.3.1 @@ -6320,6 +6334,12 @@ snapshots: '@trysound/sax@0.2.0': {} + '@ts-morph/common@0.28.1': + dependencies: + minimatch: 10.1.1 + path-browserify: 1.0.1 + tinyglobby: 0.2.15 + '@types/d3-array@3.2.2': {} '@types/d3-axis@3.0.6': @@ -6443,9 +6463,9 @@ snapshots: '@types/estree-jsx@1.0.5': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 - '@types/estree@1.0.7': {} + '@types/estree@1.0.8': {} '@types/flexsearch@0.7.6': {} @@ -6494,10 +6514,10 @@ snapshots: '@types/use-sync-external-store@0.0.6': {} - '@typescript/vfs@1.6.2(typescript@4.9.5)': + '@typescript/vfs@1.6.2(typescript@5.9.3)': dependencies: - debug: 4.4.1 - typescript: 4.9.5 + debug: 4.4.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -6510,35 +6530,18 @@ snapshots: '@xmldom/xmldom@0.9.8': {} - acorn-jsx@5.3.2(acorn@8.14.1): - dependencies: - acorn: 8.14.1 + '@zod/core@0.9.0': {} - acorn@8.14.1: {} + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 acorn@8.15.0: {} - ansi-regex@5.0.1: {} - - ansi-regex@6.0.1: {} - ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@6.2.1: {} - - any-promise@1.3.0: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - apg-lite@1.0.5: {} arg@5.0.2: {} @@ -6559,16 +6562,6 @@ snapshots: dependencies: tslib: 2.8.1 - autoprefixer@10.4.19(postcss@8.4.39): - dependencies: - browserslist: 4.23.1 - caniuse-lite: 1.0.30001640 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.1 - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 @@ -6618,8 +6611,6 @@ snapshots: big.js@5.2.2: {} - binary-extensions@2.3.0: {} - boolbase@1.0.0: {} brace-expansion@2.0.1: @@ -6661,8 +6652,6 @@ snapshots: callsites@3.1.0: {} - camelcase-css@2.0.1: {} - camelcase@6.3.0: {} caniuse-lite@1.0.30001640: {} @@ -6701,21 +6690,9 @@ snapshots: '@chevrotain/utils': 11.0.3 lodash-es: 4.17.21 - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - class-variance-authority@0.7.0: + class-variance-authority@0.7.1: dependencies: - clsx: 2.0.0 + clsx: 2.1.1 classnames@2.5.1: {} @@ -6727,10 +6704,10 @@ snapshots: is-wsl: 3.1.0 is64bit: 2.0.0 - clsx@2.0.0: {} - clsx@2.1.1: {} + code-block-writer@13.0.3: {} + collapse-white-space@2.1.0: {} color-convert@1.9.3: @@ -6763,8 +6740,6 @@ snapshots: commander@13.1.0: {} - commander@4.1.1: {} - commander@7.2.0: {} commander@8.3.0: {} @@ -6797,16 +6772,16 @@ snapshots: dependencies: layout-base: 2.0.1 - cosmiconfig@8.3.6(typescript@4.9.5): + cosmiconfig@8.3.6(typescript@5.9.3): dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: - typescript: 4.9.5 + typescript: 5.9.3 - cross-spawn@7.0.3: + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 @@ -6823,7 +6798,7 @@ snapshots: css-tree@2.2.1: dependencies: mdn-data: 2.0.28 - source-map-js: 1.2.0 + source-map-js: 1.2.1 css-tree@2.3.1: dependencies: @@ -6834,25 +6809,23 @@ snapshots: css.escape@1.5.1: {} - cssesc@3.0.0: {} - csso@5.0.5: dependencies: css-tree: 2.2.1 csstype@3.1.3: {} - cytoscape-cose-bilkent@4.1.0(cytoscape@3.32.0): + cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1): dependencies: cose-base: 1.0.3 - cytoscape: 3.32.0 + cytoscape: 3.33.1 - cytoscape-fcose@2.2.0(cytoscape@3.32.0): + cytoscape-fcose@2.2.0(cytoscape@3.33.1): dependencies: cose-base: 2.2.0 - cytoscape: 3.32.0 + cytoscape: 3.33.1 - cytoscape@3.32.0: {} + cytoscape@3.33.1: {} d3-array@2.12.1: dependencies: @@ -7036,7 +7009,7 @@ snapshots: dependencies: ms: 2.1.2 - debug@4.4.1: + debug@4.4.3: dependencies: ms: 2.1.3 @@ -7044,6 +7017,10 @@ snapshots: dependencies: character-entities: 2.0.2 + decode-named-character-reference@1.2.0: + dependencies: + character-entities: 2.0.2 + deep-extend@0.6.0: {} deepmerge@4.3.1: {} @@ -7064,17 +7041,12 @@ snapshots: detect-libc@2.0.3: {} - detect-libc@2.1.2: - optional: true + detect-libc@2.1.2: {} devlop@1.1.0: dependencies: dequal: 2.0.3 - didyoumean@1.2.2: {} - - dlv@1.1.3: {} - dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 @@ -7091,6 +7063,10 @@ snapshots: optionalDependencies: '@types/trusted-types': 2.0.7 + dompurify@3.3.0: + optionalDependencies: + '@types/trusted-types': 2.0.7 + domutils@3.1.0: dependencies: dom-serializer: 2.0.0 @@ -7110,21 +7086,18 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - eastasianwidth@0.2.0: {} - electron-to-chromium@1.4.819: {} - emoji-regex-xs@1.0.0: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - emojis-list@3.0.0: {} + enhanced-resolve@5.18.3: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.0 + entities@4.5.0: {} - entities@6.0.0: {} + entities@6.0.1: {} error-ex@1.3.2: dependencies: @@ -7155,9 +7128,9 @@ snapshots: esast-util-from-js@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 - acorn: 8.14.1 + acorn: 8.15.0 esast-util-from-estree: 2.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 escalade@3.1.2: {} @@ -7167,11 +7140,9 @@ snapshots: esm@3.2.25: {} - esprima@4.0.1: {} - estree-util-attach-comments@3.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 estree-util-build-jsx@3.0.1: dependencies: @@ -7186,18 +7157,18 @@ snapshots: estree-util-scope@1.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 devlop: 1.1.0 estree-util-to-js@2.0.0: dependencies: '@types/estree-jsx': 1.0.5 astring: 1.9.0 - source-map: 0.7.4 + source-map: 0.7.6 - estree-util-value-to-estree@3.4.0: + estree-util-value-to-estree@3.5.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 estree-util-visit@2.0.0: dependencies: @@ -7206,13 +7177,13 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 esutils@2.0.3: {} execa@8.0.1: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 8.0.1 human-signals: 5.0.0 is-stream: 3.0.0 @@ -7224,10 +7195,6 @@ snapshots: exsolve@1.0.8: {} - extend-shallow@2.0.1: - dependencies: - is-extendable: 0.1.1 - extend@3.0.2: {} fast-deep-equal@3.1.3: {} @@ -7240,6 +7207,14 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.7 + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + fast-json-patch@3.1.1: {} fastq@1.17.1: @@ -7254,27 +7229,22 @@ snapshots: dependencies: format: 0.2.2 + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + fflate@0.4.8: {} fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 - flexsearch@0.7.43: {} - - flexsearch@0.8.158: {} - follow-redirects@1.15.9: {} for-each@0.3.5: dependencies: is-callable: 1.2.7 - foreground-child@3.2.1: - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - form-data@4.0.5: dependencies: asynckit: 0.4.0 @@ -7285,11 +7255,6 @@ snapshots: format@0.2.2: {} - fraction.js@4.3.7: {} - - fsevents@2.3.3: - optional: true - function-bind@1.1.2: {} gensync@1.0.0-beta.2: {} @@ -7320,19 +7285,6 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob@10.4.4: - dependencies: - foreground-child: 3.2.1 - jackspeak: 3.4.2 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.0 - path-scurry: 1.11.1 - globals@11.12.0: {} globals@15.15.0: {} @@ -7350,13 +7302,6 @@ snapshots: graceful-fs@4.2.11: {} - gray-matter@4.0.3: - dependencies: - js-yaml: 3.14.1 - kind-of: 6.0.3 - section-matter: 1.0.0 - strip-bom-string: 1.0.0 - hachure-fill@0.5.2: {} has-flag@3.0.0: {} @@ -7395,7 +7340,7 @@ snapshots: hast-util-from-parse5: 8.0.3 parse5: 7.3.0 vfile: 6.0.3 - vfile-message: 4.0.2 + vfile-message: 4.0.3 hast-util-from-parse5@8.0.3: dependencies: @@ -7424,7 +7369,7 @@ snapshots: hast-util-from-parse5: 8.0.3 hast-util-to-parse5: 8.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 parse5: 7.3.0 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 @@ -7434,7 +7379,7 @@ snapshots: hast-util-to-estree@3.1.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 @@ -7461,7 +7406,7 @@ snapshots: comma-separated-tokens: 2.0.3 hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 @@ -7469,7 +7414,7 @@ snapshots: hast-util-to-jsx-runtime@2.3.6: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/hast': 3.0.4 '@types/unist': 3.0.3 comma-separated-tokens: 2.0.3 @@ -7483,7 +7428,7 @@ snapshots: space-separated-tokens: 2.0.2 style-to-js: 1.1.21 unist-util-position: 5.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 transitivePeerDependencies: - supports-color @@ -7566,10 +7511,6 @@ snapshots: is-arrayish@0.3.2: {} - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - is-callable@1.2.7: {} is-core-module@2.14.0: @@ -7580,12 +7521,8 @@ snapshots: is-docker@3.0.0: {} - is-extendable@0.1.1: {} - is-extglob@2.1.1: {} - is-fullwidth-code-point@3.0.0: {} - is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -7618,25 +7555,14 @@ snapshots: isexe@2.0.0: {} - jackspeak@3.4.2: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - javascript-stringify@2.1.0: {} - jiti@1.21.6: {} + jiti@2.6.1: {} js-file-download@0.4.12: {} js-tokens@4.0.0: {} - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - js-yaml@4.1.0: dependencies: argparse: 2.0.1 @@ -7653,14 +7579,12 @@ snapshots: jstz@2.1.1: {} - katex@0.16.22: + katex@0.16.25: dependencies: commander: 8.3.0 khroma@2.1.0: {} - kind-of@6.0.3: {} - kolorist@1.8.0: {} langium@3.3.1: @@ -7675,9 +7599,54 @@ snapshots: layout-base@2.0.1: {} - lilconfig@2.1.0: {} + lightningcss-android-arm64@1.30.2: + optional: true + + lightningcss-darwin-arm64@1.30.2: + optional: true + + lightningcss-darwin-x64@1.30.2: + optional: true + + lightningcss-freebsd-x64@1.30.2: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.2: + optional: true + + lightningcss-linux-arm64-gnu@1.30.2: + optional: true + + lightningcss-linux-arm64-musl@1.30.2: + optional: true + + lightningcss-linux-x64-gnu@1.30.2: + optional: true + + lightningcss-linux-x64-musl@1.30.2: + optional: true - lilconfig@3.1.2: {} + lightningcss-win32-arm64-msvc@1.30.2: + optional: true + + lightningcss-win32-x64-msvc@1.30.2: + optional: true + + lightningcss@1.30.2: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.30.2 + lightningcss-darwin-arm64: 1.30.2 + lightningcss-darwin-x64: 1.30.2 + lightningcss-freebsd-x64: 1.30.2 + lightningcss-linux-arm-gnueabihf: 1.30.2 + lightningcss-linux-arm64-gnu: 1.30.2 + lightningcss-linux-arm64-musl: 1.30.2 + lightningcss-linux-x64-gnu: 1.30.2 + lightningcss-linux-x64-musl: 1.30.2 + lightningcss-win32-arm64-msvc: 1.30.2 + lightningcss-win32-x64-msvc: 1.30.2 lines-and-columns@1.2.4: {} @@ -7701,14 +7670,8 @@ snapshots: lodash-es@4.17.21: {} - lodash.castarray@4.4.0: {} - lodash.debounce@4.0.8: {} - lodash.isplainobject@4.0.6: {} - - lodash.merge@4.6.2: {} - lodash@4.17.21: {} longest-streak@3.1.0: {} @@ -7726,12 +7689,14 @@ snapshots: fault: 1.0.4 highlight.js: 10.7.3 - lru-cache@10.4.1: {} - lru-cache@5.1.1: dependencies: yallist: 3.1.1 + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + markdown-extensions@2.0.0: {} markdown-it@14.1.0: @@ -7786,14 +7751,14 @@ snapshots: dependencies: '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 mdast-util-from-markdown@2.0.2: dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 - decode-named-character-reference: 1.1.0 + decode-named-character-reference: 1.2.0 devlop: 1.1.0 mdast-util-to-string: 4.0.0 micromark: 4.0.2 @@ -7910,7 +7875,7 @@ snapshots: parse-entities: 4.0.2 stringify-entities: 4.0.4 unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 transitivePeerDependencies: - supports-color @@ -7938,9 +7903,9 @@ snapshots: mdast-util-phrasing@4.1.0: dependencies: '@types/mdast': 4.0.4 - unist-util-is: 6.0.0 + unist-util-is: 6.0.1 - mdast-util-to-hast@13.2.0: + mdast-util-to-hast@13.2.1: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 @@ -7984,15 +7949,15 @@ snapshots: '@iconify/utils': 3.0.2 '@mermaid-js/parser': 0.6.3 '@types/d3': 7.4.3 - cytoscape: 3.32.0 - cytoscape-cose-bilkent: 4.1.0(cytoscape@3.32.0) - cytoscape-fcose: 2.2.0(cytoscape@3.32.0) + cytoscape: 3.33.1 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.33.1) + cytoscape-fcose: 2.2.0(cytoscape@3.33.1) d3: 7.9.0 d3-sankey: 0.12.3 dagre-d3-es: 7.0.13 dayjs: 1.11.19 - dompurify: 3.2.6 - katex: 0.16.22 + dompurify: 3.3.0 + katex: 0.16.25 khroma: 2.1.0 lodash-es: 4.17.21 marked: 16.4.2 @@ -8007,7 +7972,7 @@ snapshots: micromark-core-commonmark@2.0.3: dependencies: - decode-named-character-reference: 1.1.0 + decode-named-character-reference: 1.2.0 devlop: 1.1.0 micromark-factory-destination: 2.0.1 micromark-factory-label: 2.0.1 @@ -8093,7 +8058,7 @@ snapshots: dependencies: '@types/katex': 0.16.7 devlop: 1.1.0 - katex: 0.16.22 + katex: 0.16.25 micromark-factory-space: 2.0.1 micromark-util-character: 2.1.1 micromark-util-symbol: 2.0.1 @@ -8101,7 +8066,7 @@ snapshots: micromark-extension-mdx-expression@3.0.1: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 devlop: 1.1.0 micromark-factory-mdx-expression: 2.0.3 micromark-factory-space: 2.0.1 @@ -8112,7 +8077,7 @@ snapshots: micromark-extension-mdx-jsx@3.0.2: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 micromark-factory-mdx-expression: 2.0.3 @@ -8121,7 +8086,7 @@ snapshots: micromark-util-events-to-acorn: 2.0.3 micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - vfile-message: 4.0.2 + vfile-message: 4.0.3 micromark-extension-mdx-md@2.0.0: dependencies: @@ -8129,7 +8094,7 @@ snapshots: micromark-extension-mdxjs-esm@3.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 micromark-util-character: 2.1.1 @@ -8137,12 +8102,12 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) micromark-extension-mdx-expression: 3.0.1 micromark-extension-mdx-jsx: 3.0.2 micromark-extension-mdx-md: 2.0.0 @@ -8165,7 +8130,7 @@ snapshots: micromark-factory-mdx-expression@2.0.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 devlop: 1.1.0 micromark-factory-space: 2.0.1 micromark-util-character: 2.1.1 @@ -8173,7 +8138,7 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 micromark-factory-space@2.0.1: dependencies: @@ -8220,7 +8185,7 @@ snapshots: micromark-util-decode-string@2.0.1: dependencies: - decode-named-character-reference: 1.1.0 + decode-named-character-reference: 1.2.0 micromark-util-character: 2.1.1 micromark-util-decode-numeric-character-reference: 2.0.2 micromark-util-symbol: 2.0.1 @@ -8229,13 +8194,13 @@ snapshots: micromark-util-events-to-acorn@2.0.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/unist': 3.0.3 devlop: 1.1.0 estree-util-visit: 2.0.0 micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - vfile-message: 4.0.2 + vfile-message: 4.0.3 micromark-util-html-tag-name@2.0.1: {} @@ -8267,8 +8232,8 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.1 - decode-named-character-reference: 1.1.0 + debug: 4.4.3 + decode-named-character-reference: 1.2.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 micromark-factory-space: 2.0.1 @@ -8296,6 +8261,11 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + mime-db@1.52.0: {} mime-types@2.1.35: @@ -8308,18 +8278,16 @@ snapshots: dependencies: lodash: 4.17.21 - minimatch@7.4.6: + minimatch@10.1.1: dependencies: - brace-expansion: 2.0.1 + '@isaacs/brace-expansion': 5.0.0 - minimatch@9.0.5: + minimatch@7.4.6: dependencies: brace-expansion: 2.0.1 minimist@1.2.8: {} - minipass@7.1.2: {} - mj-context-menu@0.6.1: {} mlly@1.8.0: @@ -8335,16 +8303,8 @@ snapshots: ms@2.1.3: {} - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - nanoid@3.3.11: {} - nanoid@3.3.7: {} - negotiator@1.0.0: {} neotraverse@0.6.18: {} @@ -8385,66 +8345,69 @@ snapshots: - '@babel/core' - babel-plugin-macros - nextra-theme-docs@3.3.1(next@15.5.7(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@3.3.1(@types/react@19.1.6)(next@15.5.7(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@4.9.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + nextra-theme-docs@4.6.0(@types/react@19.1.6)(next@15.5.7(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@4.6.0(next@15.5.7(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(use-sync-external-store@1.6.0(react@18.3.1)): dependencies: '@headlessui/react': 2.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1) clsx: 2.1.1 - escape-string-regexp: 5.0.0 - flexsearch: 0.7.43 next: 15.5.7(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-themes: 0.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - nextra: 3.3.1(@types/react@19.1.6)(next@15.5.7(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@4.9.5) + nextra: 4.6.0(next@15.5.7(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3) react: 18.3.1 + react-compiler-runtime: 19.1.0-rc.3(react@18.3.1) react-dom: 18.3.1(react@18.3.1) scroll-into-view-if-needed: 3.1.0 - zod: 3.25.49 + zod: 4.0.0-beta.20250424T163858 + zustand: 5.0.8(@types/react@19.1.6)(react@18.3.1)(use-sync-external-store@1.6.0(react@18.3.1)) + transitivePeerDependencies: + - '@types/react' + - immer + - use-sync-external-store - nextra@3.3.1(@types/react@19.1.6)(next@15.5.7(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@4.9.5): + nextra@4.6.0(next@15.5.7(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3): dependencies: - '@formatjs/intl-localematcher': 0.5.10 + '@formatjs/intl-localematcher': 0.6.2 '@headlessui/react': 2.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mdx-js/mdx': 3.1.1 - '@mdx-js/react': 3.1.1(@types/react@19.1.6)(react@18.3.1) - '@napi-rs/simple-git': 0.1.19 - '@shikijs/twoslash': 1.29.2(typescript@4.9.5) - '@theguild/remark-mermaid': 0.1.3(react@18.3.1) + '@napi-rs/simple-git': 0.1.22 + '@shikijs/twoslash': 3.15.0(typescript@5.9.3) + '@theguild/remark-mermaid': 0.3.0(react@18.3.1) '@theguild/remark-npm2yarn': 0.3.3 better-react-mathjax: 2.3.0(react@18.3.1) clsx: 2.1.1 estree-util-to-js: 2.0.0 - estree-util-value-to-estree: 3.4.0 + estree-util-value-to-estree: 3.5.0 + fast-glob: 3.3.3 github-slugger: 2.0.0 - graceful-fs: 4.2.11 - gray-matter: 4.0.3 hast-util-to-estree: 3.1.3 - katex: 0.16.22 + katex: 0.16.25 mdast-util-from-markdown: 2.0.2 mdast-util-gfm: 3.1.0 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 negotiator: 1.0.0 next: 15.5.7(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - p-limit: 6.2.0 react: 18.3.1 + react-compiler-runtime: 19.1.0-rc.3(react@18.3.1) react-dom: 18.3.1(react@18.3.1) react-medium-image-zoom: 5.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rehype-katex: 7.0.1 - rehype-pretty-code: 0.14.0(shiki@1.29.2) + rehype-pretty-code: 0.14.1(shiki@3.15.0) rehype-raw: 7.0.0 remark-frontmatter: 5.0.0 remark-gfm: 4.0.1 remark-math: 6.0.0 remark-reading-time: 2.0.2 remark-smartypants: 3.0.2 - shiki: 1.29.2 + server-only: 0.0.1 + shiki: 3.15.0 slash: 5.1.0 title: 4.0.1 + ts-morph: 27.0.2 unist-util-remove: 4.0.0 unist-util-visit: 5.0.0 - yaml: 2.4.5 - zod: 3.25.49 - zod-validation-error: 3.5.4(zod@3.25.49) + unist-util-visit-children: 3.0.0 + yaml: 2.8.1 + zod: 4.0.0-beta.20250424T163858 transitivePeerDependencies: - - '@types/react' - supports-color - typescript @@ -8474,10 +8437,6 @@ snapshots: node-releases@2.0.14: {} - normalize-path@3.0.0: {} - - normalize-range@0.1.2: {} - npm-run-path@5.3.0: dependencies: path-key: 4.0.0 @@ -8490,17 +8449,17 @@ snapshots: object-assign@4.1.1: {} - object-hash@3.0.0: {} - onetime@6.0.0: dependencies: mimic-fn: 4.0.0 - oniguruma-to-es@2.3.0: + oniguruma-parser@0.12.1: {} + + oniguruma-to-es@4.3.4: dependencies: - emoji-regex-xs: 1.0.0 - regex: 5.1.1 - regex-recursion: 5.1.1 + oniguruma-parser: 0.12.1 + regex: 6.0.1 + regex-recursion: 6.0.2 openapi-path-templating@2.2.1: dependencies: @@ -8510,14 +8469,17 @@ snapshots: dependencies: apg-lite: 1.0.5 - p-limit@6.2.0: - dependencies: - yocto-queue: 1.2.2 - - package-json-from-dist@1.0.0: {} - package-manager-detector@1.5.0: {} + pagefind@1.4.0: + optionalDependencies: + '@pagefind/darwin-arm64': 1.4.0 + '@pagefind/darwin-x64': 1.4.0 + '@pagefind/freebsd-x64': 1.4.0 + '@pagefind/linux-arm64': 1.4.0 + '@pagefind/linux-x64': 1.4.0 + '@pagefind/windows-x64': 1.4.0 + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -8552,7 +8514,9 @@ snapshots: parse5@7.3.0: dependencies: - entities: 6.0.0 + entities: 6.0.1 + + path-browserify@1.0.1: {} path-data-parser@0.1.0: {} @@ -8562,11 +8526,6 @@ snapshots: path-parse@1.0.7: {} - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.1 - minipass: 7.1.2 - path-type@4.0.0: {} path-type@5.0.0: {} @@ -8579,9 +8538,7 @@ snapshots: picomatch@2.3.1: {} - pify@2.3.0: {} - - pirates@4.0.6: {} + picomatch@4.0.3: {} pkg-types@1.3.1: dependencies: @@ -8604,54 +8561,12 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-import@15.1.0(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 - - postcss-js@4.0.1(postcss@8.4.39): - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.39 - - postcss-load-config@4.0.2(postcss@8.4.39): - dependencies: - lilconfig: 3.1.2 - yaml: 2.4.5 - optionalDependencies: - postcss: 8.4.39 - - postcss-nested@6.0.1(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - postcss-selector-parser: 6.1.0 - - postcss-selector-parser@6.0.10: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-selector-parser@6.1.0: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-value-parser@4.2.0: {} - postcss@8.4.31: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 - postcss@8.4.39: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.1 - source-map-js: 1.2.0 - postcss@8.5.6: dependencies: nanoid: 3.3.11 @@ -8709,6 +8624,10 @@ snapshots: dependencies: safe-buffer: 5.2.1 + react-compiler-runtime@19.1.0-rc.3(react@18.3.1): + dependencies: + react: 18.3.1 + react-copy-to-clipboard@5.1.0(react@18.3.1): dependencies: copy-to-clipboard: 3.3.3 @@ -8781,26 +8700,18 @@ snapshots: dependencies: loose-envify: 1.4.0 - read-cache@1.0.0: - dependencies: - pify: 2.3.0 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - reading-time@1.5.0: {} recma-build-jsx@1.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 estree-util-build-jsx: 3.0.1 vfile: 6.0.3 - recma-jsx@1.0.1(acorn@8.14.1): + recma-jsx@1.0.1(acorn@8.15.0): dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) estree-util-to-js: 2.0.0 recma-parse: 1.0.0 recma-stringify: 1.0.0 @@ -8808,14 +8719,14 @@ snapshots: recma-parse@1.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 esast-util-from-js: 2.0.1 unified: 11.0.5 vfile: 6.0.3 recma-stringify@1.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 estree-util-to-js: 2.0.0 unified: 11.0.5 vfile: 6.0.3 @@ -8845,14 +8756,13 @@ snapshots: dependencies: '@babel/runtime': 7.24.7 - regex-recursion@5.1.1: + regex-recursion@6.0.2: dependencies: - regex: 5.1.1 regex-utilities: 2.3.0 regex-utilities@2.3.0: {} - regex@5.1.1: + regex@6.0.1: dependencies: regex-utilities: 2.3.0 @@ -8875,8 +8785,8 @@ snapshots: '@types/katex': 0.16.7 hast-util-from-html-isomorphic: 2.0.0 hast-util-to-text: 4.0.2 - katex: 0.16.22 - unist-util-visit-parents: 6.0.1 + katex: 0.16.25 + unist-util-visit-parents: 6.0.2 vfile: 6.0.3 rehype-parse@9.0.1: @@ -8885,13 +8795,13 @@ snapshots: hast-util-from-html: 2.0.3 unified: 11.0.5 - rehype-pretty-code@0.14.0(shiki@1.29.2): + rehype-pretty-code@0.14.1(shiki@3.15.0): dependencies: '@types/hast': 3.0.4 hast-util-to-string: 3.0.1 parse-numeric-range: 1.3.0 rehype-parse: 9.0.1 - shiki: 1.29.2 + shiki: 3.15.0 unified: 11.0.5 unist-util-visit: 5.0.0 @@ -8903,7 +8813,7 @@ snapshots: rehype-recma@1.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/hast': 3.0.4 hast-util-to-estree: 3.1.3 transitivePeerDependencies: @@ -8957,7 +8867,7 @@ snapshots: remark-reading-time@2.0.2: dependencies: estree-util-is-identifier-name: 2.1.0 - estree-util-value-to-estree: 3.4.0 + estree-util-value-to-estree: 3.5.0 reading-time: 1.5.0 unist-util-visit: 3.1.0 @@ -8965,7 +8875,7 @@ snapshots: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 unified: 11.0.5 vfile: 6.0.3 @@ -9061,11 +8971,6 @@ snapshots: dependencies: compute-scroll-into-view: 3.1.1 - section-matter@1.0.0: - dependencies: - extend-shallow: 2.0.1 - kind-of: 6.0.3 - semver@6.3.1: {} semver@7.7.1: {} @@ -9077,6 +8982,8 @@ snapshots: dependencies: type-fest: 0.20.2 + server-only@0.0.1: {} + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -9157,14 +9064,14 @@ snapshots: shebang-regex@3.0.0: {} - shiki@1.29.2: + shiki@3.15.0: dependencies: - '@shikijs/core': 1.29.2 - '@shikijs/engine-javascript': 1.29.2 - '@shikijs/engine-oniguruma': 1.29.2 - '@shikijs/langs': 1.29.2 - '@shikijs/themes': 1.29.2 - '@shikijs/types': 1.29.2 + '@shikijs/core': 3.15.0 + '@shikijs/engine-javascript': 3.15.0 + '@shikijs/engine-oniguruma': 3.15.0 + '@shikijs/langs': 3.15.0 + '@shikijs/themes': 3.15.0 + '@shikijs/types': 3.15.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -9189,7 +9096,7 @@ snapshots: source-map-js@1.2.1: {} - source-map@0.7.4: {} + source-map@0.7.6: {} space-separated-tokens@2.0.2: {} @@ -9201,33 +9108,11 @@ snapshots: sprintf-js@1.0.3: {} - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.0.1 - - strip-bom-string@1.0.0: {} - strip-final-newline@3.0.0: {} style-to-js@1.1.21: @@ -9247,16 +9132,6 @@ snapshots: stylis@4.3.6: {} - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - commander: 4.1.1 - glob: 10.4.4 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -9344,45 +9219,19 @@ snapshots: tabbable@6.3.0: {} - tailwind-merge@2.4.0: {} + tailwind-merge@3.4.0: {} - tailwindcss@3.4.4: - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.6 - lilconfig: 2.1.0 - micromatch: 4.0.7 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.1 - postcss: 8.4.39 - postcss-import: 15.1.0(postcss@8.4.39) - postcss-js: 4.0.1(postcss@8.4.39) - postcss-load-config: 4.0.2(postcss@8.4.39) - postcss-nested: 6.0.1(postcss@8.4.39) - postcss-selector-parser: 6.1.0 - resolve: 1.22.8 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 + tailwindcss@4.1.17: {} - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 + tapable@2.3.0: {} tinyexec@1.0.2: {} + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + title@4.0.1: dependencies: arg: 5.0.2 @@ -9429,23 +9278,26 @@ snapshots: ts-dedent@2.2.0: {} - ts-interface-checker@0.1.13: {} - ts-mixer@6.0.4: {} + ts-morph@27.0.2: + dependencies: + '@ts-morph/common': 0.28.1 + code-block-writer: 13.0.3 + ts-toolbelt@9.6.0: {} tslib@2.6.3: {} tslib@2.8.1: {} - twoslash-protocol@0.2.12: {} + twoslash-protocol@0.3.4: {} - twoslash@0.2.12(typescript@4.9.5): + twoslash@0.3.4(typescript@5.9.3): dependencies: - '@typescript/vfs': 1.6.2(typescript@4.9.5) - twoslash-protocol: 0.2.12 - typescript: 4.9.5 + '@typescript/vfs': 1.6.2(typescript@5.9.3) + twoslash-protocol: 0.3.4 + typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -9461,7 +9313,7 @@ snapshots: dependencies: ts-toolbelt: 9.6.0 - typescript@4.9.5: {} + typescript@5.9.3: {} uc.micro@2.1.0: {} @@ -9495,7 +9347,7 @@ snapshots: unist-util-find-after@5.0.0: dependencies: '@types/unist': 3.0.3 - unist-util-is: 6.0.0 + unist-util-is: 6.0.1 unist-util-is@5.2.1: dependencies: @@ -9505,6 +9357,10 @@ snapshots: dependencies: '@types/unist': 3.0.3 + unist-util-is@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-modify-children@4.0.0: dependencies: '@types/unist': 3.0.3 @@ -9526,8 +9382,8 @@ snapshots: unist-util-remove@4.0.0: dependencies: '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 unist-util-stringify-position@4.0.0: dependencies: @@ -9547,6 +9403,11 @@ snapshots: '@types/unist': 3.0.3 unist-util-is: 6.0.0 + unist-util-visit-parents@6.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit@3.1.0: dependencies: '@types/unist': 2.0.11 @@ -9565,7 +9426,7 @@ snapshots: dependencies: browserslist: 4.23.1 escalade: 3.1.2 - picocolors: 1.0.1 + picocolors: 1.1.1 url-parse@1.5.10: dependencies: @@ -9576,7 +9437,9 @@ snapshots: dependencies: react: 18.3.1 - util-deprecate@1.0.2: {} + use-sync-external-store@1.6.0(react@18.3.1): + dependencies: + react: 18.3.1 uuid@11.1.0: {} @@ -9590,6 +9453,11 @@ snapshots: '@types/unist': 3.0.3 unist-util-stringify-position: 4.0.0 + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + vfile@6.0.3: dependencies: '@types/unist': 3.0.3 @@ -9637,18 +9505,6 @@ snapshots: wicked-good-xpath@1.3.0: {} - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - xml-but-prettier@1.0.1: dependencies: repeat-string: 1.6.1 @@ -9665,7 +9521,7 @@ snapshots: yaml@2.4.5: {} - yocto-queue@1.2.2: {} + yaml@2.8.1: {} youtube-player@5.5.2: dependencies: @@ -9677,10 +9533,14 @@ snapshots: zenscroll@4.0.2: {} - zod-validation-error@3.5.4(zod@3.25.49): + zod@4.0.0-beta.20250424T163858: dependencies: - zod: 3.25.49 + '@zod/core': 0.9.0 - zod@3.25.49: {} + zustand@5.0.8(@types/react@19.1.6)(react@18.3.1)(use-sync-external-store@1.6.0(react@18.3.1)): + optionalDependencies: + '@types/react': 19.1.6 + react: 18.3.1 + use-sync-external-store: 1.6.0(react@18.3.1) zwitch@2.0.4: {} diff --git a/postcss.config.js b/postcss.config.js deleted file mode 100644 index cbfea5e..0000000 --- a/postcss.config.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - plugins: { - "tailwindcss/nesting": {}, - tailwindcss: {}, - autoprefixer: {}, - }, -}; diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 0000000..c2ddf74 --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,5 @@ +export default { + plugins: { + "@tailwindcss/postcss": {}, + }, +}; diff --git a/public/feed.json b/public/feed.json deleted file mode 100644 index a5d488c..0000000 --- a/public/feed.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "version": "https://jsonfeed.org/version/1", - "title": "AuthZed Blog", - "home_page_url": "https://authzed.com", - "feed_url": "https://authzed.com/feed/json", - "description": "The AuthZed blog: Articles from the AuthZed team about SpiceDB, Fine Grained Authorization, Google Zanzibar, and engineering culture.", - "icon": "https://authzed.com/authzed-logo-multi.svg", - "items": [] -} diff --git a/scripts/postbuild.sh b/scripts/postbuild.sh index da5c128..7a7d180 100755 --- a/scripts/postbuild.sh +++ b/scripts/postbuild.sh @@ -5,5 +5,5 @@ set -e # Generate sitemap pnpm exec next-sitemap -# Update blog search data -curl -o public/feed.json https://authzed.com/feed/json +# Generate search +pagefind --site .next/server/app --output-path public/_pagefind --verbose diff --git a/tailwind.config.ts b/tailwind.config.ts deleted file mode 100644 index 5da2ea1..0000000 --- a/tailwind.config.ts +++ /dev/null @@ -1,51 +0,0 @@ -import type { Config } from "tailwindcss"; -import colors from "tailwindcss/colors"; - -export default { - // prefix: '', // NOTE: nextra-docs-theme uses 'nx-' as a prefix. Unprefixed classes will take precendence over nx- prefixed classes. - content: [ - "./pages/**/*.{js,ts,jsx,tsx,mdx}", - "./components/**/*.{js,ts,jsx,tsx}", - "./theme.config.tsx", - ], - theme: { - // Copied from nextra-docs-theme to match - screens: { - sm: "640px", - md: "768px", - lg: "1024px", - xl: "1280px", - "2xl": "1536px", - }, - // Copied from nextra-docs-theme to match - fontSize: { - xs: ".75rem", - sm: ".875rem", - base: "1rem", - lg: "1.125rem", - xl: "1.25rem", - "2xl": "1.5rem", - "3xl": "1.875rem", - "4xl": "2.25rem", - "5xl": "3rem", - "6xl": "4rem", - }, - // Copied from nextra-docs-theme to match - letterSpacing: { - tight: "-0.015em", - }, - extend: { - // All default color palettees are available - colors: { - dark: "#111", - transparent: "transparent", - current: "currentColor", - black: "#000", - white: "#fff", - primary: colors.neutral, - }, - }, - }, - plugins: [], - darkMode: ["class", 'html[class~="dark"]'], -} satisfies Config; diff --git a/theme.config.tsx b/theme.config.tsx deleted file mode 100644 index 992e1b8..0000000 --- a/theme.config.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import { useRouter } from "next/router"; -import { DocsThemeConfig, useConfig } from "nextra-theme-docs"; -import Banner from "./components/banner"; -import { NavCTA, TocCTA } from "./components/cta"; -import Footer from "./components/footer"; -import { Logo } from "./components/logo"; -import { Flexsearch } from "./components/nextra/Flexsearch"; - -const config: DocsThemeConfig = { - logo: Logo, - logoLink: "https://authzed.com", - project: { link: "https://github.com/authzed/spicedb" }, - head: () => { - const { asPath } = useRouter(); - const { title: titleContent, frontMatter } = useConfig(); - const desc = - frontMatter.description || - "Welcome to the SpiceDB and AuthZed docs site."; - const resolvedTitle = titleContent - ? `${titleContent} - Authzed Docs` - : "Authzed Docs"; - return ( - <> - {resolvedTitle} - - - - - - ); - }, - darkMode: true, - color: { - hue: { dark: 45, light: 290 }, - saturation: { dark: 100, light: 100 }, - }, - chat: { link: "https://authzed.com/discord" }, - docsRepositoryBase: "https://github.com/authzed/docs/blob/main", - banner: { - dismissible: false, - content: , - }, - navbar: { - extraContent: , - }, - sidebar: { - toggleButton: true, - defaultMenuCollapseLevel: 1, - }, - feedback: { - content: ( - - Something unclear? -
- Create an issue → -
- ), - }, - toc: { backToTop: true, extraContent: }, - footer: { - component: