blume 2.0.2 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +1 -0
- package/CHANGELOG.md +113 -0
- package/README.md +1 -1
- package/dist/cli/{chunk-6k4ftwze.js → chunk-0gz36akr.js} +18 -2
- package/dist/cli/{chunk-6k4ftwze.js.map → chunk-0gz36akr.js.map} +3 -3
- package/dist/cli/{chunk-zp79m0ts.js → chunk-1n228xqb.js} +2 -2
- package/dist/cli/{chunk-ddndchfr.js → chunk-2f3ndkpw.js} +57 -29
- package/dist/cli/chunk-2f3ndkpw.js.map +14 -0
- package/dist/cli/{chunk-fsmrqk8a.js → chunk-2f7n4qzt.js} +8 -2
- package/dist/cli/{chunk-fsmrqk8a.js.map → chunk-2f7n4qzt.js.map} +3 -3
- package/dist/cli/{chunk-ppzjqwx2.js → chunk-2n4ps1b3.js} +17 -18
- package/dist/cli/{chunk-ppzjqwx2.js.map → chunk-2n4ps1b3.js.map} +3 -3
- package/dist/cli/{chunk-5r8g91qn.js → chunk-43zcf4gz.js} +398 -159
- package/dist/cli/chunk-43zcf4gz.js.map +36 -0
- package/dist/cli/chunk-4ejxbzee.js +39 -0
- package/dist/cli/chunk-4ejxbzee.js.map +10 -0
- package/dist/cli/{chunk-hr8ne106.js → chunk-4h8z9vv5.js} +296 -77
- package/dist/cli/chunk-4h8z9vv5.js.map +16 -0
- package/dist/cli/{chunk-k7pj68a8.js → chunk-5cg2rzgf.js} +18 -16
- package/dist/cli/{chunk-k7pj68a8.js.map → chunk-5cg2rzgf.js.map} +2 -2
- package/dist/cli/{chunk-h2ez8dzb.js → chunk-5ffywsmb.js} +4 -4
- package/dist/cli/{chunk-g698a744.js → chunk-5wj2qwn2.js} +5 -5
- package/dist/cli/chunk-6bm0xpgd.js +18 -0
- package/dist/cli/chunk-6bm0xpgd.js.map +10 -0
- package/dist/cli/{chunk-3yce002v.js → chunk-713mngdq.js} +15 -8
- package/dist/cli/chunk-713mngdq.js.map +14 -0
- package/dist/cli/{chunk-91ws1n6j.js → chunk-9geymqns.js} +17 -15
- package/dist/cli/{chunk-91ws1n6j.js.map → chunk-9geymqns.js.map} +2 -2
- package/dist/cli/{chunk-6dtt0zfn.js → chunk-9xr4dgee.js} +27 -18
- package/dist/cli/chunk-9xr4dgee.js.map +10 -0
- package/dist/cli/{chunk-sqw4ekg1.js → chunk-amrb6hgh.js} +2 -2
- package/dist/cli/chunk-cm89scdv.js +443 -0
- package/dist/cli/chunk-cm89scdv.js.map +11 -0
- package/dist/cli/{chunk-wdrt2k2v.js → chunk-cmtcnh9f.js} +90 -26
- package/dist/cli/chunk-cmtcnh9f.js.map +10 -0
- package/dist/cli/chunk-cy5bm0j0.js +104 -0
- package/dist/cli/chunk-cy5bm0j0.js.map +11 -0
- package/dist/cli/{chunk-7mbqtmgb.js → chunk-e7vvk5ya.js} +21 -12
- package/dist/cli/chunk-e7vvk5ya.js.map +10 -0
- package/dist/cli/{chunk-qkb5a8sa.js → chunk-g2z9x01v.js} +6 -98
- package/dist/cli/chunk-g2z9x01v.js.map +10 -0
- package/dist/cli/{chunk-273ygyr4.js → chunk-ga0pf4aj.js} +7 -7
- package/dist/cli/{chunk-273ygyr4.js.map → chunk-ga0pf4aj.js.map} +3 -3
- package/dist/cli/{chunk-h7k3nq3v.js → chunk-gp84za0h.js} +2 -2
- package/dist/cli/{chunk-hqp2ajnh.js → chunk-h2a48yhd.js} +195 -73
- package/dist/cli/chunk-h2a48yhd.js.map +36 -0
- package/dist/cli/{chunk-pbg5a4s3.js → chunk-jnwj5kjj.js} +71 -47
- package/dist/cli/chunk-jnwj5kjj.js.map +19 -0
- package/dist/cli/chunk-kwrg63tm.js +31 -0
- package/dist/cli/chunk-kwrg63tm.js.map +10 -0
- package/dist/cli/{chunk-8g8ytmgx.js → chunk-nd1821sk.js} +21 -19
- package/dist/cli/{chunk-8g8ytmgx.js.map → chunk-nd1821sk.js.map} +2 -2
- package/dist/cli/{chunk-w4bxdvsa.js → chunk-ntv4qrt7.js} +17 -15
- package/dist/cli/{chunk-w4bxdvsa.js.map → chunk-ntv4qrt7.js.map} +2 -2
- package/dist/cli/{chunk-bfwp9vp6.js → chunk-p804f3pe.js} +7 -7
- package/dist/cli/{chunk-4e9b9ra6.js → chunk-py62fewh.js} +6 -6
- package/dist/cli/{chunk-4e9b9ra6.js.map → chunk-py62fewh.js.map} +1 -1
- package/dist/cli/chunk-q3wxxq39.js +126 -0
- package/dist/cli/chunk-q3wxxq39.js.map +11 -0
- package/dist/cli/{chunk-j85scx15.js → chunk-rekqz4qg.js} +142 -46
- package/dist/cli/chunk-rekqz4qg.js.map +10 -0
- package/dist/cli/{chunk-00gs3wqs.js → chunk-ta27feev.js} +1 -1
- package/dist/cli/{chunk-v6ya5kcb.js → chunk-xkz5xbtv.js} +4031 -1132
- package/dist/cli/chunk-xkz5xbtv.js.map +213 -0
- package/dist/cli/{chunk-bbnwccaz.js → chunk-y4ykbark.js} +2 -2
- package/dist/cli/{chunk-n1yg3tj3.js → chunk-y5h4r2y0.js} +6 -6
- package/dist/cli/{chunk-n1yg3tj3.js.map → chunk-y5h4r2y0.js.map} +3 -3
- package/dist/cli/{chunk-nfcyttvj.js → chunk-yj17vs39.js} +9 -9
- package/dist/cli/{chunk-nfcyttvj.js.map → chunk-yj17vs39.js.map} +1 -1
- package/dist/cli/{chunk-7vtckvaw.js → chunk-yxmk4pec.js} +16 -14
- package/dist/cli/{chunk-7vtckvaw.js.map → chunk-yxmk4pec.js.map} +2 -2
- package/dist/cli/{chunk-gs7r695n.js → chunk-zccbjcj0.js} +22 -8
- package/dist/cli/{chunk-gs7r695n.js.map → chunk-zccbjcj0.js.map} +3 -3
- package/dist/cli/{chunk-xh43dwgw.js → chunk-zf748avv.js} +415 -225
- package/dist/cli/chunk-zf748avv.js.map +37 -0
- package/dist/cli/{chunk-d1v5rhy0.js → chunk-zhvd6adm.js} +16 -14
- package/dist/cli/{chunk-d1v5rhy0.js.map → chunk-zhvd6adm.js.map} +2 -2
- package/dist/cli/index.js +28 -20
- package/dist/cli/index.js.map +5 -5
- package/dist/types/ai/agent-surface.d.ts +8 -7
- package/dist/types/ai/ai-catalog.d.ts +7 -0
- package/dist/types/ai/ask-context.d.ts +22 -0
- package/dist/types/ai/ask.d.ts +271 -58
- package/dist/types/ai/index.d.ts +2 -2
- package/dist/types/ai/link-headers.d.ts +8 -1
- package/dist/types/ai/openapi-components.d.ts +5 -2
- package/dist/types/ai/relative-links.d.ts +9 -7
- package/dist/types/ai/site-skill.d.ts +26 -0
- package/dist/types/ai/skills.d.ts +20 -1
- package/dist/types/ai/tar.d.ts +1 -3
- package/dist/types/analytics/index.d.ts +2 -0
- package/dist/types/analytics/one-dollar-stats.d.ts +48 -0
- package/dist/types/analytics/schema.d.ts +14 -0
- package/dist/types/astro/integration.d.ts +11 -2
- package/dist/types/captcha/hcaptcha.d.ts +27 -0
- package/dist/types/captcha/index.d.ts +28 -0
- package/dist/types/captcha/schema.d.ts +29 -0
- package/dist/types/captcha/turnstile.d.ts +28 -0
- package/dist/types/components/content/api-field.d.ts +59 -0
- package/dist/types/components/content/api-page.d.ts +95 -0
- package/dist/types/components/layout/nav-utils.d.ts +26 -0
- package/dist/types/components/openapi/helpers.d.ts +137 -0
- package/dist/types/components/openapi/security.d.ts +85 -0
- package/dist/types/consent/ethyca.d.ts +48 -0
- package/dist/types/consent/index.d.ts +37 -0
- package/dist/types/consent/native.d.ts +28 -0
- package/dist/types/consent/osano.d.ts +42 -0
- package/dist/types/consent/schema.d.ts +110 -0
- package/dist/types/core/base-path.d.ts +21 -7
- package/dist/types/core/config-input.d.ts +196 -27
- package/dist/types/core/data.d.ts +49 -4
- package/dist/types/core/directive-diagnostics.d.ts +12 -0
- package/dist/types/core/footer.d.ts +8 -0
- package/dist/types/core/heading-markers.d.ts +5 -7
- package/dist/types/core/i18n-ui.d.ts +86 -0
- package/dist/types/core/i18n.d.ts +2 -0
- package/dist/types/core/includes.d.ts +8 -2
- package/dist/types/core/last-modified.d.ts +10 -0
- package/dist/types/core/localizable.d.ts +7 -0
- package/dist/types/core/meta.d.ts +8 -0
- package/dist/types/core/page-modes.d.ts +29 -0
- package/dist/types/core/redirect-patterns.d.ts +144 -0
- package/dist/types/core/related.d.ts +40 -0
- package/dist/types/core/schema.d.ts +558 -56
- package/dist/types/core/sources/lower.d.ts +29 -16
- package/dist/types/core/sources/normalize.d.ts +13 -1
- package/dist/types/core/sources/read.d.ts +5 -0
- package/dist/types/core/sources/watch.d.ts +12 -5
- package/dist/types/core/standard-schema.d.ts +5 -0
- package/dist/types/core/types.d.ts +1 -1
- package/dist/types/core/variables.d.ts +42 -0
- package/dist/types/deploy/artifacts.d.ts +6 -4
- package/dist/types/deploy/headers.d.ts +5 -0
- package/dist/types/deploy/node-headers.d.ts +13 -2
- package/dist/types/deploy/platforms/cloudflare.d.ts +5 -0
- package/dist/types/deploy/platforms/netlify.d.ts +7 -0
- package/dist/types/deploy/platforms/types.d.ts +8 -0
- package/dist/types/deploy/platforms/vercel.d.ts +6 -0
- package/dist/types/deploy/redirects.d.ts +61 -22
- package/dist/types/deploy/vercel-negotiation.d.ts +9 -0
- package/dist/types/markdown/code-title.d.ts +17 -0
- package/dist/types/markdown/directives.d.ts +62 -0
- package/dist/types/markdown/features.d.ts +24 -2
- package/dist/types/markdown/mdast.d.ts +63 -0
- package/dist/types/narration/build.d.ts +70 -0
- package/dist/types/narration/provider.d.ts +26 -0
- package/dist/types/narration/script.d.ts +154 -0
- package/dist/types/openapi/asyncapi.d.ts +4 -2
- package/dist/types/openapi/model.d.ts +12 -6
- package/dist/types/openapi/overlay.d.ts +54 -0
- package/dist/types/openapi/parse.d.ts +13 -0
- package/dist/types/openapi/references.d.ts +14 -4
- package/dist/types/ratelimit/cloudflare.d.ts +39 -0
- package/dist/types/ratelimit/index.d.ts +27 -0
- package/dist/types/ratelimit/memory.d.ts +36 -0
- package/dist/types/ratelimit/schema.d.ts +111 -0
- package/dist/types/ratelimit/upstash.d.ts +21 -0
- package/dist/types/ratelimit/wrangler.d.ts +23 -0
- package/dist/types/reference/asyncapi.d.ts +10 -10
- package/dist/types/reference/graphql.d.ts +13 -10
- package/dist/types/reference/openapi.d.ts +33 -12
- package/dist/types/reference/options.d.ts +45 -5
- package/dist/types/reference/scalar.d.ts +13 -0
- package/dist/types/reference/schema.d.ts +60 -36
- package/dist/types/search/documents.d.ts +12 -1
- package/dist/types/search/orama-index.d.ts +4 -0
- package/dist/types/seo/metatags.d.ts +20 -0
- package/docs/02-deployment.mdx +44 -6
- package/docs/03-upgrading.mdx +4 -4
- package/docs/04-migrating.mdx +1 -1
- package/docs/08-faq.mdx +1 -1
- package/docs/advanced/changelog.mdx +2 -2
- package/docs/advanced/custom-pages.mdx +3 -3
- package/docs/advanced/skills.mdx +14 -0
- package/docs/cli/audit.mdx +38 -2
- package/docs/cli/evals.mdx +3 -3
- package/docs/cli/index.mdx +1 -0
- package/docs/cli/translate.mdx +3 -3
- package/docs/cli/version.mdx +1 -1
- package/docs/configuration/analytics.mdx +22 -1
- package/docs/configuration/assistant.mdx +188 -36
- package/docs/configuration/consent.mdx +100 -0
- package/docs/configuration/customization.mdx +6 -4
- package/docs/configuration/index.mdx +63 -5
- package/docs/configuration/meta.ts +3 -0
- package/docs/configuration/narration.mdx +119 -0
- package/docs/configuration/rate-limiting.mdx +69 -0
- package/docs/configuration/search.mdx +30 -2
- package/docs/configuration/theming.mdx +3 -1
- package/docs/content/components.mdx +107 -1
- package/docs/content/frontmatter.mdx +77 -1
- package/docs/content/i18n.mdx +40 -3
- package/docs/content/includes.mdx +16 -0
- package/docs/content/index.mdx +4 -2
- package/docs/content/islands.mdx +1 -1
- package/docs/content/meta.mdx +4 -1
- package/docs/content/meta.ts +1 -0
- package/docs/content/navigation.mdx +28 -6
- package/docs/content/sources/contentful.mdx +32 -0
- package/docs/content/sources/custom.mdx +39 -0
- package/docs/content/sources/github-releases.mdx +31 -0
- package/docs/content/sources/index.mdx +91 -0
- package/docs/content/sources/meta.ts +16 -0
- package/docs/content/sources/notion.mdx +32 -0
- package/docs/content/sources/obsidian.mdx +37 -0
- package/docs/content/sources/payload.mdx +30 -0
- package/docs/content/sources/remote-mdx.mdx +40 -0
- package/docs/content/sources/sanity.mdx +29 -0
- package/docs/content/sources/strapi.mdx +31 -0
- package/docs/content/syntax.mdx +81 -2
- package/docs/content/variables.mdx +41 -0
- package/docs/content/versioning.mdx +1 -1
- package/docs/discoverability/agent-discovery.mdx +30 -3
- package/docs/discoverability/index.mdx +3 -2
- package/docs/discoverability/llms-txt.mdx +1 -1
- package/docs/discoverability/markdown.mdx +2 -2
- package/docs/discoverability/metadata.mdx +17 -0
- package/docs/discoverability/open-graph.mdx +5 -3
- package/docs/discoverability/rss.mdx +1 -1
- package/docs/references/api-pages.mdx +74 -0
- package/docs/references/asyncapi.mdx +2 -2
- package/docs/references/graphql.mdx +3 -3
- package/docs/references/meta.ts +1 -1
- package/docs/references/openapi.mdx +106 -5
- package/docs/references/scalar.mdx +3 -1
- package/package.json +36 -1
- package/skills/blume/SKILL.md +3 -0
- package/skills/blume-migrate/SKILL.md +5 -5
- package/skills/blume-migrate/references/docusaurus.md +3 -3
- package/skills/blume-migrate/references/fumadocs.md +1 -1
- package/skills/blume-migrate/references/mintlify.md +37 -19
- package/skills/blume-migrate/references/nextra.md +3 -3
- package/skills/blume-migrate/references/starlight.md +2 -1
- package/skills/blume-migrate/scripts/mintlify-codemod.mjs +67 -16
- package/skills/blume-write-skill/SKILL.md +82 -0
- package/src/ai/agent-readability.ts +4 -3
- package/src/ai/agent-surface.ts +9 -7
- package/src/ai/ai-catalog.ts +12 -5
- package/src/ai/api/handlers.ts +2 -2
- package/src/ai/api/spec.ts +2 -2
- package/src/ai/api-catalog.ts +6 -2
- package/src/ai/ask-context.ts +73 -20
- package/src/ai/ask-data.ts +6 -0
- package/src/ai/ask-tools.ts +142 -0
- package/src/ai/ask.ts +354 -76
- package/src/ai/changelog-markdown.ts +2 -2
- package/src/ai/component-markdown.ts +75 -0
- package/src/ai/cors.ts +2 -0
- package/src/ai/index.ts +12 -0
- package/src/ai/link-headers.ts +14 -5
- package/src/ai/llms.ts +24 -9
- package/src/ai/markdown.ts +2 -1
- package/src/ai/mcp/data.ts +6 -0
- package/src/ai/mcp/discovery.ts +2 -2
- package/src/ai/mcp/query.ts +2 -2
- package/src/ai/mcp/server.ts +2 -2
- package/src/ai/openapi-components.ts +31 -9
- package/src/ai/relative-links.ts +42 -26
- package/src/ai/serializers.ts +2 -1
- package/src/ai/site-skill.ts +274 -0
- package/src/ai/skills.ts +49 -3
- package/src/ai/tar.ts +139 -12
- package/src/ai/write-skill.ts +97 -0
- package/src/analytics/head.ts +4 -0
- package/src/analytics/index.ts +5 -0
- package/src/analytics/one-dollar-stats.ts +86 -0
- package/src/analytics/schema.ts +2 -0
- package/src/astro/generate.ts +133 -19
- package/src/astro/include-hmr.ts +31 -12
- package/src/astro/include-refresh.ts +19 -8
- package/src/astro/index.ts +1 -0
- package/src/astro/integration.ts +143 -14
- package/src/astro/module-types.ts +6 -0
- package/src/astro/runtime-modules.ts +28 -13
- package/src/astro/templates.ts +364 -67
- package/src/astro/variables.ts +31 -0
- package/src/audit/catalog.ts +19 -0
- package/src/audit/checks/contrast.ts +183 -0
- package/src/audit/checks/i18n.ts +2 -3
- package/src/audit/checks/indexability.ts +2 -3
- package/src/audit/checks/links.ts +13 -13
- package/src/audit/checks/sitemap.ts +2 -3
- package/src/audit/graph.ts +3 -1
- package/src/audit/redirects.ts +46 -15
- package/src/audit/run.ts +14 -9
- package/src/audit/snapshot.ts +5 -0
- package/src/audit/types.ts +2 -1
- package/src/blume-modules.d.ts +7 -0
- package/src/captcha/client.ts +152 -0
- package/src/captcha/hcaptcha.ts +36 -0
- package/src/captcha/index.ts +28 -0
- package/src/captcha/schema.ts +32 -0
- package/src/captcha/turnstile.ts +38 -0
- package/src/captcha/verify.ts +71 -0
- package/src/cli/args.ts +32 -0
- package/src/cli/command-meta.ts +5 -0
- package/src/cli/commands/audit.ts +4 -1
- package/src/cli/commands/doctor.ts +25 -17
- package/src/cli/commands/eval.ts +19 -11
- package/src/cli/commands/skill.ts +96 -0
- package/src/cli/commands/translate.ts +9 -12
- package/src/cli/commands/validate.ts +3 -1
- package/src/cli/dev-lock.ts +157 -37
- package/src/cli/index.ts +5 -0
- package/src/cli/report-format.ts +11 -6
- package/src/cli/required-secrets.ts +71 -29
- package/src/components/BlumePage.astro +2 -0
- package/src/components/colors.ts +19 -0
- package/src/components/content/ApiEndpoint.astro +18 -0
- package/src/components/content/ApiField.astro +79 -0
- package/src/components/content/ApiPlayground.astro +62 -0
- package/src/components/content/ApiRail.astro +19 -0
- package/src/components/content/Badge.astro +5 -3
- package/src/components/content/Color.astro +1 -0
- package/src/components/content/Component.astro +2 -2
- package/src/components/content/FileTree.astro +1 -0
- package/src/components/content/GithubInfo.astro +1 -0
- package/src/components/content/Panel.astro +1 -0
- package/src/components/content/ParamField.astro +25 -0
- package/src/components/content/RequestExample.astro +17 -0
- package/src/components/content/ResponseExample.astro +17 -0
- package/src/components/content/ResponseField.astro +32 -0
- package/src/components/content/Step.astro +1 -0
- package/src/components/content/Tab.astro +0 -1
- package/src/components/content/Tabs.astro +4 -0
- package/src/components/content/Tile.astro +1 -0
- package/src/components/content/Tooltip.astro +1 -0
- package/src/components/content/Tree.astro +1 -0
- package/src/components/content/TypeTable.astro +4 -1
- package/src/components/content/View.astro +21 -0
- package/src/components/content/ViewSwitcher.astro +168 -0
- package/src/components/content/api-field.ts +100 -0
- package/src/components/content/api-page.ts +224 -0
- package/src/components/content/badge-color.ts +5 -2
- package/src/components/content/base-href.ts +13 -36
- package/src/components/content/view-switcher.ts +71 -0
- package/src/components/index.ts +2 -0
- package/src/components/islands/Assistant.astro +10 -1
- package/src/components/islands/assistant.tsx +125 -18
- package/src/components/islands/base-path.ts +47 -10
- package/src/components/islands/code-question.ts +62 -0
- package/src/components/islands/hooks.ts +145 -40
- package/src/components/islands/support-link.ts +68 -0
- package/src/components/islands/webmcp.ts +4 -2
- package/src/components/layout/Analytics.astro +11 -2
- package/src/components/layout/Banner.astro +14 -10
- package/src/components/layout/Breadcrumbs.astro +11 -4
- package/src/components/layout/ConsentBanner.astro +62 -0
- package/src/components/layout/ConsentHead.astro +38 -0
- package/src/components/layout/Directory.astro +94 -0
- package/src/components/layout/DiscoveryLinks.astro +9 -5
- package/src/components/layout/DrawerSwitchers.astro +51 -0
- package/src/components/layout/Empty.astro +2 -2
- package/src/components/layout/Header.astro +124 -82
- package/src/components/layout/LanguageSwitcher.astro +50 -17
- package/src/components/layout/NarrationPlayer.astro +1085 -0
- package/src/components/layout/NavSelector.astro +35 -9
- package/src/components/layout/NavTabMenu.astro +3 -3
- package/src/components/layout/NavTree.astro +16 -6
- package/src/components/layout/PageActions.astro +4 -3
- package/src/components/layout/PageFeedback.astro +54 -49
- package/src/components/layout/PageLayout.astro +78 -9
- package/src/components/layout/Pagination.astro +3 -3
- package/src/components/layout/ReferenceLayout.astro +17 -6
- package/src/components/layout/RelatedPages.astro +42 -0
- package/src/components/layout/RootLayout.astro +313 -50
- package/src/components/layout/Search.astro +64 -30
- package/src/components/layout/SiteFooter.astro +124 -0
- package/src/components/layout/SiteMetatags.astro +16 -0
- package/src/components/layout/VersionBanner.astro +2 -2
- package/src/components/layout/analytics-client.ts +12 -0
- package/src/components/layout/consent/native.ts +79 -0
- package/src/components/layout/consent/types.ts +37 -0
- package/src/components/layout/footer-links.ts +53 -0
- package/src/components/layout/footer-socials.ts +87 -0
- package/src/components/layout/locale-redirect.ts +107 -0
- package/src/components/layout/nav-utils.ts +83 -0
- package/src/components/layout/page-feedback.ts +96 -0
- package/src/components/layout/search/analytics.ts +98 -0
- package/src/components/layout/search/flexsearch.ts +17 -5
- package/src/components/layout/search/orama-cloud.ts +26 -14
- package/src/components/layout/search/types.ts +20 -0
- package/src/components/layout/search/typesense.ts +5 -1
- package/src/components/layout/toc-active.ts +41 -0
- package/src/components/layout/toc-element.ts +8 -14
- package/src/components/openapi/ApiTagOperations.astro +2 -2
- package/src/components/openapi/AsyncApiOperation.astro +7 -4
- package/src/components/openapi/GraphqlChip.astro +2 -2
- package/src/components/openapi/Operation.astro +163 -13
- package/src/components/openapi/Playground.astro +4 -4
- package/src/components/openapi/RequestBody.astro +6 -4
- package/src/components/openapi/RequestPanel.astro +63 -8
- package/src/components/openapi/Responses.astro +6 -4
- package/src/components/openapi/SchemaTable.astro +7 -0
- package/src/components/openapi/async-snippets.ts +4 -4
- package/src/components/openapi/async.ts +38 -6
- package/src/components/openapi/code-samples.ts +97 -0
- package/src/components/openapi/helpers.ts +19 -9
- package/src/components/openapi/message-composer.ts +6 -1
- package/src/components/openapi/message.ts +17 -2
- package/src/components/openapi/operation-model.ts +81 -11
- package/src/components/openapi/panel.ts +4 -2
- package/src/components/openapi/param-style.ts +181 -0
- package/src/components/openapi/playground-client.ts +73 -16
- package/src/components/openapi/request.ts +190 -26
- package/src/components/openapi/schema-tree.ts +30 -24
- package/src/components/openapi/security.ts +6 -3
- package/src/components/openapi/snippets.ts +953 -13
- package/src/components/openapi/ws-client.ts +18 -2
- package/src/components/props.ts +6 -0
- package/src/consent/client.ts +95 -0
- package/src/consent/clients.ts +19 -0
- package/src/consent/ethyca.ts +71 -0
- package/src/consent/head.ts +24 -0
- package/src/consent/index.ts +37 -0
- package/src/consent/init.ts +29 -0
- package/src/consent/native.ts +36 -0
- package/src/consent/osano.ts +59 -0
- package/src/consent/schema.ts +30 -0
- package/src/core/base-path.ts +62 -16
- package/src/core/builtin-tags.ts +5 -0
- package/src/core/client-address.ts +19 -0
- package/src/core/config-input.ts +203 -27
- package/src/core/data.ts +44 -4
- package/src/core/diagnostics.ts +5 -2
- package/src/core/directive-diagnostics.ts +99 -0
- package/src/core/footer.ts +26 -0
- package/src/core/frontmatter.ts +21 -18
- package/src/core/graph.ts +39 -36
- package/src/core/heading-markers.ts +5 -18
- package/src/core/i18n-ui.ts +82 -2
- package/src/core/i18n.ts +31 -3
- package/src/core/includes.ts +20 -3
- package/src/core/last-modified.ts +25 -3
- package/src/core/links.ts +16 -2
- package/src/core/locale-links.ts +5 -1
- package/src/core/localizable.ts +26 -0
- package/src/core/meta.ts +33 -19
- package/src/core/navigation.ts +71 -20
- package/src/core/page-modes.ts +56 -0
- package/src/core/project-graph.ts +138 -10
- package/src/core/redirect-patterns.ts +491 -0
- package/src/core/related.ts +131 -0
- package/src/core/schema.ts +342 -68
- package/src/core/sources/contentful-rich-text.ts +27 -20
- package/src/core/sources/filesystem.ts +20 -2
- package/src/core/sources/github-releases.ts +25 -6
- package/src/core/sources/lexical.ts +23 -18
- package/src/core/sources/lower.ts +201 -34
- package/src/core/sources/mdx-remote.ts +51 -16
- package/src/core/sources/normalize.ts +327 -91
- package/src/core/sources/notion.ts +52 -25
- package/src/core/sources/obsidian.ts +23 -6
- package/src/core/sources/portable-text.ts +38 -21
- package/src/core/sources/read.ts +8 -3
- package/src/core/sources/strapi-blocks.ts +20 -16
- package/src/core/sources/watch.ts +20 -7
- package/src/core/standard-schema.ts +10 -6
- package/src/core/types.ts +1 -1
- package/src/core/ui-packs/ar.ts +43 -0
- package/src/core/ui-packs/bg.ts +45 -0
- package/src/core/ui-packs/bn.ts +43 -0
- package/src/core/ui-packs/ca.ts +46 -0
- package/src/core/ui-packs/cs.ts +44 -0
- package/src/core/ui-packs/da.ts +45 -0
- package/src/core/ui-packs/de.ts +46 -0
- package/src/core/ui-packs/el.ts +45 -0
- package/src/core/ui-packs/es.ts +46 -0
- package/src/core/ui-packs/fa.ts +45 -0
- package/src/core/ui-packs/fi.ts +45 -0
- package/src/core/ui-packs/fr.ts +46 -0
- package/src/core/ui-packs/he.ts +43 -0
- package/src/core/ui-packs/hi.ts +44 -0
- package/src/core/ui-packs/hr.ts +45 -0
- package/src/core/ui-packs/hu.ts +44 -0
- package/src/core/ui-packs/id.ts +45 -0
- package/src/core/ui-packs/it.ts +45 -0
- package/src/core/ui-packs/ja.ts +45 -0
- package/src/core/ui-packs/ko.ts +44 -0
- package/src/core/ui-packs/nl.ts +46 -0
- package/src/core/ui-packs/no.ts +44 -0
- package/src/core/ui-packs/pl.ts +45 -0
- package/src/core/ui-packs/pt-br.ts +46 -0
- package/src/core/ui-packs/pt.ts +45 -0
- package/src/core/ui-packs/ro.ts +45 -0
- package/src/core/ui-packs/ru.ts +45 -0
- package/src/core/ui-packs/sk.ts +44 -0
- package/src/core/ui-packs/sr.ts +45 -0
- package/src/core/ui-packs/sv.ts +44 -0
- package/src/core/ui-packs/th.ts +43 -0
- package/src/core/ui-packs/tr.ts +45 -0
- package/src/core/ui-packs/uk.ts +45 -0
- package/src/core/ui-packs/vi.ts +45 -0
- package/src/core/ui-packs/zh-tw.ts +43 -0
- package/src/core/ui-packs/zh.ts +43 -0
- package/src/core/variables.ts +103 -0
- package/src/core/version-cut.ts +52 -15
- package/src/deploy/artifacts.ts +104 -14
- package/src/deploy/cloudflare-negotiation.ts +39 -17
- package/src/deploy/headers.ts +10 -5
- package/src/deploy/node-headers.ts +64 -10
- package/src/deploy/platforms/cloudflare.ts +44 -3
- package/src/deploy/platforms/netlify.ts +34 -1
- package/src/deploy/platforms/node.ts +1 -0
- package/src/deploy/platforms/static.ts +1 -0
- package/src/deploy/platforms/types.ts +8 -0
- package/src/deploy/platforms/vercel.ts +38 -2
- package/src/deploy/redirects.ts +139 -36
- package/src/deploy/robots.ts +2 -2
- package/src/deploy/rss.ts +4 -3
- package/src/deploy/sitemap.ts +7 -5
- package/src/deploy/vercel-negotiation.ts +36 -0
- package/src/markdown/api-rail.ts +259 -0
- package/src/markdown/base-links.ts +34 -36
- package/src/markdown/code-title.ts +35 -9
- package/src/markdown/directives.ts +242 -36
- package/src/markdown/features.ts +20 -2
- package/src/markdown/fence-meta.ts +2 -0
- package/src/markdown/include.ts +11 -1
- package/src/markdown/index.ts +35 -11
- package/src/markdown/math.ts +4 -4
- package/src/markdown/mdast.ts +5 -2
- package/src/markdown/relative-links.ts +12 -4
- package/src/markdown/variables.ts +56 -0
- package/src/markdown/views.ts +82 -0
- package/src/narration/build.ts +412 -0
- package/src/narration/player.ts +249 -0
- package/src/narration/provider.ts +29 -0
- package/src/narration/script.ts +592 -0
- package/src/og/card.ts +136 -11
- package/src/og/derive.ts +41 -31
- package/src/og/index.ts +1 -0
- package/src/openapi/asyncapi.ts +4 -2
- package/src/openapi/model.ts +77 -36
- package/src/openapi/overlay.ts +256 -0
- package/src/openapi/parse.ts +55 -2
- package/src/openapi/proxy.ts +63 -10
- package/src/openapi/references.ts +21 -5
- package/src/openapi/render-mdx.ts +46 -3
- package/src/openapi/scalar.ts +40 -6
- package/src/openapi/source.ts +1 -1
- package/src/ratelimit/cloudflare.ts +54 -0
- package/src/ratelimit/index.ts +30 -0
- package/src/ratelimit/memory.ts +45 -0
- package/src/ratelimit/runtime.ts +229 -0
- package/src/ratelimit/schema.ts +28 -0
- package/src/ratelimit/upstash.ts +30 -0
- package/src/ratelimit/wrangler.ts +70 -0
- package/src/reference/asyncapi.ts +2 -2
- package/src/reference/graphql.ts +5 -2
- package/src/reference/openapi.ts +21 -7
- package/src/reference/options.ts +51 -7
- package/src/reference/scalar.ts +33 -8
- package/src/registry/eject.ts +201 -28
- package/src/registry/registry.ts +7 -0
- package/src/search/adapters/version-scope.ts +30 -0
- package/src/search/documents.ts +93 -28
- package/src/search/orama-index.ts +28 -3
- package/src/search/pagefind-ranking.ts +39 -0
- package/src/search/popular.ts +2 -1
- package/src/search/sync/algolia.ts +15 -4
- package/src/search/sync/orama-cloud.ts +3 -0
- package/src/search/sync/typesense.ts +5 -0
- package/src/seo/jsonld.ts +7 -3
- package/src/seo/metatags.ts +67 -0
- package/src/theme/chrome-icons.ts +1 -0
- package/src/theme/color.ts +500 -0
- package/src/theme/entry.ts +56 -3
- package/src/theme/palette.ts +121 -45
- package/src/translate/meta.ts +68 -24
- package/src/translate/prompts.ts +1 -0
- package/src/translate/run.ts +3 -3
- package/src/translate/validate.ts +12 -3
- package/src/translate/work-list.ts +56 -17
- package/src/upgrade/upgrade.ts +4 -171
- package/dist/cli/chunk-3yce002v.js.map +0 -14
- package/dist/cli/chunk-5r8g91qn.js.map +0 -34
- package/dist/cli/chunk-6dtt0zfn.js.map +0 -10
- package/dist/cli/chunk-7mbqtmgb.js.map +0 -10
- package/dist/cli/chunk-ddndchfr.js.map +0 -14
- package/dist/cli/chunk-esh98wmb.js +0 -23
- package/dist/cli/chunk-esh98wmb.js.map +0 -10
- package/dist/cli/chunk-hqp2ajnh.js.map +0 -35
- package/dist/cli/chunk-hr8ne106.js.map +0 -13
- package/dist/cli/chunk-j85scx15.js.map +0 -10
- package/dist/cli/chunk-mqc662a6.js +0 -75
- package/dist/cli/chunk-mqc662a6.js.map +0 -11
- package/dist/cli/chunk-pbg5a4s3.js.map +0 -19
- package/dist/cli/chunk-qkb5a8sa.js.map +0 -10
- package/dist/cli/chunk-v6ya5kcb.js.map +0 -189
- package/dist/cli/chunk-wdrt2k2v.js.map +0 -10
- package/dist/cli/chunk-xh43dwgw.js.map +0 -36
- package/docs/content/sources.mdx +0 -338
- /package/dist/cli/{chunk-zp79m0ts.js.map → chunk-1n228xqb.js.map} +0 -0
- /package/dist/cli/{chunk-h2ez8dzb.js.map → chunk-5ffywsmb.js.map} +0 -0
- /package/dist/cli/{chunk-g698a744.js.map → chunk-5wj2qwn2.js.map} +0 -0
- /package/dist/cli/{chunk-sqw4ekg1.js.map → chunk-amrb6hgh.js.map} +0 -0
- /package/dist/cli/{chunk-h7k3nq3v.js.map → chunk-gp84za0h.js.map} +0 -0
- /package/dist/cli/{chunk-bfwp9vp6.js.map → chunk-p804f3pe.js.map} +0 -0
- /package/dist/cli/{chunk-00gs3wqs.js.map → chunk-ta27feev.js.map} +0 -0
- /package/dist/cli/{chunk-bbnwccaz.js.map → chunk-y4ykbark.js.map} +0 -0
|
@@ -26,7 +26,7 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
|
|
|
26
26
|
seoDescriptionSuffix: z.ZodDefault<z.ZodBoolean>;
|
|
27
27
|
spec: z.ZodString;
|
|
28
28
|
}, z.core.$strict>>>;
|
|
29
|
-
codeSamples: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
29
|
+
codeSamples: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodString>]>>;
|
|
30
30
|
playground: z.ZodPipe<z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
31
31
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
32
32
|
proxy: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
|
|
@@ -50,14 +50,14 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
|
|
|
50
50
|
label?: string | undefined;
|
|
51
51
|
route?: string | undefined;
|
|
52
52
|
}[];
|
|
53
|
-
codeSamples: string[];
|
|
53
|
+
codeSamples: false | string[];
|
|
54
54
|
playground: {
|
|
55
55
|
enabled: boolean;
|
|
56
56
|
proxy: string | boolean;
|
|
57
57
|
};
|
|
58
58
|
route: string;
|
|
59
59
|
spec?: string | undefined;
|
|
60
|
-
}, "spec">, {
|
|
60
|
+
}, "spec" | "overlays">, {
|
|
61
61
|
expandSchemas: boolean;
|
|
62
62
|
sources: {
|
|
63
63
|
includeInLlms: boolean;
|
|
@@ -68,7 +68,7 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
|
|
|
68
68
|
label?: string | undefined;
|
|
69
69
|
route?: string | undefined;
|
|
70
70
|
}[];
|
|
71
|
-
codeSamples: string[];
|
|
71
|
+
codeSamples: false | string[];
|
|
72
72
|
playground: {
|
|
73
73
|
enabled: boolean;
|
|
74
74
|
proxy: string | boolean;
|
|
@@ -92,7 +92,7 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
|
|
|
92
92
|
spec: z.ZodString;
|
|
93
93
|
endpoint: z.ZodOptional<z.ZodString>;
|
|
94
94
|
}, z.core.$strict>>>;
|
|
95
|
-
codeSamples: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
95
|
+
codeSamples: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodString>]>>;
|
|
96
96
|
playground: z.ZodPipe<z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
97
97
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
98
98
|
proxy: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
|
|
@@ -116,7 +116,7 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
|
|
|
116
116
|
route?: string | undefined;
|
|
117
117
|
endpoint?: string | undefined;
|
|
118
118
|
}[];
|
|
119
|
-
codeSamples: string[];
|
|
119
|
+
codeSamples: false | string[];
|
|
120
120
|
playground: {
|
|
121
121
|
enabled: boolean;
|
|
122
122
|
proxy: string | boolean;
|
|
@@ -124,7 +124,7 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
|
|
|
124
124
|
route: string;
|
|
125
125
|
endpoint?: string | undefined;
|
|
126
126
|
spec?: string | undefined;
|
|
127
|
-
}, "spec">, {
|
|
127
|
+
}, "spec" | "overlays">, {
|
|
128
128
|
sources: {
|
|
129
129
|
includeInLlms: boolean;
|
|
130
130
|
includeInSearch: boolean;
|
|
@@ -135,7 +135,7 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
|
|
|
135
135
|
route?: string | undefined;
|
|
136
136
|
endpoint?: string | undefined;
|
|
137
137
|
}[];
|
|
138
|
-
codeSamples: string[];
|
|
138
|
+
codeSamples: false | string[];
|
|
139
139
|
playground: {
|
|
140
140
|
enabled: boolean;
|
|
141
141
|
proxy: string | boolean;
|
|
@@ -150,6 +150,7 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
|
|
|
150
150
|
kind: z.ZodLiteral<"openapi">;
|
|
151
151
|
options: z.ZodPipe<z.ZodObject<{
|
|
152
152
|
expandSchemas: z.ZodDefault<z.ZodBoolean>;
|
|
153
|
+
overlays: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
153
154
|
sources: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
154
155
|
includeInLlms: z.ZodDefault<z.ZodBoolean>;
|
|
155
156
|
includeInSearch: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -158,8 +159,9 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
|
|
|
158
159
|
route: z.ZodOptional<z.ZodString>;
|
|
159
160
|
seoDescriptionSuffix: z.ZodDefault<z.ZodBoolean>;
|
|
160
161
|
spec: z.ZodString;
|
|
162
|
+
overlays: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
161
163
|
}, z.core.$strict>>>;
|
|
162
|
-
codeSamples: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
164
|
+
codeSamples: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodString>]>>;
|
|
163
165
|
playground: z.ZodPipe<z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
164
166
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
165
167
|
proxy: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
|
|
@@ -180,17 +182,19 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
|
|
|
180
182
|
noindex: boolean;
|
|
181
183
|
seoDescriptionSuffix: boolean;
|
|
182
184
|
spec: string;
|
|
185
|
+
overlays: string[];
|
|
183
186
|
label?: string | undefined;
|
|
184
187
|
route?: string | undefined;
|
|
185
188
|
}[];
|
|
186
|
-
codeSamples: string[];
|
|
189
|
+
codeSamples: false | string[];
|
|
187
190
|
playground: {
|
|
188
191
|
enabled: boolean;
|
|
189
192
|
proxy: string | boolean;
|
|
190
193
|
};
|
|
191
194
|
route: string;
|
|
195
|
+
overlays?: string[] | undefined;
|
|
192
196
|
spec?: string | undefined;
|
|
193
|
-
}, "spec">, {
|
|
197
|
+
}, "spec" | "overlays">, {
|
|
194
198
|
expandSchemas: boolean;
|
|
195
199
|
sources: {
|
|
196
200
|
includeInLlms: boolean;
|
|
@@ -198,15 +202,17 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
|
|
|
198
202
|
noindex: boolean;
|
|
199
203
|
seoDescriptionSuffix: boolean;
|
|
200
204
|
spec: string;
|
|
205
|
+
overlays: string[];
|
|
201
206
|
label?: string | undefined;
|
|
202
207
|
route?: string | undefined;
|
|
203
208
|
}[];
|
|
204
|
-
codeSamples: string[];
|
|
209
|
+
codeSamples: false | string[];
|
|
205
210
|
playground: {
|
|
206
211
|
enabled: boolean;
|
|
207
212
|
proxy: string | boolean;
|
|
208
213
|
};
|
|
209
214
|
route: string;
|
|
215
|
+
overlays?: string[] | undefined;
|
|
210
216
|
spec?: string | undefined;
|
|
211
217
|
}>>;
|
|
212
218
|
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
@@ -214,10 +220,12 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
|
|
|
214
220
|
}, z.core.$strict>, z.ZodObject<{
|
|
215
221
|
kind: z.ZodLiteral<"scalar">;
|
|
216
222
|
options: z.ZodPipe<z.ZodObject<{
|
|
223
|
+
overlays: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
217
224
|
route: z.ZodDefault<z.ZodString>;
|
|
218
225
|
sources: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
219
226
|
label: z.ZodOptional<z.ZodString>;
|
|
220
227
|
noindex: z.ZodDefault<z.ZodBoolean>;
|
|
228
|
+
overlays: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
221
229
|
route: z.ZodOptional<z.ZodString>;
|
|
222
230
|
spec: z.ZodString;
|
|
223
231
|
}, z.core.$strict>>>;
|
|
@@ -228,10 +236,12 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
|
|
|
228
236
|
route: string;
|
|
229
237
|
sources: {
|
|
230
238
|
noindex: boolean;
|
|
239
|
+
overlays: string[];
|
|
231
240
|
spec: string;
|
|
232
241
|
label?: string | undefined;
|
|
233
242
|
route?: string | undefined;
|
|
234
243
|
}[];
|
|
244
|
+
overlays?: string[] | undefined;
|
|
235
245
|
spec?: string | undefined;
|
|
236
246
|
theme?: string | undefined;
|
|
237
247
|
}>>;
|
|
@@ -255,14 +265,14 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
|
|
|
255
265
|
label?: string | undefined;
|
|
256
266
|
route?: string | undefined;
|
|
257
267
|
}[];
|
|
258
|
-
codeSamples: string[];
|
|
268
|
+
codeSamples: false | string[];
|
|
259
269
|
playground: {
|
|
260
270
|
enabled: boolean;
|
|
261
271
|
proxy: string | boolean;
|
|
262
272
|
};
|
|
263
273
|
route: string;
|
|
264
274
|
spec?: string | undefined;
|
|
265
|
-
}, "spec">;
|
|
275
|
+
}, "spec" | "overlays">;
|
|
266
276
|
requiredSecrets: string[];
|
|
267
277
|
runtimeDeps: string[];
|
|
268
278
|
} | {
|
|
@@ -278,7 +288,7 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
|
|
|
278
288
|
route?: string | undefined;
|
|
279
289
|
endpoint?: string | undefined;
|
|
280
290
|
}[];
|
|
281
|
-
codeSamples: string[];
|
|
291
|
+
codeSamples: false | string[];
|
|
282
292
|
playground: {
|
|
283
293
|
enabled: boolean;
|
|
284
294
|
proxy: string | boolean;
|
|
@@ -286,7 +296,7 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
|
|
|
286
296
|
route: string;
|
|
287
297
|
endpoint?: string | undefined;
|
|
288
298
|
spec?: string | undefined;
|
|
289
|
-
}, "spec">;
|
|
299
|
+
}, "spec" | "overlays">;
|
|
290
300
|
requiredSecrets: string[];
|
|
291
301
|
runtimeDeps: string[];
|
|
292
302
|
} | {
|
|
@@ -299,17 +309,19 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
|
|
|
299
309
|
noindex: boolean;
|
|
300
310
|
seoDescriptionSuffix: boolean;
|
|
301
311
|
spec: string;
|
|
312
|
+
overlays: string[];
|
|
302
313
|
label?: string | undefined;
|
|
303
314
|
route?: string | undefined;
|
|
304
315
|
}[];
|
|
305
|
-
codeSamples: string[];
|
|
316
|
+
codeSamples: false | string[];
|
|
306
317
|
playground: {
|
|
307
318
|
enabled: boolean;
|
|
308
319
|
proxy: string | boolean;
|
|
309
320
|
};
|
|
310
321
|
route: string;
|
|
322
|
+
overlays?: string[] | undefined;
|
|
311
323
|
spec?: string | undefined;
|
|
312
|
-
}, "spec">;
|
|
324
|
+
}, "spec" | "overlays">;
|
|
313
325
|
requiredSecrets: string[];
|
|
314
326
|
runtimeDeps: string[];
|
|
315
327
|
}>>;
|
|
@@ -331,7 +343,7 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
|
|
|
331
343
|
seoDescriptionSuffix: z.ZodDefault<z.ZodBoolean>;
|
|
332
344
|
spec: z.ZodString;
|
|
333
345
|
}, z.core.$strict>>>;
|
|
334
|
-
codeSamples: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
346
|
+
codeSamples: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodString>]>>;
|
|
335
347
|
playground: z.ZodPipe<z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
336
348
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
337
349
|
proxy: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
|
|
@@ -355,14 +367,14 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
|
|
|
355
367
|
label?: string | undefined;
|
|
356
368
|
route?: string | undefined;
|
|
357
369
|
}[];
|
|
358
|
-
codeSamples: string[];
|
|
370
|
+
codeSamples: false | string[];
|
|
359
371
|
playground: {
|
|
360
372
|
enabled: boolean;
|
|
361
373
|
proxy: string | boolean;
|
|
362
374
|
};
|
|
363
375
|
route: string;
|
|
364
376
|
spec?: string | undefined;
|
|
365
|
-
}, "spec">, {
|
|
377
|
+
}, "spec" | "overlays">, {
|
|
366
378
|
expandSchemas: boolean;
|
|
367
379
|
sources: {
|
|
368
380
|
includeInLlms: boolean;
|
|
@@ -373,7 +385,7 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
|
|
|
373
385
|
label?: string | undefined;
|
|
374
386
|
route?: string | undefined;
|
|
375
387
|
}[];
|
|
376
|
-
codeSamples: string[];
|
|
388
|
+
codeSamples: false | string[];
|
|
377
389
|
playground: {
|
|
378
390
|
enabled: boolean;
|
|
379
391
|
proxy: string | boolean;
|
|
@@ -397,7 +409,7 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
|
|
|
397
409
|
spec: z.ZodString;
|
|
398
410
|
endpoint: z.ZodOptional<z.ZodString>;
|
|
399
411
|
}, z.core.$strict>>>;
|
|
400
|
-
codeSamples: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
412
|
+
codeSamples: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodString>]>>;
|
|
401
413
|
playground: z.ZodPipe<z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
402
414
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
403
415
|
proxy: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
|
|
@@ -421,7 +433,7 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
|
|
|
421
433
|
route?: string | undefined;
|
|
422
434
|
endpoint?: string | undefined;
|
|
423
435
|
}[];
|
|
424
|
-
codeSamples: string[];
|
|
436
|
+
codeSamples: false | string[];
|
|
425
437
|
playground: {
|
|
426
438
|
enabled: boolean;
|
|
427
439
|
proxy: string | boolean;
|
|
@@ -429,7 +441,7 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
|
|
|
429
441
|
route: string;
|
|
430
442
|
endpoint?: string | undefined;
|
|
431
443
|
spec?: string | undefined;
|
|
432
|
-
}, "spec">, {
|
|
444
|
+
}, "spec" | "overlays">, {
|
|
433
445
|
sources: {
|
|
434
446
|
includeInLlms: boolean;
|
|
435
447
|
includeInSearch: boolean;
|
|
@@ -440,7 +452,7 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
|
|
|
440
452
|
route?: string | undefined;
|
|
441
453
|
endpoint?: string | undefined;
|
|
442
454
|
}[];
|
|
443
|
-
codeSamples: string[];
|
|
455
|
+
codeSamples: false | string[];
|
|
444
456
|
playground: {
|
|
445
457
|
enabled: boolean;
|
|
446
458
|
proxy: string | boolean;
|
|
@@ -455,6 +467,7 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
|
|
|
455
467
|
kind: z.ZodLiteral<"openapi">;
|
|
456
468
|
options: z.ZodPipe<z.ZodObject<{
|
|
457
469
|
expandSchemas: z.ZodDefault<z.ZodBoolean>;
|
|
470
|
+
overlays: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
458
471
|
sources: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
459
472
|
includeInLlms: z.ZodDefault<z.ZodBoolean>;
|
|
460
473
|
includeInSearch: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -463,8 +476,9 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
|
|
|
463
476
|
route: z.ZodOptional<z.ZodString>;
|
|
464
477
|
seoDescriptionSuffix: z.ZodDefault<z.ZodBoolean>;
|
|
465
478
|
spec: z.ZodString;
|
|
479
|
+
overlays: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
466
480
|
}, z.core.$strict>>>;
|
|
467
|
-
codeSamples: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
481
|
+
codeSamples: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodString>]>>;
|
|
468
482
|
playground: z.ZodPipe<z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
469
483
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
470
484
|
proxy: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
|
|
@@ -485,17 +499,19 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
|
|
|
485
499
|
noindex: boolean;
|
|
486
500
|
seoDescriptionSuffix: boolean;
|
|
487
501
|
spec: string;
|
|
502
|
+
overlays: string[];
|
|
488
503
|
label?: string | undefined;
|
|
489
504
|
route?: string | undefined;
|
|
490
505
|
}[];
|
|
491
|
-
codeSamples: string[];
|
|
506
|
+
codeSamples: false | string[];
|
|
492
507
|
playground: {
|
|
493
508
|
enabled: boolean;
|
|
494
509
|
proxy: string | boolean;
|
|
495
510
|
};
|
|
496
511
|
route: string;
|
|
512
|
+
overlays?: string[] | undefined;
|
|
497
513
|
spec?: string | undefined;
|
|
498
|
-
}, "spec">, {
|
|
514
|
+
}, "spec" | "overlays">, {
|
|
499
515
|
expandSchemas: boolean;
|
|
500
516
|
sources: {
|
|
501
517
|
includeInLlms: boolean;
|
|
@@ -503,15 +519,17 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
|
|
|
503
519
|
noindex: boolean;
|
|
504
520
|
seoDescriptionSuffix: boolean;
|
|
505
521
|
spec: string;
|
|
522
|
+
overlays: string[];
|
|
506
523
|
label?: string | undefined;
|
|
507
524
|
route?: string | undefined;
|
|
508
525
|
}[];
|
|
509
|
-
codeSamples: string[];
|
|
526
|
+
codeSamples: false | string[];
|
|
510
527
|
playground: {
|
|
511
528
|
enabled: boolean;
|
|
512
529
|
proxy: string | boolean;
|
|
513
530
|
};
|
|
514
531
|
route: string;
|
|
532
|
+
overlays?: string[] | undefined;
|
|
515
533
|
spec?: string | undefined;
|
|
516
534
|
}>>;
|
|
517
535
|
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
@@ -519,10 +537,12 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
|
|
|
519
537
|
}, z.core.$strict>, z.ZodObject<{
|
|
520
538
|
kind: z.ZodLiteral<"scalar">;
|
|
521
539
|
options: z.ZodPipe<z.ZodObject<{
|
|
540
|
+
overlays: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
522
541
|
route: z.ZodDefault<z.ZodString>;
|
|
523
542
|
sources: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
524
543
|
label: z.ZodOptional<z.ZodString>;
|
|
525
544
|
noindex: z.ZodDefault<z.ZodBoolean>;
|
|
545
|
+
overlays: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
526
546
|
route: z.ZodOptional<z.ZodString>;
|
|
527
547
|
spec: z.ZodString;
|
|
528
548
|
}, z.core.$strict>>>;
|
|
@@ -533,10 +553,12 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
|
|
|
533
553
|
route: string;
|
|
534
554
|
sources: {
|
|
535
555
|
noindex: boolean;
|
|
556
|
+
overlays: string[];
|
|
536
557
|
spec: string;
|
|
537
558
|
label?: string | undefined;
|
|
538
559
|
route?: string | undefined;
|
|
539
560
|
}[];
|
|
561
|
+
overlays?: string[] | undefined;
|
|
540
562
|
spec?: string | undefined;
|
|
541
563
|
theme?: string | undefined;
|
|
542
564
|
}>>;
|
|
@@ -560,14 +582,14 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
|
|
|
560
582
|
label?: string | undefined;
|
|
561
583
|
route?: string | undefined;
|
|
562
584
|
}[];
|
|
563
|
-
codeSamples: string[];
|
|
585
|
+
codeSamples: false | string[];
|
|
564
586
|
playground: {
|
|
565
587
|
enabled: boolean;
|
|
566
588
|
proxy: string | boolean;
|
|
567
589
|
};
|
|
568
590
|
route: string;
|
|
569
591
|
spec?: string | undefined;
|
|
570
|
-
}, "spec">;
|
|
592
|
+
}, "spec" | "overlays">;
|
|
571
593
|
requiredSecrets: string[];
|
|
572
594
|
runtimeDeps: string[];
|
|
573
595
|
} | {
|
|
@@ -583,7 +605,7 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
|
|
|
583
605
|
route?: string | undefined;
|
|
584
606
|
endpoint?: string | undefined;
|
|
585
607
|
}[];
|
|
586
|
-
codeSamples: string[];
|
|
608
|
+
codeSamples: false | string[];
|
|
587
609
|
playground: {
|
|
588
610
|
enabled: boolean;
|
|
589
611
|
proxy: string | boolean;
|
|
@@ -591,7 +613,7 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
|
|
|
591
613
|
route: string;
|
|
592
614
|
endpoint?: string | undefined;
|
|
593
615
|
spec?: string | undefined;
|
|
594
|
-
}, "spec">;
|
|
616
|
+
}, "spec" | "overlays">;
|
|
595
617
|
requiredSecrets: string[];
|
|
596
618
|
runtimeDeps: string[];
|
|
597
619
|
} | {
|
|
@@ -604,17 +626,19 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
|
|
|
604
626
|
noindex: boolean;
|
|
605
627
|
seoDescriptionSuffix: boolean;
|
|
606
628
|
spec: string;
|
|
629
|
+
overlays: string[];
|
|
607
630
|
label?: string | undefined;
|
|
608
631
|
route?: string | undefined;
|
|
609
632
|
}[];
|
|
610
|
-
codeSamples: string[];
|
|
633
|
+
codeSamples: false | string[];
|
|
611
634
|
playground: {
|
|
612
635
|
enabled: boolean;
|
|
613
636
|
proxy: string | boolean;
|
|
614
637
|
};
|
|
615
638
|
route: string;
|
|
639
|
+
overlays?: string[] | undefined;
|
|
616
640
|
spec?: string | undefined;
|
|
617
|
-
}, "spec">;
|
|
641
|
+
}, "spec" | "overlays">;
|
|
618
642
|
requiredSecrets: string[];
|
|
619
643
|
runtimeDeps: string[];
|
|
620
644
|
}>>>>;
|
|
@@ -23,6 +23,10 @@ export interface SearchDocument {
|
|
|
23
23
|
* Filterable through the MCP tools' `filters` input.
|
|
24
24
|
*/
|
|
25
25
|
facets?: Record<string, string>;
|
|
26
|
+
/** Frontmatter `search.boost`: the page's relevance multiplier, when set. */
|
|
27
|
+
boost?: number;
|
|
28
|
+
/** Frontmatter `search.keywords`: extra terms the page is found by. */
|
|
29
|
+
keywords?: string[];
|
|
26
30
|
}
|
|
27
31
|
/**
|
|
28
32
|
* A record uploaded to a hosted search backend (Algolia, Orama Cloud,
|
|
@@ -45,6 +49,13 @@ export interface SearchRecord {
|
|
|
45
49
|
version: string;
|
|
46
50
|
/** Single faceting tag (the first frontmatter tag, when present). */
|
|
47
51
|
tag?: string;
|
|
52
|
+
/**
|
|
53
|
+
* The page's relevance multiplier, 1 unless `search.boost` sets it: a
|
|
54
|
+
* ranking attribute every record carries, so the backend can sort by it.
|
|
55
|
+
*/
|
|
56
|
+
boost: number;
|
|
57
|
+
/** Extra terms the page is found by (`search.keywords`). */
|
|
58
|
+
keywords?: string[];
|
|
48
59
|
}
|
|
49
60
|
interface BuildOptions {
|
|
50
61
|
includeWhenDisabled?: boolean;
|
|
@@ -84,7 +95,7 @@ export declare const buildSearchDocuments: (project: BlumeProject, options?: Bui
|
|
|
84
95
|
/**
|
|
85
96
|
* Map per-page search documents to the flat record shape hosted backends
|
|
86
97
|
* ingest. One record per page, keyed by route; the first tag becomes the
|
|
87
|
-
* faceting `tag
|
|
98
|
+
* faceting `tag`, and every record carries a `boost` (1 by default).
|
|
88
99
|
*/
|
|
89
100
|
export declare const toSearchRecords: (documents: SearchDocument[]) => SearchRecord[];
|
|
90
101
|
export {};
|
|
@@ -24,6 +24,10 @@ export interface OramaDoc {
|
|
|
24
24
|
* but not indexed, so they ride along on the returned document untouched. */
|
|
25
25
|
breadcrumb?: string[];
|
|
26
26
|
section?: string;
|
|
27
|
+
/** The page's relevance multiplier (`search.boost`); stored, not indexed. */
|
|
28
|
+
boost?: number;
|
|
29
|
+
/** Extra terms the page is found by (`search.keywords`). */
|
|
30
|
+
keywords?: string[];
|
|
27
31
|
}
|
|
28
32
|
/**
|
|
29
33
|
* Build an in-memory Orama full-text index from search documents. Shared by the
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Site-wide meta tags (`seo.metatags`): tags written into every page's head,
|
|
3
|
+
* for what Blume has no setting of its own for, such as site-verification
|
|
4
|
+
* tokens, `theme-color`, or an app banner. The tags Blume writes itself are
|
|
5
|
+
* refused, each pointing at the setting that controls it, so a page never
|
|
6
|
+
* carries two values for one tag.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* What sets a tag Blume writes itself, or `undefined` for a tag the site can
|
|
10
|
+
* add.
|
|
11
|
+
*/
|
|
12
|
+
export declare const ownedMetatag: (name: string) => string | undefined;
|
|
13
|
+
/** One site-wide tag, as its `<meta>` element's attributes. */
|
|
14
|
+
export interface MetatagAttributes {
|
|
15
|
+
content: string;
|
|
16
|
+
name?: string;
|
|
17
|
+
property?: string;
|
|
18
|
+
}
|
|
19
|
+
/** The site's `seo.metatags` as `<meta>` attributes, in the order written. */
|
|
20
|
+
export declare const metatagAttributes: (tags?: Readonly<Record<string, string>> | null) => MetatagAttributes[];
|
package/docs/02-deployment.mdx
CHANGED
|
@@ -67,6 +67,8 @@ deployment: {
|
|
|
67
67
|
|
|
68
68
|
`base` (and `site`) are options of every host adapter too: `vercel({ base: "/docs" })`.
|
|
69
69
|
|
|
70
|
+
Every page keeps its own path under the base, even in a content folder that shares the base's name: with `base: "/docs"`, `docs/setup.md` is served at `/docs/docs/setup`, and its canonical URL, sidebar link, and `llms.txt` entry point there. A root-relative link you write that already starts with the base is taken to include it and left as written, so link to that page with a relative link (`./docs/setup`) or its full path (`/docs/docs/setup`).
|
|
71
|
+
|
|
70
72
|
## Mount the docs under a path
|
|
71
73
|
|
|
72
74
|
`basePath` mounts every generated route under a segment (`/docs/getting-started`) while leaving the sidebar untouched — the top level is your sections, not a wrapper group. Use it when the docs live at `/docs/*` but the site root stays yours (like Docusaurus `routeBasePath` or Fumadocs `baseUrl`).
|
|
@@ -75,7 +77,7 @@ deployment: {
|
|
|
75
77
|
basePath: "/docs",
|
|
76
78
|
```
|
|
77
79
|
|
|
78
|
-
Write links as if mounted at root (`/getting-started`); Blume rewrites them, along with redirects, the sitemap, canonical URLs, Open Graph images, `llms.txt`, and the search index. Public assets (images, files under `public/`) stay at the site root.
|
|
80
|
+
Write links as if mounted at root (`/getting-started`); Blume rewrites them, along with redirects, the sitemap, canonical URLs, Open Graph images, `llms.txt`, and the search index. Public assets (images, files under `public/`) stay at the site root, or under [`base`](#subpath-deploys) when you set one.
|
|
79
81
|
|
|
80
82
|
This is a distinct concept from the two paths above:
|
|
81
83
|
|
|
@@ -134,6 +136,23 @@ On Vercel and Cloudflare, a server build also turns on [`Accept: text/markdown`
|
|
|
134
136
|
Server features have their own configuration — for example, the assistant needs a model API key. See the [assistant guide](/docs/configuration/assistant) for setup.
|
|
135
137
|
:::
|
|
136
138
|
|
|
139
|
+
## Private docs
|
|
140
|
+
|
|
141
|
+
Blume has no sign-in of its own. A static build is plain files, and anyone who can reach the host can fetch anything in `dist/`. To keep a site private, turn on your host's access protection, which checks every request before a file is served:
|
|
142
|
+
|
|
143
|
+
- **Vercel**: [Deployment Protection](https://vercel.com/docs/deployment-protection) with the **All Deployments** scope, so production is covered and not only previews. Vercel Authentication lets in members of your Vercel team; Password Protection lets in anyone with a shared password, on paid plans.
|
|
144
|
+
- **Netlify**: [password protection](https://docs.netlify.com/manage/security/secure-access-to-sites/password-protection/) on all deploys, with a shared password, or with team login on Enterprise plans.
|
|
145
|
+
- **Cloudflare**: [Cloudflare Access](https://developers.cloudflare.com/workers/configuration/cloudflare-access/) on the Worker that serves the site (**Workers & Pages**, then your Worker, then **Access**), which covers every domain it answers on. Choose who can sign in by email address, email domain, or Cloudflare account membership.
|
|
146
|
+
- **GitHub Pages**: publish the site privately from an organization on GitHub Enterprise Cloud, and only people with read access to the repository can view it.
|
|
147
|
+
- **Your own server**: put authentication in front of `dist/`, such as nginx's `auth_basic` or an identity-aware proxy.
|
|
148
|
+
|
|
149
|
+
Host protection works the same for [server builds](#server-rendering). It covers the whole site: to keep some pages public, publish them as a separate site.
|
|
150
|
+
|
|
151
|
+
Everything Blume writes to `dist/` sits behind the protection, including pages, the search index, the `.md` copies, `llms.txt`, and Open Graph images. A few features reach outside it:
|
|
152
|
+
|
|
153
|
+
- A hosted [search provider](/docs/configuration/search) (Algolia, Orama Cloud, Typesense, or Mixedbread) keeps its own copy of your content on that service. The built-in Orama, FlexSearch, and Pagefind indexes are files in `dist/`, so they stay private.
|
|
154
|
+
- Services outside the protection can't read your pages. **Open in chat** hands ChatGPT or Claude a link it can't open, link previews in Slack or X can't show your Open Graph cards, and agents can't read `llms.txt` or the MCP server. Set `ai.openInChat: false` to hide the chat actions.
|
|
155
|
+
|
|
137
156
|
## Redirects
|
|
138
157
|
|
|
139
158
|
Map old URLs to new ones in `blume.config.ts`:
|
|
@@ -150,12 +169,31 @@ Two hosts need more than the file:
|
|
|
150
169
|
- **Vercel** reads `vercel.json` from the project's root directory, never from the output directory, so the copy in `dist/` applies only when you deploy that folder itself with the Vercel CLI (`vercel deploy dist`). A Git-connected project never reads it: it serves the redirect pages and none of the headers from [Content types](#content-types). Copy the `redirects` and `headers` from `dist/vercel.json` into the `vercel.json` in your project's root directory, or use `vercel()` for a server build, whose routing config carries the redirects and the discovery headers.
|
|
151
170
|
|
|
152
171
|
:::note
|
|
153
|
-
`from` and `to`
|
|
172
|
+
Write both `from` and `to` as if mounted at root, starting with `/` (`to` can also be a full `https://` URL) — under [`base`](#subpath-deploys) and [`basePath`](#mount-the-docs-under-a-path) alike, Blume rewrites both sides for you, so a redirect lands inside the base. A `to` that names a file in `public/` (`/files/guide.pdf`) gains `base` but not `basePath`, since that's where the file is served. A base you've already written into `to` by hand is preserved rather than doubled.
|
|
154
173
|
:::
|
|
155
174
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
175
|
+
### Pattern redirects
|
|
176
|
+
|
|
177
|
+
A `from` can cover many paths at once, written the way Mintlify and `vercel.json` write them:
|
|
178
|
+
|
|
179
|
+
```ts blume.config.ts
|
|
180
|
+
redirects: [
|
|
181
|
+
{ from: "/beta/:slug*", to: "/v2/:slug*" },
|
|
182
|
+
{ from: "/blog/:slug", to: "/articles/:slug" },
|
|
183
|
+
{ from: "/articles/concepts-*", to: "/concepts" },
|
|
184
|
+
{ from: "/old/article-*", to: "/new/article-*" },
|
|
185
|
+
],
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
- `:name` matches one whole segment: `/blog/:slug` covers `/blog/hello`, not `/blog/a/b`.
|
|
189
|
+
- `:name*` as the last segment matches the rest of the path, any number of segments: `/beta/:slug*` sends `/beta/guides/setup` to `/v2/guides/setup`, and `/beta` itself to `/v2`. A last segment of `*` does the same.
|
|
190
|
+
- `*` at the end of a segment matches the rest of the path from there: `/articles/concepts-*` covers `/articles/concepts-overview`.
|
|
191
|
+
|
|
192
|
+
`to` reads a capture by name, as a whole segment (`/:slug*`, `/:slug`), or a `*` for what the `*` in `from` matched (`:splat`, the way `_redirects` spells it, reads it too). A `to` that reads no capture sends every path the pattern covers to one page. An exact redirect wins over a pattern that covers the same path, and patterns are tried in the order you list them.
|
|
193
|
+
|
|
194
|
+
Each host gets the patterns in its own syntax: splats in `_redirects`, `path-to-regexp` sources in `vercel.json`, and the routing config of a `vercel()` or `netlify()` server build. The `node()` and `cloudflare()` servers match them themselves, and so does `blume dev`. A static build writes no redirect page for a pattern, since it would need one for every path the pattern covers, so a host that reads none of these files (GitHub Pages, say) applies only the exact redirects; `blume-redirects.json` lists patterns as you wrote them.
|
|
195
|
+
|
|
196
|
+
A pattern can't also match a page: hosts disagree on which of the two answers, so the build stops with `BLUME_REDIRECT_MATCHES_PAGE`, naming the page. Narrow the pattern to the paths that moved.
|
|
159
197
|
|
|
160
198
|
## Content types
|
|
161
199
|
|
|
@@ -168,7 +206,7 @@ When a feature needs a runtime secret, Blume warns at `blume dev`/`build` if it'
|
|
|
168
206
|
| Feature | Variable |
|
|
169
207
|
| --- | --- |
|
|
170
208
|
| Assistant (AI Gateway) | `AI_GATEWAY_API_KEY` (or Vercel OIDC) |
|
|
171
|
-
| Assistant (other adapters) | the adapter's default key env var (`OPENROUTER_API_KEY`, `LLMGATEWAY_API_KEY`, `INKEEP_API_KEY`), or the `apiKeyEnv` you passed it |
|
|
209
|
+
| Assistant (other adapters) | the adapter's default key env var (`OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GEMINI_API_KEY`, `XAI_API_KEY`, `OPENROUTER_API_KEY`, `LLMGATEWAY_API_KEY`, `INKEEP_API_KEY`), or the `apiKeyEnv` you passed it |
|
|
172
210
|
| Mixedbread search | `MIXEDBREAD_API_KEY` |
|
|
173
211
|
| [Content sources](/docs/content/sources) | `NOTION_TOKEN` (`notion()`), `SANITY_TOKEN` (`sanity()`), `CONTENTFUL_ACCESS_TOKEN` (`contentful()`), `PAYLOAD_API_KEY` (`payload()`), `STRAPI_API_TOKEN` (`strapi()`), `GITHUB_TOKEN` (`githubReleases()`, and `mdxRemote()` reading from GitHub) |
|
|
174
212
|
|
package/docs/03-upgrading.mdx
CHANGED
|
@@ -6,7 +6,7 @@ sidebar:
|
|
|
6
6
|
order: 2.5
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
Blume 2 changes configuration, not content: your Markdown and MDX pages need no edits
|
|
9
|
+
Blume 2 changes configuration, not content: your Markdown and MDX pages need no edits (see [Frontmatter](#frontmatter) for one field that now does something). Settings that used to be a named string or a keyed block — the search provider, the deployment target, content sources, API references, analytics, and the assistant's model backend — are now **adapters** you import from a `blume/*` subpath and call. Ask AI is renamed the assistant, so `ai.ask` becomes `ai.assistant`. The machine-readable settings move from `ai` to a new `agents` key, and `components.ts` overrides are checked before the build. A zero-config site, or one that sets none of these, only needs the version bump.
|
|
10
10
|
|
|
11
11
|
## Upgrade with one command
|
|
12
12
|
|
|
@@ -87,7 +87,7 @@ export default defineConfig({
|
|
|
87
87
|
|
|
88
88
|
- `netlify()`, `cloudflare()`, and `node()` work the same way. Naming a host adapter switches to server output; pass `output: "static"` to keep a static build with that host's platform files.
|
|
89
89
|
- A config that only sets `site` or `base` stays as it is: `deployment: { site, base }` is still the static form.
|
|
90
|
-
- `redirects`
|
|
90
|
+
- `redirects` read `:name` segments and a trailing `*` as patterns, matched the same way on every host (see [Pattern redirects](/docs/deployment#pattern-redirects)). Blume 1 never supported patterns and handed them to each host as written, so check any `from` or `to` that holds one.
|
|
91
91
|
- The `--adapter`, `--output`, and `--base` flags on `blume build` are gone, and passing one stops the build with an error naming the `deployment` setting that replaces it. Set the adapter in `blume.config.ts`, and name it explicitly: server output is no longer inferred from the platform's environment.
|
|
92
92
|
|
|
93
93
|
See [Deployment](/docs/deployment) for each adapter's options.
|
|
@@ -239,7 +239,7 @@ export default defineConfig({
|
|
|
239
239
|
|
|
240
240
|
</CodeGroup>
|
|
241
241
|
|
|
242
|
-
|
|
242
|
+
A 1.x `provider` name maps onto `gateway()`, `openrouter()`, `llmgateway()`, or `inkeep()`, and `openai-compatible` onto `openai({ baseUrl, name, model, apiKeyEnv })`; the [adapter list](/docs/configuration/assistant#adapters) has the rest. `model`, `apiKeyEnv`, `baseUrl`, `headers`, and `reasoning` move into the adapter; `enabled`, `instructions`, `retrieval`, `suggestions`, `cors`, and `endpoint` move to `ai.assistant` unchanged. Leaving `provider` unset still uses the AI Gateway.
|
|
243
243
|
|
|
244
244
|
The rename reaches every name that said Ask AI:
|
|
245
245
|
|
|
@@ -290,7 +290,7 @@ export default defineConfig({
|
|
|
290
290
|
|
|
291
291
|
## Frontmatter
|
|
292
292
|
|
|
293
|
-
|
|
293
|
+
Pages keep their frontmatter. One field changes what it does: `search.boost`. Blume 1 accepted it, but search never read it, so a page ranked the same without it. It now multiplies the page's search relevance (see [Ranking](/docs/configuration/search#ranking)). Check any page that sets it: a boost you added and forgot now moves the page up.
|
|
294
294
|
|
|
295
295
|
## Component overrides
|
|
296
296
|
|
package/docs/04-migrating.mdx
CHANGED
|
@@ -43,7 +43,7 @@ The agent follows the playbook's workflow from the source's config to a passing
|
|
|
43
43
|
5. Points your `package.json` scripts at `blume dev` and `blume build`, and swaps the old framework's dependencies for `blume`.
|
|
44
44
|
6. Runs `blume build` and `blume validate` until both pass.
|
|
45
45
|
|
|
46
|
-
It finishes with a summary of what it migrated, dropped, or approximated, such as footer links or
|
|
46
|
+
It finishes with a summary of what it migrated, dropped, or approximated, such as footer links or navbar buttons with no Blume equivalent, so you can decide what to do with each.
|
|
47
47
|
|
|
48
48
|
## Other agents
|
|
49
49
|
|
package/docs/08-faq.mdx
CHANGED
|
@@ -45,7 +45,7 @@ No. A folder of Markdown is a complete site — navigation, search, and theming
|
|
|
45
45
|
|
|
46
46
|
## Can I use React components and MDX?
|
|
47
47
|
|
|
48
|
-
Yes. Any page can be `.md` or `.mdx`, and MDX lets you drop in the [built-in components](/docs/content/components) with no imports. You can also add your own `.tsx`/`.jsx` [islands](/docs/content/islands)
|
|
48
|
+
Yes. Any page can be `.md` or `.mdx`, and MDX lets you drop in the [built-in components](/docs/content/components) with no imports. You can also add your own `.tsx`/`.jsx` [islands](/docs/content/islands). Blume switches React on only when your project uses it — any `.tsx` or `.jsx` file in the project (your islands included), a React [`<Component>`](/docs/content/components#component) example, a [component override](/docs/configuration/customization), or the [assistant](/docs/configuration/assistant) — so a site with none of those ships no framework JavaScript.
|
|
49
49
|
|
|
50
50
|
## Where can I deploy it?
|
|
51
51
|
|