From 729b9ba69a6b8fa857829547c8df70209eff163c Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Thu, 15 Oct 2026 12:03:03 +0200 Subject: [PATCH 1/2] Add nimbus.json baseline for Nimbus component tracking The Nimbus site was adopted from the monorepo POC in one bulk commit rather than scaffolded with create-nimbus-docs, and its components were copied in by hand instead of installed with `nimbus-docs add`, so no nimbus.json was ever written. Without it `nimbus-docs outdated` has no baseline and every Nimbus upgrade is a manual diff. Generate the record with `nimbus-docs init`: 28 registry components recorded, 5 byte-identical to registry release 0.18.1 (button, card, card-grid, popover, cn) and 23 locally modified. Starter provenance (version, templatesTag, variant) is left null and flagged `reconstructed` because the starter files were never taken from a templates tag. Hide nimbus.json from Mintlify alongside the other Nimbus tooling files and document the file and the `outdated` command in src/README.md. Co-Authored-By: Claude Fable 5.1 --- .mintignore | 1 + nimbus.json | 399 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/README.md | 2 + 3 files changed, 402 insertions(+) create mode 100644 nimbus.json diff --git a/.mintignore b/.mintignore index fa321c7ef..b65d1002b 100644 --- a/.mintignore +++ b/.mintignore @@ -46,5 +46,6 @@ _site/styles/ /wrangler.jsonc /wrangler.preview.jsonc /remotes.json +/nimbus.json /.preview-scope.json /reports/ diff --git a/nimbus.json b/nimbus.json new file mode 100644 index 000000000..bbefa59c8 --- /dev/null +++ b/nimbus.json @@ -0,0 +1,399 @@ +{ + "$schema": "https://nimbus-docs.com/schema/nimbus.json", + "version": null, + "templatesTag": null, + "variant": null, + "registry": "https://nimbus-docs.com/registry", + "reconstructed": true, + "install": { + "root": "src", + "aliases": { + "@/*": "src/*" + } + }, + "components": [ + { + "slug": "api-code-rail", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:594b0c3b7323f49ec5ec54fbe56791eb75393feb0132823356b8b37c5b9736d6", + "files": [ + "src/components/ui/api-code-rail/ApiCodeRail.astro", + "src/components/ui/api-code-rail/code-rail.client.ts", + "src/components/ui/api-code-rail/code-rail.css", + "src/components/ui/api-code-rail/index.ts" + ], + "modified": true + }, + { + "slug": "api-field-row", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:9aa81f094eba39404cf1f3293d76ef583db47eb46b30a4a0d1538c3add59d059", + "files": [ + "src/components/ui/api-field-row/ApiFieldList.astro", + "src/components/ui/api-field-row/ApiFieldRow.astro", + "src/components/ui/api-field-row/ApiUnionExplorer.astro", + "src/components/ui/api-field-row/api-field-row.client.ts", + "src/components/ui/api-field-row/field-list.css", + "src/components/ui/api-field-row/index.ts", + "src/components/ui/api-field-row/type-display.ts" + ], + "modified": true + }, + { + "slug": "api-layout", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:d1a8f12781d9260eeb142f463541cf4638df4afae6391ea524248b5dd67bf0e9", + "files": [ + "src/components/ui/api-layout/ApiBody.astro", + "src/components/ui/api-layout/ApiEndpointCard.astro", + "src/components/ui/api-layout/ApiLayout.astro", + "src/components/ui/api-layout/auth.ts", + "src/components/ui/api-layout/index.ts", + "src/components/ui/api-layout/request-examples.client.ts", + "src/components/ui/api-layout/responses.client.ts" + ], + "modified": true + }, + { + "slug": "api-sidebar", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:a287d4741dd3ecd0757b5ea19c61b836ea5f270bd9c3ef1274f11eb335f5c370", + "files": [ + "src/components/ui/api-sidebar/ApiMethodChip.astro", + "src/components/ui/api-sidebar/ApiSidebar.astro", + "src/components/ui/api-sidebar/ApiSidebarItem.astro", + "src/components/ui/api-sidebar/api-nav-filter.client.ts", + "src/components/ui/api-sidebar/index.ts", + "src/components/ui/api-sidebar/method.ts" + ], + "modified": true + }, + { + "slug": "aside", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:04652c91b49331458aeee3c2aafee4e688080bd4cafb5fb255c442c2bc7d73e9", + "files": [ + "src/components/ui/aside/Aside.astro", + "src/components/ui/aside/index.ts" + ], + "modified": true + }, + { + "slug": "badge", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:fad1e370042cbb87597a907a94263d4a320708ef54d401d3665c29f8cbc472dc", + "files": [ + "src/components/ui/badge/Badge.astro", + "src/components/ui/badge/index.ts" + ], + "modified": true + }, + { + "slug": "banner", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:950c6ef232a8b7ca36534c51cac03b932c2859e4da7c1f29f9bf96dbcc70a6da", + "files": [ + "src/components/ui/banner/Banner.astro", + "src/components/ui/banner/banner.client.ts", + "src/components/ui/banner/index.ts" + ], + "modified": true + }, + { + "slug": "breadcrumbs", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:291029522a80f958904ec44f63e308d804a4f6820f89d15ed05237ded7a77568", + "files": [ + "src/components/ui/breadcrumbs/Breadcrumbs.astro", + "src/components/ui/breadcrumbs/index.ts" + ], + "modified": true + }, + { + "slug": "button", + "type": "registry:ui", + "version": "0.18.1", + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:a2fd2697645003aabd17ecbb4e8d25af37ce8d738adfdeac6ecdc5405bca63be", + "files": [ + "src/components/ui/button/Button.astro", + "src/components/ui/button/index.ts", + "src/components/ui/button/variants.ts" + ] + }, + { + "slug": "card", + "type": "registry:ui", + "version": "0.18.1", + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:8ba0ae82e4e13883b7df0169ddc204e69f1fd0b8e06489476e65656ecc146eab", + "files": [ + "src/components/ui/card/Card.astro", + "src/components/ui/card/index.ts" + ] + }, + { + "slug": "card-grid", + "type": "registry:ui", + "version": "0.18.1", + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:428117e01734727c4467da3d63471ca82e60cf0675dfb5756165a77301a7152d", + "files": [ + "src/components/ui/card-grid/CardGrid.astro", + "src/components/ui/card-grid/index.ts" + ] + }, + { + "slug": "code", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:9f5e14756ee7e0ccea8c7638aa42bde56111f32d4ee465907e078067f632f73c", + "files": [ + "src/components/ui/code/Code.astro", + "src/components/ui/code/index.ts" + ], + "modified": true + }, + { + "slug": "collapsible", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:ba266b75f45260ed5e0f40bcbcd642acdc5aafee9ba177d41b696a06a897505a", + "files": [ + "src/components/ui/collapsible/Collapsible.astro", + "src/components/ui/collapsible/CollapsibleContent.astro", + "src/components/ui/collapsible/CollapsibleTrigger.astro", + "src/components/ui/collapsible/collapsible.client.ts", + "src/components/ui/collapsible/index.ts" + ], + "modified": true + }, + { + "slug": "dialog", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:a2d7f98689cf948efbb3b1f669c9e77b9101b9bb7ae7b2aec216091b54105412", + "files": [ + "src/components/ui/dialog/Dialog.astro", + "src/components/ui/dialog/DialogClose.astro", + "src/components/ui/dialog/DialogContent.astro", + "src/components/ui/dialog/dialog-close.client.ts", + "src/components/ui/dialog/dialog.client.ts", + "src/components/ui/dialog/index.ts" + ], + "modified": true + }, + { + "slug": "layer-card", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:5045f9e12a0f917aeb980d96a325dd19df2875b0c9d72625f629b4735423b267", + "files": [ + "src/components/ui/layer-card/LayerCard.astro", + "src/components/ui/layer-card/LayerCardContent.astro", + "src/components/ui/layer-card/LayerCardHeader.astro", + "src/components/ui/layer-card/index.ts" + ], + "modified": true + }, + { + "slug": "link-button", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:f1ba8a0cbf9738d90346199a04ec86062f2bbad3c5de4a3bb01db801581232b7", + "files": [ + "src/components/ui/link-button/LinkButton.astro", + "src/components/ui/link-button/index.ts" + ], + "modified": true + }, + { + "slug": "package-managers", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:7eb41aff339aebfdf61b57d23d678c9fb4227af4769037d41189084a4108d55f", + "files": [ + "src/components/ui/package-managers/PackageManagers.astro", + "src/components/ui/package-managers/index.ts", + "src/components/ui/package-managers/package-managers.client.ts" + ], + "modified": true + }, + { + "slug": "page-actions", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:b7acb80c61ff06f6f1a4ed214e6b33fa384813e8c8085d5c7e2d3572b867df60", + "files": [ + "src/components/ui/page-actions/PageActions.astro", + "src/components/ui/page-actions/index.ts", + "src/components/ui/page-actions/page-actions.client.ts" + ], + "modified": true + }, + { + "slug": "pagination", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:6ff484bfc271d4a39abb63dfcbf85345783be3a760579d6dd7293f1d05ee9b2a", + "files": [ + "src/components/ui/pagination/Pagination.astro", + "src/components/ui/pagination/index.ts" + ], + "modified": true + }, + { + "slug": "popover", + "type": "registry:ui", + "version": "0.18.1", + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:590229158b4eb215269f2ece1f2142b427da2ebed11c5cd636e68c5bf5b4a375", + "files": [ + "src/components/ui/popover/Popover.astro", + "src/components/ui/popover/PopoverContent.astro", + "src/components/ui/popover/PopoverTrigger.astro", + "src/components/ui/popover/index.ts", + "src/components/ui/popover/popover.client.ts" + ] + }, + { + "slug": "search", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:ed56b90a5027692099a618ee218ebea0b2d35db0981a0efdbe5a4869ec11fabe", + "files": [ + "src/components/ui/search/SearchDialog.astro", + "src/components/ui/search/SearchTrigger.astro", + "src/components/ui/search/index.ts", + "src/components/ui/search/providers/pagefind.ts", + "src/components/ui/search/search-trigger.client.ts", + "src/components/ui/search/search.client.ts" + ], + "modified": true + }, + { + "slug": "sidebar", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:04abe617f8614d4266e1e161032b6c70c713ec622aa8953eb01abc2c270323d6", + "files": [ + "src/components/ui/sidebar/Sidebar.astro", + "src/components/ui/sidebar/SidebarFilter.astro", + "src/components/ui/sidebar/SidebarGroup.astro", + "src/components/ui/sidebar/SidebarGroupHeader.astro", + "src/components/ui/sidebar/SidebarLink.astro", + "src/components/ui/sidebar/index.ts", + "src/components/ui/sidebar/sidebar.client.ts" + ], + "modified": true + }, + { + "slug": "steps", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:80f99f91316886f985ef94061509e212496c88fc561734ad882054e4d6c3a040", + "files": [ + "src/components/ui/steps/Step.astro", + "src/components/ui/steps/Steps.astro", + "src/components/ui/steps/index.ts", + "src/components/ui/steps/steps.client.ts" + ], + "modified": true + }, + { + "slug": "tabs", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:baf32af78444eb0b2825a75b2e20fcff33652ad5edfc989a0fba3546110a2f43", + "files": [ + "src/components/ui/tabs/TabItem.astro", + "src/components/ui/tabs/Tabs.astro", + "src/components/ui/tabs/TabsContent.astro", + "src/components/ui/tabs/TabsList.astro", + "src/components/ui/tabs/TabsTrigger.astro", + "src/components/ui/tabs/index.ts", + "src/components/ui/tabs/tabs.client.ts" + ], + "modified": true + }, + { + "slug": "theme-toggle", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:051c85c314e2d2cbe6ab4307a60750cdb11e91af128b74bba33690a0991ec940", + "files": [ + "src/components/ui/theme-toggle/ThemeToggle.astro", + "src/components/ui/theme-toggle/index.ts", + "src/components/ui/theme-toggle/theme-toggle.client.ts" + ], + "modified": true + }, + { + "slug": "toc", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:59f1d9169d4fe69f8e299bf0c68aa475fef4dfa91f8bd9df153221280d87d183", + "files": [ + "src/components/ui/toc/MobileTOC.astro", + "src/components/ui/toc/TOC.astro", + "src/components/ui/toc/index.ts", + "src/components/ui/toc/mobile-toc.client.ts", + "src/components/ui/toc/toc.client.ts" + ], + "modified": true + }, + { + "slug": "version-switcher", + "type": "registry:ui", + "version": null, + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:4911e594fe3326ea5a4fa3043f54589f5d0e4a3f9d447347713c98bc94035143", + "files": [ + "src/components/ui/version-switcher/README.md", + "src/components/ui/version-switcher/VersionSwitcher.astro", + "src/components/ui/version-switcher/index.ts" + ], + "modified": true + }, + { + "slug": "cn", + "type": "registry:lib", + "version": "0.18.1", + "source": "https://nimbus-docs.com/registry", + "hash": "sha256:7c54894573a1398333b41a63838db5de40ba05ad3fdb71048414baf912bb0070", + "files": [ + "src/lib/cn.ts" + ] + } + ] +} diff --git a/src/README.md b/src/README.md index cb2f9fc7c..5fbdba230 100644 --- a/src/README.md +++ b/src/README.md @@ -19,6 +19,7 @@ Mintlify-flavoured MDX build (see `src/plugins/vite-mintlify-snippets.ts` and | `pnpm run deploy` | Deploys `dist/` to the production Worker selected by `DOCS_LOCALE`. | | `pnpm run deploy:preview` | Uploads `dist/` as an aliased Worker version selected by `DOCS_PREVIEW_ALIAS`. | | `node bin/fetch-remotes.ts` | Pulls remote-repo docs (`remotes.json`) into their mount directories. | +| `pnpm exec nimbus-docs outdated` | Compares `nimbus.json` against the Nimbus registry; run before bumping `@cloudflare/nimbus-docs`. Starter-file drift stays unavailable until `templatesTag` is set in `nimbus.json`. | ## Environment variables @@ -47,6 +48,7 @@ Mintlify-flavoured MDX build (see `src/plugins/vite-mintlify-snippets.ts` and - `src/pages/[...slug].md.ts`, `src/pages/**/llms*.txt.ts`: English-only agent surfaces. Every human-language route points to the same canonical English `.md`; no generated `.mdx` or localized agent copies are emitted. The root `llms-full.txt` links to full-text, top-level-section `llms.txt` files; `src/lib/corpus.ts` recursively subdivides any corpus that reaches 24 MiB. - `src/components/compat/`: Mintlify component names on Nimbus components; `react/` shims for snippet JSX. - `bin/`: generators and measurement scripts; `worker/`: Cloudflare Worker; `wrangler.jsonc`. +- `nimbus.json`: CLI-maintained provenance of the registry components under `src/components/ui/` (slug, registry release, content hash, `modified` flag). Written by `nimbus-docs init`; `nimbus-docs add` appends to it. Starter provenance is `null` because the site was adopted, not scaffolded. - `src/generated/` (gitignored): sidebar items, import index, island wrappers. Production source topology lives only in `remotes.json`; production fetches each From 9a306dc1b6baa9f0048ef4affe84f2ce7d0f48be Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Thu, 15 Oct 2026 12:31:20 +0200 Subject: [PATCH 2/2] Upgrade Nimbus to 0.18.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bump @cloudflare/nimbus-docs 0.13.1 -> 0.18.1 (ten releases, 2026-09-07 to 2026-10-14) and @astrojs/markdown-satteri ^0.3.8 -> ^0.4.3. The newer Nimbus requires a Sätteri processor that exposes `createMdxRenderer`, which only the 0.4 line provides; without the bump `astro:config:setup` throws. Drop the local dist patch and the pnpm `satteri` override. pnpm keys the patch to the exact 0.13.1 version, and every fix it carried is upstream now: UTF-16 offset mapping, `` parsing, heading-id and math features read from the processor, and import/comment/raw-tag stripping in generated Markdown. Verified by building the placeholder, emoji and math pages unpatched. Record 0.18.1 as the reviewed upgrade baseline in nimbus.json via `nimbus-docs migrate --from 0.13.1`; 0.18 refuses to build without it. The ten required reviews are all OpenAPI or versioning features this site does not use, except explicit-markdown-processor, which the Sätteri bump satisfies. Guard `page.markdownHref` in ApiBody.astro (optional since 0.18) and keep the new root-level `_headers` and `.well-known/` output beside `__redirects` instead of nesting them under /docs: Workers static assets only honour `_headers` at the asset root, and the discovery documents are addressed at the origin root. Co-Authored-By: Claude Fable 5.1 --- astro.config.ts | 9 +- bin/postbuild.ts | 14 +- nimbus.json | 3 +- package.json | 4 +- patches/@cloudflare__nimbus-docs@0.13.1.patch | 128 ---- pnpm-lock.yaml | 609 +++--------------- pnpm-workspace.yaml | 8 - src/README.md | 2 +- src/components/ui/api-layout/ApiBody.astro | 4 +- 9 files changed, 105 insertions(+), 676 deletions(-) delete mode 100644 patches/@cloudflare__nimbus-docs@0.13.1.patch diff --git a/astro.config.ts b/astro.config.ts index 1f614acfc..47757ca5e 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -115,9 +115,12 @@ export default defineConfig({ // components, so it is disabled and the build itself is the validator. validateMdx: false, markdown: { - // Own processor so that `## Heading {#custom-id}` is honoured - // (Sätteri's headingAttributes is off by default and not exposed by - // Nimbus). Nimbus's own hast plugins must be re-added here. + // Own processor so that `## Heading {#custom-id}` is honoured and the + // URL rebaser and mermaid plugins run in a known order. Nimbus 0.18 + // exposes `markdown.features` and `markdown.hastPlugins`, so this + // override can be retired in a follow-up; while it stays, Nimbus's own + // hast plugins must be re-added here and Nimbus reads the features + // from this processor. processor: satteri({ features: SATTERI_FEATURES, hastPlugins: [nimbusTableScroll, rebaseUrls({ base: BASE, remoteMounts }), mermaidBlocks()], diff --git a/bin/postbuild.ts b/bin/postbuild.ts index 1c7c55b7f..bc6bbd1e9 100644 --- a/bin/postbuild.ts +++ b/bin/postbuild.ts @@ -3,6 +3,13 @@ // 2. generate `__redirects` next to the site, // 3. nest the site under /docs so asset paths equal request paths. // Honours DOCS_OUT_DIR like astro.config.ts. +// +// Entries that stay at the output root instead of moving under /docs: +// `__redirects` (imported by the Worker), `.assetsignore`, and the files +// Nimbus 0.17+ writes for the origin root: `_headers` (Workers static assets +// only honour it at the asset root) and `.well-known/` (agent discovery +// documents advertised at https://clickhouse.com/.well-known/...; the website +// Worker must forward those paths here for them to be reachable). import fs from "node:fs"; import path from "node:path"; import { execFileSync } from "node:child_process"; @@ -12,8 +19,9 @@ import { localeRouteName } from "../src/util/locales.ts"; const root = process.cwd(); const outDir = path.resolve(root, process.env.DOCS_OUT_DIR ?? "dist"); const nested = path.join(outDir, "docs"); +const ROOT_ENTRIES = new Set(["__redirects", ".assetsignore", "_headers", ".well-known"]); const topLevelSiteEntries = fs.existsSync(outDir) - ? fs.readdirSync(outDir).filter((name) => name !== "__redirects" && name !== ".assetsignore") + ? fs.readdirSync(outDir).filter((name) => !ROOT_ENTRIES.has(name)) : []; const alreadyNested = fs.existsSync(nested) && topLevelSiteEntries.length === 1 @@ -24,10 +32,10 @@ if (alreadyNested) { // 1. stray URL rebase execFileSync(process.execPath, [path.join(root, "bin/postbuild-rebase.ts"), outDir], { stdio: "inherit" }); - // 3. nest under /docs (everything except __redirects and .assetsignore) + // 3. nest under /docs (everything except the root entries above) fs.mkdirSync(nested, { recursive: true }); for (const name of fs.readdirSync(outDir)) { - if (name === "docs" || name === "__redirects" || name === ".assetsignore") continue; + if (name === "docs" || ROOT_ENTRIES.has(name)) continue; fs.renameSync(path.join(outDir, name), path.join(nested, name)); } // 2. redirects at the top level (imported by the Worker; not served as an asset) diff --git a/nimbus.json b/nimbus.json index bbefa59c8..42b059eb0 100644 --- a/nimbus.json +++ b/nimbus.json @@ -395,5 +395,6 @@ "src/lib/cn.ts" ] } - ] + ], + "lastReviewedNimbusVersion": "0.18.1" } diff --git a/package.json b/package.json index d49d921e6..7ee388cb8 100644 --- a/package.json +++ b/package.json @@ -28,9 +28,9 @@ "measure": "node bin/measure/page-weight.ts ${DOCS_OUT_DIR:-dist}/docs && node bin/measure/anchor-parity.ts ${DOCS_OUT_DIR:-dist}/docs && node bin/measure/base-check.ts ${DOCS_OUT_DIR:-dist}/docs && node bin/measure/url-parity.ts ${DOCS_OUT_DIR:-dist}/docs" }, "dependencies": { - "@astrojs/markdown-satteri": "^0.3.8", + "@astrojs/markdown-satteri": "^0.4.3", "@astrojs/react": "^5.0.0", - "@cloudflare/nimbus-docs": "0.13.1", + "@cloudflare/nimbus-docs": "0.18.1", "@fontsource-variable/inter": "^5.2.8", "@fontsource-variable/jetbrains-mono": "^5.2.8", "@iconify-json/fa6-brands": "^1.2.6", diff --git a/patches/@cloudflare__nimbus-docs@0.13.1.patch b/patches/@cloudflare__nimbus-docs@0.13.1.patch deleted file mode 100644 index 453a12ee7..000000000 --- a/patches/@cloudflare__nimbus-docs@0.13.1.patch +++ /dev/null @@ -1,128 +0,0 @@ -diff --git a/dist/authored-links-BwgpLqQy.js b/dist/authored-links-BwgpLqQy.js -index ad81e4ef60c1865b2cd8d6918e319780ac0e6d96..099f06dbcfb3d945c9873696f0c891ce9e53c66f 100644 ---- a/dist/authored-links-BwgpLqQy.js -+++ b/dist/authored-links-BwgpLqQy.js -@@ -35,14 +35,9 @@ function assertCanonicalDestination(destination, source, sourceId, offset) { - if (!hasCanonicalSegments(destination.split(/[?#]/u, 1)[0] ?? "")) fail("destination escapes its canonical path", source, sourceId, offset); - } - function buildOffsetMap(source) { -- const offsets = [0]; -- let index = 0; -- while (index < source.length) { -- const codePoint = source.codePointAt(index); -- index += codePoint !== void 0 && codePoint > 65535 ? 2 : 1; -- offsets.push(index); -- } -- return offsets; -+ // Satteri reports offsets in JavaScript UTF-16 code units. Mapping them as -+ // Unicode code points shifts every node after emoji and other astral text. -+ return Array.from({ length: source.length + 1 }, (_value, index) => index); - } - function nodeRange(node, offsets, source, sourceId) { - const codePointStart = node.position?.start?.offset; -@@ -131,6 +126,11 @@ function jsxRangeKey(start, end) { - } - function staticHrefOffsets(raw, node, source, sourceId, sourceStart, parsedRanges) { - if (!Array.isArray(node.attributes)) fail("missing JSX attributes", source, sourceId, sourceStart); -+ // Avoid reparsing wrapper components whose attributes cannot contain a -+ // destination. ClickHouse pages commonly nest Markdown tables and other -+ // non-TSX prose inside Tabs, which is valid MDX but cannot be reparsed as -+ // one standalone TypeScript JSX expression. -+ if (!node.attributes.some((value) => value && typeof value === "object" && value.type === "mdxJsxAttribute" && typeof value.name === "string" && isHref(node, value.name))) return []; - const key = jsxRangeKey(sourceStart, sourceStart + raw.length); - if (!parsedRanges.has(key)) { - const parsed = ts.createSourceFile("nimbus-authored-link.tsx", `const element = (${raw});`, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX); -@@ -190,7 +190,16 @@ function normalizeAuthoredLinks(source, options) { - const prefix = basePrefix(options.base); - let tree; - try { -- tree = mdxToMdast(source); -+ // ClickHouse prose uses angle-bracket variables such as -+ // ``. They are placeholders, not JSX elements. Spaces -+ // preserve every source offset used to rewrite links in the original. -+ const parseableSource = source.replace(/<[A-Z][A-Z0-9_]*>/g, (placeholder) => " ".repeat(placeholder.length)); -+ tree = mdxToMdast(parseableSource, { -+ features: { -+ headingAttributes: true, -+ math: true -+ } -+ }); - } catch (error) { - const detail = error instanceof Error ? error.message : String(error); - const location = detail.match(/^(\d+):(\d+):\s*/); -diff --git a/dist/build-markdown-CrKbE2To.js b/dist/build-markdown-CrKbE2To.js -index d44792be78b812141b40845857bb07de4a379b6e..e4752e89fbcc62a7359b535b3e81de8f9899d86e 100644 ---- a/dist/build-markdown-CrKbE2To.js -+++ b/dist/build-markdown-CrKbE2To.js -@@ -229,14 +229,7 @@ async function scanCodeBlocks(projectRoot, langAlias = {}) { - //#endregion - //#region src/_internal/build-partials.ts - function offsetMap(source) { -- const offsets = [0]; -- let index = 0; -- while (index < source.length) { -- const codePoint = source.codePointAt(index); -- index += codePoint !== void 0 && codePoint > 65535 ? 2 : 1; -- offsets.push(index); -- } -- return offsets; -+ return Array.from({ length: source.length + 1 }, (_value, index) => index); - } - function range(node, offsets, sourceId) { - const start = node.position?.start?.offset; -@@ -254,7 +247,12 @@ function walk(node, callback) { - } - function parseSource(source, sourceId) { - try { -- return mdxToMdast(source); -+ return mdxToMdast(source, { -+ features: { -+ headingAttributes: true, -+ math: true -+ } -+ }); - } catch (error) { - throw new Error(`nimbus-docs: failed to parse prepared source for ${sourceId}.`, { cause: error }); - } -@@ -562,7 +560,12 @@ var StaticExpressionParser = class { - */ - async function mergePartialHeadings(body, astroHeadings, getEntry, render, options) { - const { mdxToMdast } = await import("satteri"); -- return mergePartialHeadingsWithParser(body, astroHeadings, getEntry, render, (source) => mdxToMdast(source), options); -+ return mergePartialHeadingsWithParser(body, astroHeadings, getEntry, render, (source) => mdxToMdast(source, { -+ features: { -+ headingAttributes: true, -+ math: true -+ } -+ }), options); - } - async function mergePartialHeadingsWithParser(body, astroHeadings, getEntry, render, parse, options) { - return mergePartialHeadingsInternal(body, astroHeadings, getEntry, render, parse, options, /* @__PURE__ */ new Set()); -diff --git a/dist/discoverability-DqMhxV7J.js b/dist/discoverability-DqMhxV7J.js -index e53fcc6af5afb598c5fce02a08aa4523e3b450d3..8342beea0a67bf7c5c0bc9939058f88896daf440 100644 ---- a/dist/discoverability-DqMhxV7J.js -+++ b/dist/discoverability-DqMhxV7J.js -@@ -319,8 +319,12 @@ function applyDefaultComponentTransforms(markdown) { - out = out.replace(/]*>([\s\S]*?)<\/Tabs>/g, (_match, children) => children.replace(/]*)>([\s\S]*?)<\/TabItem>/g, (_tabMatch, rawAttrs, tabChildren) => { - return `### ${asTitle(parseAttrs(rawAttrs).label, "Option")}\n\n${cleanChildren(tabChildren)}`; - })); -- out = out.replace(/<([A-Z][A-Za-z0-9]*)\b[^>]*>([\s\S]*?)<\/\1>/g, "$2"); -- out = out.replace(/<([A-Z][A-Za-z0-9]*)\b[^>]*\/>/g, ""); -+ let previous; -+ do { -+ previous = out; -+ out = out.replace(/<([A-Z][A-Za-z0-9]*)\b[^>]*>([\s\S]*?)<\/\1>/g, "$2"); -+ out = out.replace(/<([A-Z][A-Za-z0-9]*)\b[^>]*\/>/g, ""); -+ } while (out !== previous); - return out; - } - function applyCustomComponentTransforms(markdown, componentMap, base) { -@@ -368,7 +372,7 @@ function renderEntryAsMarkdown(entry, options = {}) { - if (options.componentMap) markdown = applyCustomComponentTransforms(markdown, options.componentMap, options.base ?? "/"); - markdown = applyDefaultComponentTransforms(markdown); - markdown = protectedCode.restore(markdown); -- return markdown.replace(/^[ \t]+(- (?:\*\*|\[))/gm, "$1").replace(/^[ \t]+(\d+\. \*\*)/gm, "$1").replace(/^[ \t]+(### )/gm, "$1").replace(/^[ \t]+(```)/gm, "$1").replace(/^[ \t]+$/gm, "").replace(/\n{3,}/g, "\n\n").trim(); -+ return markdown.replace(/^import\s.+\sfrom\s+["'][^"']+["'];?\s*$/gm, "").replace(/\{\/\*[\s\S]*?\*\/\}/g, "").replace(/^[ \t]+(- (?:\*\*|\[))/gm, "$1").replace(/^[ \t]+(\d+\. \*\*)/gm, "$1").replace(/^[ \t]+(### )/gm, "$1").replace(/^[ \t]+(```)/gm, "$1").replace(/^[ \t]+$/gm, "").replace(/\n{3,}/g, "\n\n").trim(); - } - - //#endregion diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 23b2af82a..e6e0a4729 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,27 +4,19 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -overrides: - '@cloudflare/nimbus-docs>satteri': 0.10.5 - -patchedDependencies: - '@cloudflare/nimbus-docs@0.13.1': - hash: 291b76e22c5f035fd612c4f8086e9026262c2ecbe5af3de58a9603413f4838b0 - path: patches/@cloudflare__nimbus-docs@0.13.1.patch - importers: .: dependencies: '@astrojs/markdown-satteri': - specifier: ^0.3.8 - version: 0.3.8 + specifier: ^0.4.3 + version: 0.4.3 '@astrojs/react': specifier: ^5.0.0 version: 5.0.7(@types/node@24.13.3)(@types/react-dom@19.2.6(@types/react@19.2.18))(@types/react@19.2.18)(jiti@2.7.0)(lightningcss@1.33.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(yaml@2.9.0) '@cloudflare/nimbus-docs': - specifier: 0.13.1 - version: 0.13.1(patch_hash=291b76e22c5f035fd612c4f8086e9026262c2ecbe5af3de58a9603413f4838b0)(@readme/httpsnippet@11.4.0)(@scalar/openapi-parser@0.28.12)(@types/node@24.13.3)(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(esbuild@0.28.2)(jiti@2.7.0)(openapi-sampler@1.7.4)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + specifier: 0.18.1 + version: 0.18.1(@readme/httpsnippet@11.4.0)(@scalar/openapi-parser@0.28.12)(@types/node@24.13.3)(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(esbuild@0.28.2)(jiti@2.7.0)(openapi-sampler@1.7.4)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@fontsource-variable/inter': specifier: ^5.2.8 version: 5.3.0 @@ -207,12 +199,12 @@ packages: '@astrojs/internal-helpers@0.10.0': resolution: {integrity: sha512-Ry2R3VPeIN4uPCSA4xQc+e+vsJXkalKpEbDc07hV+a/o5Bs2N/s/uDcPJH/05L19DKh9tAy7e6JM3YZ6Cxfezw==} - '@astrojs/internal-helpers@0.10.4': - resolution: {integrity: sha512-nozZSy/mKYLqe4YrqbKtdOszedAfXYCtw3wZ0d+CAjz4GqQ4L9rl1ltIL5BlgwmYVinJg/RZ0MgGuWOdlyRZlA==} - '@astrojs/internal-helpers@0.11.0': resolution: {integrity: sha512-3rzxJ+xbo0+8YyqOzLziIN32wmsHdCjEVz2sGOpRxJ+Ben/KiLph4ItxBy1abEL+E8fkRzqjg0rfXmaHJGw9JA==} + '@astrojs/internal-helpers@0.12.0': + resolution: {integrity: sha512-pKPuwCDtO0L7zgmt1JGd9X4Aes1+0SX3IEBSqBNPHsScYdPMlfmed3Y7DTbXyF7E+8ylnb563o/0OzGQPOFehw==} + '@astrojs/language-server@2.16.16': resolution: {integrity: sha512-KuS17AOOqH/M5mHXPmKvtp8L+NNteARC7Xjf395+9R9dtJOBndqdStwU4V+OKzYZpgZ+hliV13knzx/oMtFl7Q==} hasBin: true @@ -225,23 +217,21 @@ packages: prettier-plugin-astro: optional: true - '@astrojs/markdown-remark@7.2.4': - resolution: {integrity: sha512-MvspGMynWKAjTe4/lTUdmBPHIFKNVLTCF6UlyWGogTGzNrTvjD+D4n48k7h8swxsEPKHK2TwxkZO7uoaCv1Pow==} - - '@astrojs/markdown-satteri@0.3.8': - resolution: {integrity: sha512-n8ItpFTCmlDsVR5+rwDmehSf+jFCYLWmZiisZNGuF7xILqYhsVeBfcha4qgS2Seq3fAc9Tm58ZVrvqFQ6RQgRQ==} - '@astrojs/markdown-satteri@0.4.1': resolution: {integrity: sha512-EniHbFNa6SQHDih7JnpPos3NWXO6hdt4raBcOosfGmlfc3gP9CI/sESA3VOf1PgJZ7SFfewlZW9Livn0JugEZg==} - '@astrojs/mdx@7.0.8': - resolution: {integrity: sha512-RNuwq2ccTSi7NX9YqlR0noaWoVdOrZuJvdfWXotAzdhMVB0b0zEMLnNU+xar7le0GwTMlTObD/QAu8jeHA/3nA==} + '@astrojs/markdown-satteri@0.4.3': + resolution: {integrity: sha512-PFbEHPnwUlLvpXd7RXrrKM+j12akF4bG+DSuNuoN+3eiwjOwp4HaPi+QQdbkBV7QEYXmzyKca50OJsmGxhNIUA==} + + '@astrojs/mdx@8.0.3': + resolution: {integrity: sha512-SmwnVrGZSohDG0B9LXiAPbR6fe9TOumli9Vw/9zo815xGTeB1T3Fqt6HEClmBsVwIKFg/ccos4TgjZAedvg7zA==} engines: {node: '>=22.12.0'} peerDependencies: - '@astrojs/markdown-satteri': ^0.3.1 - astro: ^7.0.0 + '@astrojs/markdown-remark': ^7.3.0 + '@astrojs/markdown-satteri': ^0.4.0 + astro: ^7.2.10 peerDependenciesMeta: - '@astrojs/markdown-satteri': + '@astrojs/markdown-remark': optional: true '@astrojs/prism@4.0.2': @@ -432,14 +422,14 @@ packages: resolution: {integrity: sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg==} engines: {node: '>=22.0.0'} - '@cloudflare/nimbus-docs@0.13.1': - resolution: {integrity: sha512-BqCnrdUlA69Qowi2SRR1X5oqIlB/+Yk0St7FTpPcZlUvCYzDlcuD99obpquw4Pzb5t4lJmdkuCBa4NBiZnz4iw==} + '@cloudflare/nimbus-docs@0.18.1': + resolution: {integrity: sha512-le4ZOV+r3RAYx+k3XjwpnLPpfoxwjnQbavVe+31/mg++23SgQMVVuTTHcJpNPgk1yiAW+Doj+HOP6Nc0PbpRUQ==} engines: {node: '>=22.12.0'} hasBin: true peerDependencies: '@readme/httpsnippet': '>=10.0.0' '@scalar/openapi-parser': '>=0.10.0 <1.0.0' - astro: '>=7.0.0 <7.1.0 || >=7.2.0 <8.0.0' + astro: '>=7.2.6 <8.0.0' openapi-sampler: '>=1.5.0' react: '>=19.0.0' react-dom: '>=19.0.0' @@ -870,6 +860,9 @@ packages: '@fontsource-variable/jetbrains-mono@5.3.0': resolution: {integrity: sha512-F32xpS2NsGYoQi2ADSkKTgpJj7ozajsGgDJ8woTnqjmIB+dxDIqImjl4pXZVEExu8UFZ2ndhmX18EBS/hdz3Lw==} + '@fontsource/stix-two-math@5.3.0': + resolution: {integrity: sha512-negoeozw6VSXjZMozwKRSm/dhCQT62csZcuea9I8KYqPaZq/8KbbBBrA02ZHF7AyuR5mVML/p+q0bwFuSIf2GQ==} + '@iconify-json/fa6-brands@1.2.6': resolution: {integrity: sha512-twL3X4KWcxAhbc1vz/mIDsVr+CAItk1/EIfxKUVQtpv6O4eydk5KNYqTZWdvJNHGInUgd6vKg21aWfVgb5DXEg==} @@ -1216,9 +1209,6 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@mdx-js/mdx@3.1.1': - resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} - '@mermaid-js/parser@1.2.1': resolution: {integrity: sha512-n12NohV3mrUyUL2o93IgG/ifeW9FTyeJn3zDxkhwa8MJ9Fxg3HQMlA3RiGmD/3UnJvheztkjjQAjA2T4LmUcpw==} @@ -2418,9 +2408,6 @@ packages: '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - '@types/mdx@2.0.14': - resolution: {integrity: sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg==} - '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} @@ -2646,16 +2633,6 @@ packages: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn@8.18.0: - resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} - engines: {node: '>=0.4.0'} - hasBin: true - agentkeepalive@4.6.0: resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} engines: {node: '>= 8.0.0'} @@ -2720,13 +2697,6 @@ packages: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} - array-iterate@2.0.1: - resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} - - astring@1.9.0: - resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} - hasBin: true - astro@7.3.2: resolution: {integrity: sha512-ysTcdpGP61XZpHoMRYC/CK19DQ94qkBvzXMtXEo0gEqPNkmOU/Tv++CtWmzaI4nF2Ck8RXFdiWvdlTWa2oOr9w==} engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} @@ -2819,9 +2789,6 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} - collapse-white-space@2.1.0: - resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} - colorjs.io@0.5.2: resolution: {integrity: sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==} @@ -3176,6 +3143,9 @@ packages: es-module-lexer@2.3.2: resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} + es-module-lexer@3.0.4: + resolution: {integrity: sha512-BldNY5mwkVu+cQ5Ymn3e6hB9Sx8XHx4ZevWbiUyZbfKxJxYO27Hf0wfzkxIaD5CAJMaGl3YspKELj0ff/7nCMA==} + es-object-atoms@1.1.2: resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} engines: {node: '>= 0.4'} @@ -3187,12 +3157,6 @@ packages: es-toolkit@1.52.0: resolution: {integrity: sha512-XTNEJQh1tY1ZJVcf6ayP/2n4ZPyaHlW2FWs7xvw5ddPuhUVjLD3olQVQS7kf58JbAB48iL0uL/jerTrjtV3lDA==} - esast-util-from-estree@2.0.0: - resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} - - esast-util-from-js@2.0.1: - resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - esbuild@0.28.1: resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} engines: {node: '>=18'} @@ -3211,27 +3175,9 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - estree-util-attach-comments@3.0.0: - resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} - - estree-util-build-jsx@3.0.1: - resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} - estree-util-is-identifier-name@3.0.0: resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - estree-util-scope@1.0.1: - resolution: {integrity: sha512-B0np3dcdxqILX5e9nEi5/Fr4K7gL4oYFVPV1zRa2e9wRCbQoZZNWOZFYyoInvXUPJXBXjss+QXlWLJChDEHDkA==} - - estree-util-to-js@2.0.0: - resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} - - estree-util-visit@2.0.0: - resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} @@ -3420,9 +3366,6 @@ packages: hast-util-from-parse5@8.0.3: resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} - hast-util-is-element@3.0.0: - resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} - hast-util-parse-selector@4.0.0: resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} @@ -3432,9 +3375,6 @@ packages: hast-util-sanitize@5.0.2: resolution: {integrity: sha512-3yTWghByc50aGS7JlGhk61SPenfE/p1oaFeNwkOOyrscaOkMGrcW9+Cy/QAIOBpZxP1yqDIzFMR0+Np0i0+usg==} - hast-util-to-estree@3.1.3: - resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} - hast-util-to-html@9.0.5: resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} @@ -3444,9 +3384,6 @@ packages: hast-util-to-parse5@8.0.1: resolution: {integrity: sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==} - hast-util-to-text@4.0.2: - resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} - hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} @@ -3789,10 +3726,6 @@ packages: magicast@0.5.4: resolution: {integrity: sha512-llBEhWm1SacoRwgHUoQJYtwp4PBLF4faQi5TCpIGyGs9n4y5+juI0tDgyKIfpqxckRHaHzouUEph3THklWh03w==} - markdown-extensions@2.0.0: - resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} - engines: {node: '>=16'} - markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} @@ -3813,9 +3746,6 @@ packages: md5@2.3.0: resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} - mdast-util-definitions@6.0.0: - resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} - mdast-util-find-and-replace@3.0.2: resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} @@ -3840,6 +3770,9 @@ packages: mdast-util-gfm@3.1.0: resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + mdast-util-math@3.0.0: + resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==} + mdast-util-mdx-expression@2.0.1: resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} @@ -3908,30 +3841,12 @@ packages: micromark-extension-gfm@3.0.0: resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - micromark-extension-mdx-expression@3.0.1: - resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} - - micromark-extension-mdx-jsx@3.0.2: - resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} - - micromark-extension-mdx-md@2.0.0: - resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} - - micromark-extension-mdxjs-esm@3.0.0: - resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} - - micromark-extension-mdxjs@3.0.0: - resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} - micromark-factory-destination@2.0.1: resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} micromark-factory-label@2.0.1: resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} - micromark-factory-mdx-expression@2.0.3: - resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} - micromark-factory-space@2.0.1: resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} @@ -3962,9 +3877,6 @@ packages: micromark-util-encode@2.0.1: resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} - micromark-util-events-to-acorn@2.0.3: - resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} - micromark-util-html-tag-name@2.0.1: resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} @@ -4136,9 +4048,6 @@ packages: parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} - parse-latin@7.0.0: - resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} - parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} @@ -4313,20 +4222,6 @@ packages: resolution: {integrity: sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==} engines: {node: '>= 20.19.0'} - recma-build-jsx@1.0.0: - resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} - - recma-jsx@1.0.1: - resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - recma-parse@1.0.0: - resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} - - recma-stringify@1.0.0: - resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} - redirects-in-workers@0.0.7: resolution: {integrity: sha512-RAN76DEgp3/W1IU1c+BXyccfSN38zUR/C2YCnsP2L+3uPbmFPFLXWC+vwLyvVSF1n4SgV6MNtWHaF+eZkmF3uw==} @@ -4342,12 +4237,6 @@ packages: rehype-raw@7.0.0: resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} - rehype-recma@1.0.0: - resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} - - rehype-stringify@10.0.1: - resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==} - remark-gfm@4.0.1: resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} @@ -4375,19 +4264,12 @@ packages: remark-lint-unordered-list-marker-style@4.0.1: resolution: {integrity: sha512-HMrVQC0Qbr8ktSy+1lJGRGU10qecL3T14L6s/THEQXR5Tk0wcsLLG0auNvB4r2+H+ClhVO/Vnm1TEosh1OCsfw==} - remark-mdx@3.1.1: - resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} - remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} remark-rehype@11.1.2: resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} - remark-smartypants@3.0.3: - resolution: {integrity: sha512-gCaK+ndZ0hYezlqFegHFCVh2CQemsi0Npdh1qVM9bxlUFknjkbP6VmojWhddOCrbK0PbbacmYLWfTULRiT1eWA==} - engines: {node: '>=16.0.0'} - remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} @@ -4407,18 +4289,9 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - retext-latin@4.0.0: - resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} - retext-smartypants@6.2.0: resolution: {integrity: sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==} - retext-stringify@4.0.0: - resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} - - retext@9.0.0: - resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} - reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -4527,10 +4400,6 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - 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==} @@ -4601,6 +4470,10 @@ packages: resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} engines: {node: '>=6'} + temml@0.14.0: + resolution: {integrity: sha512-tz1LW/5IZpThK8c7ZpdTSH/n56eAj+ThirLieErtKxYC3EKCIiB4sKdRUehAgH+fQmvIKqMfP3gqTLBdLpy9zw==} + engines: {node: '>=18.13.0'} + tiny-inflate@1.0.3: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} @@ -4686,18 +4559,9 @@ packages: unifont@0.7.5: resolution: {integrity: sha512-ULe/Cs+ZIsq+dcFofNkhqielCrUJnb5mr+Yc4EBM2VlL+6OZR6+cjtI2mT1bJvRBrVncqHAbLURxmPLcCXzWMg==} - unist-util-find-after@5.0.0: - resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} - 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==} - - unist-util-position-from-estree@2.0.0: - resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} - unist-util-position@5.0.0: resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} @@ -4707,9 +4571,6 @@ packages: unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - unist-util-visit-children@3.0.0: - resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==} - unist-util-visit-parents@6.0.2: resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} @@ -5127,6 +4988,11 @@ packages: engines: {node: '>= 14.6'} hasBin: true + yaml@2.9.1: + resolution: {integrity: sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==} + engines: {node: '>= 14.6'} + hasBin: true + yargs-parser@22.0.0: resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} @@ -5239,7 +5105,7 @@ snapshots: smol-toml: 1.8.0 unified: 11.0.5 - '@astrojs/internal-helpers@0.10.4': + '@astrojs/internal-helpers@0.11.0': dependencies: '@types/hast': 3.0.5 '@types/mdast': 4.0.4 @@ -5250,16 +5116,16 @@ snapshots: smol-toml: 1.8.0 unified: 11.0.5 - '@astrojs/internal-helpers@0.11.0': + '@astrojs/internal-helpers@0.12.0': dependencies: '@types/hast': 3.0.5 '@types/mdast': 4.0.4 - js-yaml: 4.3.2 picomatch: 4.0.7 retext-smartypants: 6.2.0 shiki: 4.4.3 smol-toml: 1.8.0 unified: 11.0.5 + yaml: 2.9.1 '@astrojs/language-server@2.16.16(prettier@3.9.6)(typescript@5.9.3)': dependencies: @@ -5286,63 +5152,26 @@ snapshots: transitivePeerDependencies: - typescript - '@astrojs/markdown-remark@7.2.4': - dependencies: - '@astrojs/internal-helpers': 0.10.4 - '@astrojs/prism': 4.0.2 - github-slugger: 2.0.0 - hast-util-from-html: 2.0.3 - hast-util-to-text: 4.0.2 - mdast-util-definitions: 6.0.0 - rehype-raw: 7.0.0 - rehype-stringify: 10.0.1 - remark-gfm: 4.0.1 - remark-parse: 11.0.0 - remark-rehype: 11.1.2 - remark-smartypants: 3.0.3 - unified: 11.0.5 - unist-util-remove-position: 5.0.0 - unist-util-visit: 5.1.0 - unist-util-visit-parents: 6.0.2 - vfile: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@astrojs/markdown-satteri@0.3.8': + '@astrojs/markdown-satteri@0.4.1': dependencies: - '@astrojs/internal-helpers': 0.10.4 + '@astrojs/internal-helpers': 0.11.0 '@astrojs/prism': 4.0.2 github-slugger: 2.0.0 satteri: 0.10.5 - '@astrojs/markdown-satteri@0.4.1': + '@astrojs/markdown-satteri@0.4.3': dependencies: - '@astrojs/internal-helpers': 0.11.0 + '@astrojs/internal-helpers': 0.12.0 '@astrojs/prism': 4.0.2 github-slugger: 2.0.0 satteri: 0.10.5 - '@astrojs/mdx@7.0.8(@astrojs/markdown-satteri@0.3.8)(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))': + '@astrojs/mdx@8.0.3(@astrojs/markdown-satteri@0.4.3)(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))': dependencies: - '@astrojs/internal-helpers': 0.10.4 - '@astrojs/markdown-remark': 7.2.4 - '@mdx-js/mdx': 3.1.1 - acorn: 8.18.0 + '@astrojs/internal-helpers': 0.12.0 + '@astrojs/markdown-satteri': 0.4.3 astro: 7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0) - es-module-lexer: 2.3.2 - estree-util-visit: 2.0.0 - hast-util-to-html: 9.0.5 - piccolore: 0.1.3 - rehype-raw: 7.0.0 - remark-gfm: 4.0.1 - remark-smartypants: 3.0.3 - source-map: 0.7.6 - unist-util-visit: 5.1.0 - vfile: 6.0.3 - optionalDependencies: - '@astrojs/markdown-satteri': 0.3.8 - transitivePeerDependencies: - - supports-color + es-module-lexer: 3.0.4 '@astrojs/prism@4.0.2': dependencies: @@ -5570,26 +5399,33 @@ snapshots: '@cloudflare/kv-asset-handler@0.5.0': {} - '@cloudflare/nimbus-docs@0.13.1(patch_hash=291b76e22c5f035fd612c4f8086e9026262c2ecbe5af3de58a9603413f4838b0)(@readme/httpsnippet@11.4.0)(@scalar/openapi-parser@0.28.12)(@types/node@24.13.3)(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(esbuild@0.28.2)(jiti@2.7.0)(openapi-sampler@1.7.4)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@cloudflare/nimbus-docs@0.18.1(@readme/httpsnippet@11.4.0)(@scalar/openapi-parser@0.28.12)(@types/node@24.13.3)(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(esbuild@0.28.2)(jiti@2.7.0)(openapi-sampler@1.7.4)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@astrojs/markdown-satteri': 0.3.8 - '@astrojs/mdx': 7.0.8(@astrojs/markdown-satteri@0.3.8)(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)) + '@astrojs/markdown-satteri': 0.4.3 + '@astrojs/mdx': 8.0.3(@astrojs/markdown-satteri@0.4.3)(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)) '@astrojs/sitemap': 3.7.2 '@clack/prompts': 0.9.1 + '@fontsource/stix-two-math': 5.3.0 '@iconify/tools': 5.0.14 '@iconify/types': 2.0.0 '@iconify/utils': 3.1.4 + '@scalar/json-magic': 0.12.20 '@shikijs/transformers': 4.4.3 '@shikijs/types': 4.4.3 '@vercel/detect-agent': 1.2.3 astro: 7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0) clsx: 2.1.1 + cross-spawn: 7.0.6 giget: 3.3.1 github-slugger: 2.0.0 hast-util-from-html: 2.0.3 hast-util-sanitize: 5.0.2 hast-util-to-html: 9.0.5 jsonc-parser: 3.3.1 + mdast-util-gfm: 3.1.0 + mdast-util-math: 3.0.0 + mdast-util-mdx: 3.0.0 + mdast-util-to-markdown: 2.1.2 mri: 1.2.0 picomatch: 4.0.7 remark-lint-emphasis-marker: 4.0.1 @@ -5604,6 +5440,7 @@ snapshots: semver: 7.8.5 shiki: 4.4.3 tailwind-merge: 3.6.0 + temml: 0.14.0 typescript: 5.9.3 unified: 11.0.5 vfile: 6.0.3 @@ -5616,6 +5453,7 @@ snapshots: react: 19.2.8 react-dom: 19.2.8(react@19.2.8) transitivePeerDependencies: + - '@astrojs/markdown-remark' - '@types/node' - '@vitejs/devtools' - esbuild @@ -5881,6 +5719,8 @@ snapshots: '@fontsource-variable/jetbrains-mono@5.3.0': {} + '@fontsource/stix-two-math@5.3.0': {} + '@iconify-json/fa6-brands@1.2.6': dependencies: '@iconify/types': 2.0.0 @@ -6245,36 +6085,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.6.0 - '@mdx-js/mdx@3.1.1': - dependencies: - '@types/estree': 1.0.9 - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.5 - '@types/mdx': 2.0.14 - acorn: 8.18.0 - collapse-white-space: 2.1.0 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - estree-util-scope: 1.0.1 - estree-walker: 3.0.3 - 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.18.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.6 - unified: 11.0.5 - unist-util-position-from-estree: 2.0.0 - unist-util-stringify-position: 4.0.0 - unist-util-visit: 5.1.0 - vfile: 6.0.3 - transitivePeerDependencies: - - supports-color - '@mermaid-js/parser@1.2.1': dependencies: '@chevrotain/types': 11.1.2 @@ -7343,8 +7153,6 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/mdx@2.0.14': {} - '@types/ms@2.1.0': {} '@types/nlcst@2.0.3': @@ -7587,12 +7395,6 @@ snapshots: dependencies: event-target-shim: 5.0.1 - acorn-jsx@5.3.2(acorn@8.18.0): - dependencies: - acorn: 8.18.0 - - acorn@8.18.0: {} - agentkeepalive@4.6.0: dependencies: humanize-ms: 1.2.1 @@ -7643,10 +7445,6 @@ snapshots: aria-query@5.3.2: {} - array-iterate@2.0.1: {} - - astring@1.9.0: {} - astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0): dependencies: '@astrojs/compiler-rs': 0.4.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) @@ -7808,8 +7606,6 @@ snapshots: clsx@2.1.1: {} - collapse-white-space@2.1.0: {} - colorjs.io@0.5.2: {} combined-stream@1.0.8: @@ -8160,6 +7956,8 @@ snapshots: es-module-lexer@2.3.2: {} + es-module-lexer@3.0.4: {} + es-object-atoms@1.1.2: dependencies: es-errors: 1.3.0 @@ -8173,20 +7971,6 @@ snapshots: es-toolkit@1.52.0: {} - esast-util-from-estree@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - devlop: 1.1.0 - estree-util-visit: 2.0.0 - unist-util-position-from-estree: 2.0.0 - - esast-util-from-js@2.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - acorn: 8.18.0 - esast-util-from-estree: 2.0.0 - vfile-message: 4.0.3 - esbuild@0.28.1: optionalDependencies: '@esbuild/aix-ppc64': 0.28.1 @@ -8249,39 +8033,8 @@ snapshots: escape-string-regexp@5.0.0: {} - estree-util-attach-comments@3.0.0: - dependencies: - '@types/estree': 1.0.9 - - estree-util-build-jsx@3.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - estree-walker: 3.0.3 - estree-util-is-identifier-name@3.0.0: {} - estree-util-scope@1.0.1: - dependencies: - '@types/estree': 1.0.9 - 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.6 - - estree-util-visit@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/unist': 3.0.3 - - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.9 - event-target-shim@5.0.1: {} eventemitter3@4.0.7: {} @@ -8482,10 +8235,6 @@ snapshots: vfile-location: 5.0.3 web-namespaces: 2.0.1 - hast-util-is-element@3.0.0: - dependencies: - '@types/hast': 3.0.5 - hast-util-parse-selector@4.0.0: dependencies: '@types/hast': 3.0.5 @@ -8512,27 +8261,6 @@ snapshots: '@ungap/structured-clone': 1.4.0 unist-util-position: 5.0.0 - hast-util-to-estree@3.1.3: - dependencies: - '@types/estree': 1.0.9 - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.5 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - estree-util-attach-comments: 3.0.0 - estree-util-is-identifier-name: 3.0.0 - hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.2.0 - mdast-util-mdxjs-esm: 2.0.1 - property-information: 7.2.0 - space-separated-tokens: 2.0.2 - style-to-js: 1.1.21 - unist-util-position: 5.0.0 - zwitch: 2.0.4 - transitivePeerDependencies: - - supports-color - hast-util-to-html@9.0.5: dependencies: '@types/hast': 3.0.5 @@ -8577,13 +8305,6 @@ snapshots: web-namespaces: 2.0.1 zwitch: 2.0.4 - hast-util-to-text@4.0.2: - dependencies: - '@types/hast': 3.0.5 - '@types/unist': 3.0.3 - hast-util-is-element: 3.0.0 - unist-util-find-after: 5.0.0 - hast-util-whitespace@3.0.0: dependencies: '@types/hast': 3.0.5 @@ -8841,8 +8562,6 @@ snapshots: '@babel/types': 7.29.8 source-map-js: 1.2.1 - markdown-extensions@2.0.0: {} - markdown-table@3.0.4: {} marked@15.0.12: {} @@ -8857,12 +8576,6 @@ snapshots: crypt: 0.0.2 is-buffer: 1.1.6 - mdast-util-definitions@6.0.0: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - unist-util-visit: 5.1.0 - mdast-util-find-and-replace@3.0.2: dependencies: '@types/mdast': 4.0.4 @@ -8944,6 +8657,18 @@ snapshots: transitivePeerDependencies: - supports-color + mdast-util-math@3.0.0: + dependencies: + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + longest-streak: 3.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + unist-util-remove-position: 5.0.0 + transitivePeerDependencies: + - supports-color + mdast-util-mdx-expression@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 @@ -9140,57 +8865,6 @@ snapshots: micromark-util-combine-extensions: 2.0.1 micromark-util-types: 2.0.2 - micromark-extension-mdx-expression@3.0.1: - dependencies: - '@types/estree': 1.0.9 - devlop: 1.1.0 - micromark-factory-mdx-expression: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-mdx-jsx@3.0.2: - dependencies: - '@types/estree': 1.0.9 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - micromark-factory-mdx-expression: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - vfile-message: 4.0.3 - - micromark-extension-mdx-md@2.0.0: - dependencies: - micromark-util-types: 2.0.2 - - micromark-extension-mdxjs-esm@3.0.0: - dependencies: - '@types/estree': 1.0.9 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.3 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.3 - - micromark-extension-mdxjs@3.0.0: - dependencies: - acorn: 8.18.0 - acorn-jsx: 5.3.2(acorn@8.18.0) - micromark-extension-mdx-expression: 3.0.1 - micromark-extension-mdx-jsx: 3.0.2 - micromark-extension-mdx-md: 2.0.0 - micromark-extension-mdxjs-esm: 3.0.0 - micromark-util-combine-extensions: 2.0.1 - micromark-util-types: 2.0.2 - micromark-factory-destination@2.0.1: dependencies: micromark-util-character: 2.1.1 @@ -9204,18 +8878,6 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-factory-mdx-expression@2.0.3: - dependencies: - '@types/estree': 1.0.9 - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.3 - micromark-factory-space@2.0.1: dependencies: micromark-util-character: 2.1.1 @@ -9268,16 +8930,6 @@ snapshots: micromark-util-encode@2.0.1: {} - micromark-util-events-to-acorn@2.0.3: - dependencies: - '@types/estree': 1.0.9 - '@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.3 - micromark-util-html-tag-name@2.0.1: {} micromark-util-normalize-identifier@2.0.1: @@ -9461,15 +9113,6 @@ snapshots: is-decimal: 2.0.1 is-hexadecimal: 2.0.1 - parse-latin@7.0.0: - dependencies: - '@types/nlcst': 2.0.3 - '@types/unist': 3.0.3 - nlcst-to-string: 4.0.0 - unist-util-modify-children: 4.0.0 - unist-util-visit-children: 3.0.0 - vfile: 6.0.3 - parse5@7.3.0: dependencies: entities: 6.0.1 @@ -9627,35 +9270,6 @@ snapshots: readdirp@5.1.1: {} - recma-build-jsx@1.0.0: - dependencies: - '@types/estree': 1.0.9 - estree-util-build-jsx: 3.0.1 - vfile: 6.0.3 - - recma-jsx@1.0.1(acorn@8.18.0): - dependencies: - acorn: 8.18.0 - acorn-jsx: 5.3.2(acorn@8.18.0) - estree-util-to-js: 2.0.0 - recma-parse: 1.0.0 - recma-stringify: 1.0.0 - unified: 11.0.5 - - recma-parse@1.0.0: - dependencies: - '@types/estree': 1.0.9 - 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.9 - estree-util-to-js: 2.0.0 - unified: 11.0.5 - vfile: 6.0.3 - redirects-in-workers@0.0.7: {} regex-recursion@6.0.2: @@ -9674,20 +9288,6 @@ snapshots: hast-util-raw: 9.1.0 vfile: 6.0.3 - rehype-recma@1.0.0: - dependencies: - '@types/estree': 1.0.9 - '@types/hast': 3.0.5 - hast-util-to-estree: 3.1.3 - transitivePeerDependencies: - - supports-color - - rehype-stringify@10.0.1: - dependencies: - '@types/hast': 3.0.5 - hast-util-to-html: 9.0.5 - unified: 11.0.5 - remark-gfm@4.0.1: dependencies: '@types/mdast': 4.0.4 @@ -9778,13 +9378,6 @@ snapshots: unist-util-visit-parents: 6.0.2 vfile-message: 4.0.3 - remark-mdx@3.1.1: - dependencies: - mdast-util-mdx: 3.0.0 - micromark-extension-mdxjs: 3.0.0 - transitivePeerDependencies: - - supports-color - remark-parse@11.0.0: dependencies: '@types/mdast': 4.0.4 @@ -9802,13 +9395,6 @@ snapshots: unified: 11.0.5 vfile: 6.0.3 - remark-smartypants@3.0.3: - dependencies: - retext: 9.0.0 - retext-smartypants: 6.2.0 - unified: 11.0.5 - unist-util-visit: 5.1.0 - remark-stringify@11.0.0: dependencies: '@types/mdast': 4.0.4 @@ -9825,31 +9411,12 @@ snapshots: resolve-pkg-maps@1.0.0: {} - retext-latin@4.0.0: - dependencies: - '@types/nlcst': 2.0.3 - parse-latin: 7.0.0 - unified: 11.0.5 - retext-smartypants@6.2.0: dependencies: '@types/nlcst': 2.0.3 nlcst-to-string: 4.0.0 unist-util-visit: 5.1.0 - retext-stringify@4.0.0: - dependencies: - '@types/nlcst': 2.0.3 - nlcst-to-string: 4.0.0 - unified: 11.0.5 - - retext@9.0.0: - dependencies: - '@types/nlcst': 2.0.3 - retext-latin: 4.0.0 - retext-stringify: 4.0.0 - unified: 11.0.5 - reusify@1.1.0: {} robust-predicates@3.0.3: {} @@ -10073,8 +9640,6 @@ snapshots: source-map-js@1.2.1: {} - source-map@0.7.6: {} - space-separated-tokens@2.0.2: {} stream-replace-string@2.0.0: {} @@ -10145,6 +9710,8 @@ snapshots: tapable@2.3.3: {} + temml@0.14.0: {} + tiny-inflate@1.0.3: {} tinyclip@0.1.15: {} @@ -10223,24 +9790,10 @@ snapshots: ohash: 2.0.12 undici: 8.10.1 - unist-util-find-after@5.0.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.1 - 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 - array-iterate: 2.0.1 - - unist-util-position-from-estree@2.0.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-position@5.0.0: dependencies: '@types/unist': 3.0.3 @@ -10254,10 +9807,6 @@ snapshots: dependencies: '@types/unist': 3.0.3 - unist-util-visit-children@3.0.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-visit-parents@6.0.2: dependencies: '@types/unist': 3.0.3 @@ -10564,6 +10113,8 @@ snapshots: yaml@2.9.0: {} + yaml@2.9.1: {} + yargs-parser@22.0.0: {} yargs@18.1.0: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 025eafc4f..bb377558a 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -9,11 +9,3 @@ ignoredBuiltDependencies: - esbuild - sharp - workerd - -patchedDependencies: - '@cloudflare/nimbus-docs@0.13.1': patches/@cloudflare__nimbus-docs@0.13.1.patch - -overrides: - # Nimbus 0.13 still permits Satteri 0.9, whose MDX parser cannot read the - # explicit heading IDs and math syntax used throughout ClickHouse docs. - '@cloudflare/nimbus-docs>satteri': 0.10.5 diff --git a/src/README.md b/src/README.md index 5fbdba230..e95524895 100644 --- a/src/README.md +++ b/src/README.md @@ -48,7 +48,7 @@ Mintlify-flavoured MDX build (see `src/plugins/vite-mintlify-snippets.ts` and - `src/pages/[...slug].md.ts`, `src/pages/**/llms*.txt.ts`: English-only agent surfaces. Every human-language route points to the same canonical English `.md`; no generated `.mdx` or localized agent copies are emitted. The root `llms-full.txt` links to full-text, top-level-section `llms.txt` files; `src/lib/corpus.ts` recursively subdivides any corpus that reaches 24 MiB. - `src/components/compat/`: Mintlify component names on Nimbus components; `react/` shims for snippet JSX. - `bin/`: generators and measurement scripts; `worker/`: Cloudflare Worker; `wrangler.jsonc`. -- `nimbus.json`: CLI-maintained provenance of the registry components under `src/components/ui/` (slug, registry release, content hash, `modified` flag). Written by `nimbus-docs init`; `nimbus-docs add` appends to it. Starter provenance is `null` because the site was adopted, not scaffolded. +- `nimbus.json`: CLI-maintained provenance of the registry components under `src/components/ui/` (slug, registry release, content hash, `modified` flag). Written by `nimbus-docs init`; `nimbus-docs add` appends to it. Starter provenance is `null` because the site was adopted, not scaffolded. `lastReviewedNimbusVersion` is the upgrade baseline: after bumping `@cloudflare/nimbus-docs`, run `pnpm exec nimbus-docs migrate --from ` and review its entries, or the build refuses to start. - `src/generated/` (gitignored): sidebar items, import index, island wrappers. Production source topology lives only in `remotes.json`; production fetches each diff --git a/src/components/ui/api-layout/ApiBody.astro b/src/components/ui/api-layout/ApiBody.astro index 25a8817c2..8870e7dac 100644 --- a/src/components/ui/api-layout/ApiBody.astro +++ b/src/components/ui/api-layout/ApiBody.astro @@ -32,7 +32,9 @@ interface Props { } const { page, embedded = false, authSchemes = {} } = Astro.props; -const markdownUrl = withBase(page.markdownHref, import.meta.env.BASE_URL); +// Nimbus 0.18 makes `markdownHref` optional (no Markdown twin for some +// coordinates); PageActions already accepts an undefined URL. +const markdownUrl = page.markdownHref ? withBase(page.markdownHref, import.meta.env.BASE_URL) : undefined; const detail = (v: unknown): string => JSON.stringify(v);