blume 1.7.2 → 2.0.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 +19 -0
- package/CHANGELOG.md +227 -0
- package/README.md +34 -21
- package/dist/cli/chunk-11j0384y.js +148 -0
- package/dist/cli/chunk-11j0384y.js.map +10 -0
- package/dist/cli/{chunk-xhtpx3ff.js → chunk-1w8dp3qb.js} +17 -16
- package/dist/cli/{chunk-xhtpx3ff.js.map → chunk-1w8dp3qb.js.map} +3 -3
- package/dist/cli/chunk-2q1dwty4.js +75 -0
- package/dist/cli/chunk-2q1dwty4.js.map +11 -0
- package/dist/cli/chunk-41za066z.js +122 -0
- package/dist/cli/chunk-41za066z.js.map +11 -0
- package/dist/cli/chunk-5a2z0198.js +133 -0
- package/dist/cli/chunk-5a2z0198.js.map +10 -0
- package/dist/cli/{chunk-9he6crym.js → chunk-6k8vp3ta.js} +25 -13
- package/dist/cli/{chunk-9he6crym.js.map → chunk-6k8vp3ta.js.map} +4 -4
- package/dist/cli/{chunk-mt76t7dj.js → chunk-79njf86q.js} +133 -54
- package/dist/cli/chunk-79njf86q.js.map +11 -0
- package/dist/cli/{chunk-3w7b2vcx.js → chunk-7ez8ny0t.js} +2 -2
- package/dist/cli/{chunk-688e0dde.js → chunk-88cpgt6h.js} +1 -1
- package/dist/cli/chunk-a9kptbw5.js +361 -0
- package/dist/cli/chunk-a9kptbw5.js.map +14 -0
- package/dist/cli/chunk-abh8yjkn.js +31 -0
- package/dist/cli/chunk-abh8yjkn.js.map +10 -0
- package/dist/cli/chunk-b5aj94ah.js +91 -0
- package/dist/cli/chunk-b5aj94ah.js.map +10 -0
- package/dist/cli/{chunk-hs3gbh8p.js → chunk-bctazmbk.js} +9 -5
- package/dist/cli/chunk-bctazmbk.js.map +10 -0
- package/dist/cli/chunk-beat36xx.js +279 -0
- package/dist/cli/chunk-beat36xx.js.map +10 -0
- package/dist/cli/chunk-bnbmcwfb.js +145 -0
- package/dist/cli/chunk-bnbmcwfb.js.map +11 -0
- package/dist/cli/{chunk-9bkjd11x.js → chunk-bw22s759.js} +15 -5
- package/dist/cli/{chunk-9bkjd11x.js.map → chunk-bw22s759.js.map} +4 -4
- package/dist/cli/chunk-by2290sx.js +39 -0
- package/dist/cli/chunk-by2290sx.js.map +10 -0
- package/dist/cli/chunk-d1tadaw7.js +79 -0
- package/dist/cli/chunk-d1tadaw7.js.map +10 -0
- package/dist/cli/{chunk-t3tj0dgr.js → chunk-d80hr03s.js} +24 -19
- package/dist/cli/chunk-d80hr03s.js.map +15 -0
- package/dist/cli/chunk-ernrthtr.js +97 -0
- package/dist/cli/chunk-ernrthtr.js.map +10 -0
- package/dist/cli/chunk-f2972sbt.js +374 -0
- package/dist/cli/chunk-f2972sbt.js.map +10 -0
- package/dist/cli/{chunk-exeeb35e.js → chunk-f7t03s3g.js} +2 -2
- package/dist/cli/{chunk-2z47ypj8.js → chunk-fa25z98p.js} +16 -3
- package/dist/cli/chunk-fa25z98p.js.map +11 -0
- package/dist/cli/{chunk-12dxjqk7.js → chunk-fh5hj5jt.js} +44 -21
- package/dist/cli/chunk-fh5hj5jt.js.map +10 -0
- package/dist/cli/{chunk-8cd8tj54.js → chunk-j8mw0za6.js} +86 -57
- package/dist/cli/chunk-j8mw0za6.js.map +35 -0
- package/dist/cli/chunk-jts8mvcz.js +106 -0
- package/dist/cli/{chunk-2mzebbbz.js.map → chunk-jts8mvcz.js.map} +6 -4
- package/dist/cli/{chunk-ejjx8znq.js → chunk-mnqj32sj.js} +505 -536
- package/dist/cli/chunk-mnqj32sj.js.map +12 -0
- package/dist/cli/{chunk-196vjxp9.js → chunk-mwt1k8n7.js} +100 -372
- package/dist/cli/chunk-mwt1k8n7.js.map +10 -0
- package/dist/cli/chunk-nk3ts2xk.js +51 -0
- package/dist/cli/chunk-nk3ts2xk.js.map +10 -0
- package/dist/cli/{chunk-n9sra6sy.js → chunk-pat2zzwc.js} +10 -14
- package/dist/cli/{chunk-n9sra6sy.js.map → chunk-pat2zzwc.js.map} +2 -2
- package/dist/cli/chunk-pnnvybbk.js +176 -0
- package/dist/cli/chunk-pnnvybbk.js.map +11 -0
- package/dist/cli/{chunk-cvky9gb2.js → chunk-sqn5t4q0.js} +81 -87
- package/dist/cli/chunk-sqn5t4q0.js.map +10 -0
- package/dist/cli/{chunk-eevwt1sc.js → chunk-tzne8qfq.js} +15 -15
- package/dist/cli/{chunk-eevwt1sc.js.map → chunk-tzne8qfq.js.map} +1 -1
- package/dist/cli/chunk-xaz13gwg.js +12449 -0
- package/dist/cli/chunk-xaz13gwg.js.map +182 -0
- package/dist/cli/chunk-y3e45rc8.js +102 -0
- package/dist/cli/chunk-y3e45rc8.js.map +10 -0
- package/dist/cli/chunk-z01ze5c1.js +261 -0
- package/dist/cli/chunk-z01ze5c1.js.map +10 -0
- package/dist/cli/{chunk-5n7t497w.js → chunk-z1f5arsg.js} +247 -755
- package/dist/cli/chunk-z1f5arsg.js.map +36 -0
- package/dist/cli/{chunk-hdm2dkd2.js → chunk-zg2gtj10.js} +1086 -2596
- package/dist/cli/chunk-zg2gtj10.js.map +35 -0
- package/dist/cli/{chunk-ppfvdcd4.js → chunk-zxccj738.js} +1 -1
- package/dist/cli/index.js +214 -57
- package/dist/cli/index.js.map +8 -7
- package/dist/types/ai/agent-readability.d.ts +52 -0
- package/dist/types/ai/ai-catalog.d.ts +42 -0
- package/dist/types/ai/api/paths.d.ts +17 -0
- package/dist/types/ai/api-catalog.d.ts +18 -0
- package/dist/types/ai/ask.d.ts +368 -0
- package/dist/types/ai/changelog-markdown.d.ts +2 -0
- package/dist/types/ai/component-markdown.d.ts +2 -2
- package/dist/types/ai/index.d.ts +24 -0
- package/dist/types/ai/link-headers.d.ts +24 -0
- package/dist/types/ai/llms.d.ts +25 -0
- package/dist/types/ai/markdown.d.ts +45 -0
- package/dist/types/ai/mcp/discovery.d.ts +68 -0
- package/dist/types/ai/mcp/tools.d.ts +16 -0
- package/dist/types/ai/openapi-components.d.ts +43 -0
- package/dist/types/ai/relative-links.d.ts +26 -0
- package/dist/types/ai/serializers.d.ts +15 -0
- package/dist/types/ai/skills.d.ts +42 -0
- package/dist/types/ai/tar.d.ts +25 -0
- package/dist/types/ai/visibility.d.ts +17 -0
- package/dist/types/ai/web-bot-auth.d.ts +16 -0
- package/dist/types/analytics/adobe.d.ts +35 -0
- package/dist/types/analytics/amplitude.d.ts +50 -0
- package/dist/types/analytics/clarity.d.ts +31 -0
- package/dist/types/analytics/clearbit.d.ts +29 -0
- package/dist/types/analytics/cloudflare.d.ts +41 -0
- package/dist/types/analytics/fathom.d.ts +41 -0
- package/dist/types/analytics/google-analytics.d.ts +44 -0
- package/dist/types/analytics/google-tag-manager.d.ts +40 -0
- package/dist/types/analytics/head.d.ts +30 -0
- package/dist/types/analytics/heap.d.ts +40 -0
- package/dist/types/analytics/hightouch.d.ts +44 -0
- package/dist/types/analytics/hotjar.d.ts +33 -0
- package/dist/types/analytics/index.d.ts +61 -0
- package/dist/types/analytics/inline.d.ts +17 -0
- package/dist/types/analytics/logrocket.d.ts +44 -0
- package/dist/types/analytics/mixpanel.d.ts +67 -0
- package/dist/types/analytics/pirsch.d.ts +42 -0
- package/dist/types/analytics/plausible.d.ts +56 -0
- package/dist/types/analytics/posthog.d.ts +45 -0
- package/dist/types/analytics/schema.d.ts +320 -0
- package/dist/types/analytics/script.d.ts +46 -0
- package/dist/types/analytics/segment.d.ts +50 -0
- package/dist/types/analytics/vercel.d.ts +48 -0
- package/dist/types/astro/integration.d.ts +76 -0
- package/dist/types/astro/markdown-negotiation.d.ts +23 -0
- package/dist/types/astro/module-types.d.ts +14 -0
- package/dist/types/astro/pages.d.ts +44 -0
- package/dist/types/cli/env.d.ts +12 -0
- package/dist/types/cli/init/scaffold.d.ts +154 -0
- package/dist/types/components/layout/nav-utils.d.ts +11 -0
- package/dist/types/core/adapter.d.ts +47 -0
- package/dist/types/core/api-name.d.ts +7 -0
- package/dist/types/core/changelog-index.d.ts +13 -0
- package/dist/types/core/config-input.d.ts +209 -505
- package/dist/types/core/config.d.ts +60 -34
- package/dist/types/core/content-assets.d.ts +76 -0
- package/dist/types/core/custom-pages.d.ts +33 -0
- package/dist/types/core/data.d.ts +28 -11
- package/dist/types/core/define-components.d.ts +12 -9
- package/dist/types/core/deployment-env.d.ts +6 -11
- package/dist/types/core/frontmatter.d.ts +10 -0
- package/dist/types/core/graph.d.ts +18 -0
- package/dist/types/core/heading-markers.d.ts +54 -0
- package/dist/types/core/i18n-ui.d.ts +6 -2
- package/dist/types/core/i18n.d.ts +87 -0
- package/dist/types/core/includes.d.ts +138 -0
- package/dist/types/core/last-modified.d.ts +47 -0
- package/dist/types/core/links.d.ts +95 -0
- package/dist/types/core/locale-links.d.ts +60 -0
- package/dist/types/core/manifest.d.ts +17 -0
- package/dist/types/core/meta.d.ts +38 -0
- package/dist/types/core/nav-diagnostics.d.ts +26 -0
- package/dist/types/core/navigation.d.ts +6 -0
- package/dist/types/core/node-require.d.ts +19 -0
- package/dist/types/core/package-json.d.ts +13 -0
- package/dist/types/core/probe.d.ts +42 -0
- package/dist/types/core/project-graph.d.ts +51 -0
- package/dist/types/core/project.d.ts +2 -0
- package/dist/types/core/safe-href.d.ts +2 -0
- package/dist/types/core/safe-links.d.ts +26 -0
- package/dist/types/core/schema.d.ts +2291 -441
- package/dist/types/core/site-url.d.ts +16 -0
- package/dist/types/core/sources/assets.d.ts +36 -0
- package/dist/types/core/sources/cache.d.ts +37 -0
- package/dist/types/core/sources/collection.d.ts +28 -0
- package/dist/types/core/sources/contentful-rich-text.d.ts +31 -0
- package/dist/types/core/sources/contentful.d.ts +40 -0
- package/dist/types/core/sources/filesystem.d.ts +24 -0
- package/dist/types/core/sources/github-releases.d.ts +31 -0
- package/dist/types/core/sources/json.d.ts +30 -0
- package/dist/types/core/sources/lexical.d.ts +19 -0
- package/dist/types/core/sources/lower.d.ts +75 -0
- package/dist/types/core/sources/mdx-remote.d.ts +28 -0
- package/dist/types/core/sources/normalize.d.ts +147 -0
- package/dist/types/core/sources/notion.d.ts +131 -0
- package/dist/types/core/sources/obsidian.d.ts +46 -0
- package/dist/types/core/sources/payload.d.ts +39 -0
- package/dist/types/core/sources/portable-text.d.ts +42 -0
- package/dist/types/core/sources/read.d.ts +23 -0
- package/dist/types/core/sources/remote.d.ts +74 -0
- package/dist/types/core/sources/resolve.d.ts +19 -0
- package/dist/types/core/sources/sanity.d.ts +43 -0
- package/dist/types/core/sources/strapi-blocks.d.ts +12 -0
- package/dist/types/core/sources/strapi.d.ts +33 -0
- package/dist/types/core/sources/types.d.ts +7 -0
- package/dist/types/core/sources/watch.d.ts +45 -0
- package/dist/types/core/text-width.d.ts +11 -0
- package/dist/types/core/types.d.ts +20 -1
- package/dist/types/core/unrecognized-keys.d.ts +7 -0
- package/dist/types/core/versions.d.ts +72 -0
- package/dist/types/core/yaml.d.ts +9 -0
- package/dist/types/deploy/adapter-output.d.ts +45 -0
- package/dist/types/deploy/adapters/cloudflare.d.ts +40 -0
- package/dist/types/deploy/adapters/index.d.ts +29 -0
- package/dist/types/deploy/adapters/netlify.d.ts +37 -0
- package/dist/types/deploy/adapters/node.d.ts +37 -0
- package/dist/types/deploy/adapters/registry.d.ts +133 -0
- package/dist/types/deploy/adapters/types.d.ts +71 -0
- package/dist/types/deploy/adapters/vercel.d.ts +38 -0
- package/dist/types/deploy/artifacts.d.ts +65 -0
- package/dist/types/deploy/cloudflare-negotiation.d.ts +196 -0
- package/dist/types/deploy/function-bundle.d.ts +80 -0
- package/dist/types/deploy/headers.d.ts +50 -0
- package/dist/types/deploy/node-headers.d.ts +42 -0
- package/dist/types/deploy/platforms/cloudflare.d.ts +40 -0
- package/dist/types/deploy/platforms/index.d.ts +18 -0
- package/dist/types/deploy/platforms/netlify.d.ts +13 -0
- package/dist/types/deploy/platforms/node.d.ts +11 -0
- package/dist/types/deploy/platforms/paths.d.ts +27 -0
- package/dist/types/deploy/platforms/static.d.ts +10 -0
- package/dist/types/deploy/platforms/types.d.ts +104 -0
- package/dist/types/deploy/platforms/vercel.d.ts +32 -0
- package/dist/types/deploy/redirects.d.ts +53 -0
- package/dist/types/deploy/robots.d.ts +8 -0
- package/dist/types/deploy/rss.d.ts +31 -0
- package/dist/types/deploy/sitemap.d.ts +21 -0
- package/dist/types/deploy/vercel-negotiation.d.ts +109 -0
- package/dist/types/markdown/code-title.d.ts +32 -0
- package/dist/types/markdown/fence-meta.d.ts +23 -0
- package/dist/types/markdown/themes.d.ts +3 -3
- package/dist/types/openapi/asyncapi.d.ts +129 -0
- package/dist/types/openapi/graphql-build.d.ts +8 -0
- package/dist/types/openapi/graphql.d.ts +122 -0
- package/dist/types/openapi/model.d.ts +158 -0
- package/dist/types/openapi/parse.d.ts +57 -0
- package/dist/types/openapi/references.d.ts +37 -25
- package/dist/types/openapi/render-mdx.d.ts +33 -0
- package/dist/types/openapi/sentence.d.ts +7 -0
- package/dist/types/openapi/signature.d.ts +10 -0
- package/dist/types/openapi/source.d.ts +22 -0
- package/dist/types/openapi/spec-dependency-error.d.ts +10 -0
- package/dist/types/reference/asyncapi.d.ts +166 -0
- package/dist/types/reference/graphql.d.ts +181 -0
- package/dist/types/reference/index.d.ts +32 -0
- package/dist/types/reference/openapi.d.ts +165 -0
- package/dist/types/reference/options.d.ts +157 -0
- package/dist/types/reference/scalar.d.ts +136 -0
- package/dist/types/reference/schema.d.ts +630 -0
- package/dist/types/search/adapters/algolia.d.ts +32 -0
- package/dist/types/search/adapters/flexsearch.d.ts +12 -0
- package/dist/types/search/adapters/index.d.ts +31 -0
- package/dist/types/search/adapters/mixedbread.d.ts +22 -0
- package/dist/types/search/adapters/orama-cloud.d.ts +33 -0
- package/dist/types/search/adapters/orama.d.ts +13 -0
- package/dist/types/search/adapters/pagefind.d.ts +12 -0
- package/dist/types/search/adapters/registry.d.ts +228 -0
- package/dist/types/search/adapters/types.d.ts +34 -0
- package/dist/types/search/adapters/typesense.d.ts +42 -0
- package/dist/types/search/build.d.ts +23 -0
- package/dist/types/search/documents.d.ts +90 -0
- package/dist/types/search/facets.d.ts +3 -0
- package/dist/types/search/sync/algolia.d.ts +14 -0
- package/dist/types/search/sync/index.d.ts +14 -0
- package/dist/types/search/sync/orama-cloud.d.ts +10 -0
- package/dist/types/search/sync/typesense.d.ts +14 -0
- package/dist/types/sources/contentful.d.ts +68 -0
- package/dist/types/sources/custom.d.ts +20 -0
- package/dist/types/sources/filesystem.d.ts +42 -0
- package/dist/types/sources/github-releases.d.ts +46 -0
- package/dist/types/sources/index.d.ts +48 -0
- package/dist/types/sources/mdx-remote.d.ts +63 -0
- package/dist/types/sources/notion.d.ts +65 -0
- package/dist/types/sources/obsidian.d.ts +34 -0
- package/dist/types/sources/payload.d.ts +68 -0
- package/dist/types/sources/registry.d.ts +1414 -0
- package/dist/types/sources/sanity.d.ts +69 -0
- package/dist/types/sources/shared.d.ts +46 -0
- package/dist/types/sources/strapi.d.ts +66 -0
- package/dist/types/theme/icon-kind.d.ts +11 -0
- package/dist/types/theme/icons.d.ts +20 -0
- package/docs/01-quickstart.mdx +18 -18
- package/docs/02-deployment.mdx +50 -26
- package/docs/03-upgrading.mdx +351 -0
- package/docs/04-migrating.mdx +58 -0
- package/docs/08-faq.mdx +3 -3
- package/docs/advanced/blog.mdx +13 -6
- package/docs/advanced/changelog.mdx +23 -35
- package/docs/advanced/custom-pages.mdx +20 -8
- package/docs/advanced/meta.ts +1 -8
- package/docs/advanced/skills.mdx +8 -0
- package/docs/cli/audit.mdx +646 -0
- package/docs/cli/doctor.mdx +29 -0
- package/docs/{reference/eval.mdx → cli/evals.mdx} +9 -8
- package/docs/cli/index.mdx +105 -0
- package/docs/cli/meta.ts +7 -0
- package/docs/{reference → cli}/translate.mdx +1 -1
- package/docs/cli/validate.mdx +41 -0
- package/docs/cli/version.mdx +40 -0
- package/docs/configuration/analytics.mdx +350 -59
- package/docs/configuration/ask-ai.mdx +176 -61
- package/docs/configuration/customization.mdx +15 -9
- package/docs/configuration/index.mdx +52 -31
- package/docs/configuration/search.mdx +75 -54
- package/docs/configuration/theming.mdx +24 -15
- package/docs/content/components.mdx +21 -5
- package/docs/{reference → content}/frontmatter.mdx +37 -1
- package/docs/content/i18n.mdx +8 -6
- package/docs/content/includes.mdx +2 -4
- package/docs/content/index.mdx +1 -1
- package/docs/content/islands.mdx +10 -5
- package/docs/content/meta.mdx +1 -1
- package/docs/content/meta.ts +1 -0
- package/docs/content/navigation.mdx +12 -7
- package/docs/content/sources.mdx +145 -50
- package/docs/content/syntax.mdx +26 -12
- package/docs/content/versioning.mdx +3 -3
- package/docs/discoverability/agent-discovery.mdx +91 -10
- package/docs/discoverability/index.mdx +5 -5
- package/docs/discoverability/json-api.mdx +4 -4
- package/docs/discoverability/llms-txt.mdx +6 -6
- package/docs/discoverability/markdown.mdx +4 -4
- package/docs/discoverability/mcp.mdx +11 -11
- package/docs/discoverability/sitemap-and-robots.mdx +3 -3
- package/docs/index.mdx +2 -2
- package/docs/references/asyncapi.mdx +59 -0
- package/docs/{advanced → references}/graphql.mdx +45 -32
- package/docs/{reference → references}/meta.ts +2 -2
- package/docs/references/openapi.mdx +171 -0
- package/docs/references/scalar.mdx +64 -0
- package/package.json +42 -8
- package/skills/blume/SKILL.md +21 -8
- package/skills/blume-migrate/SKILL.md +22 -21
- package/skills/blume-migrate/assets/oxfmt@0.67.0.patch +49 -0
- package/skills/blume-migrate/references/docusaurus.md +5 -4
- package/skills/blume-migrate/references/fumadocs.md +4 -4
- package/skills/blume-migrate/references/mintlify.md +23 -8
- package/skills/blume-migrate/references/monorepo.md +6 -6
- package/skills/blume-migrate/references/starlight.md +4 -4
- package/src/ai/agent-readability.ts +26 -22
- package/src/ai/ai-catalog.ts +259 -0
- package/src/ai/api/handlers.ts +46 -11
- package/src/ai/api-catalog.ts +8 -8
- package/src/ai/ask-data.ts +1 -1
- package/src/ai/ask.ts +624 -100
- package/src/ai/changelog-markdown.ts +91 -0
- package/src/ai/component-markdown.ts +328 -12
- package/src/ai/index.ts +45 -0
- package/src/ai/link-headers.ts +19 -6
- package/src/ai/llms.ts +26 -15
- package/src/ai/markdown.ts +35 -5
- package/src/ai/mcp/data.ts +9 -5
- package/src/ai/mcp/discovery.ts +1 -1
- package/src/ai/openapi-components.ts +4 -1
- package/src/ai/relative-links.ts +170 -0
- package/src/ai/serializers.ts +2 -2
- package/src/ai/skills.ts +1 -1
- package/src/ai/web-bot-auth.ts +2 -2
- package/src/analytics/adobe.ts +46 -0
- package/src/analytics/amplitude.ts +79 -0
- package/src/analytics/clarity.ts +46 -0
- package/src/analytics/clearbit.ts +47 -0
- package/src/analytics/cloudflare.ts +67 -0
- package/src/analytics/fathom.ts +64 -0
- package/src/analytics/google-analytics.ts +84 -0
- package/src/analytics/google-tag-manager.ts +61 -0
- package/src/analytics/head.ts +130 -0
- package/src/analytics/heap.ts +65 -0
- package/src/analytics/hightouch.ts +77 -0
- package/src/analytics/hotjar.ts +47 -0
- package/src/analytics/index.ts +71 -0
- package/src/analytics/inline.ts +21 -0
- package/src/analytics/logrocket.ts +71 -0
- package/src/analytics/mixpanel.ts +92 -0
- package/src/analytics/pirsch.ts +66 -0
- package/src/analytics/plausible.ts +83 -0
- package/src/analytics/posthog.ts +78 -0
- package/src/analytics/schema.ts +60 -0
- package/src/analytics/script.ts +60 -0
- package/src/analytics/segment.ts +85 -0
- package/src/analytics/vercel.ts +50 -0
- package/src/astro/adapter-root.ts +7 -9
- package/src/astro/component-slots.ts +131 -91
- package/src/astro/generate.ts +114 -345
- package/src/astro/integration.ts +2 -6
- package/src/astro/pages.ts +13 -101
- package/src/astro/render-deps.ts +379 -0
- package/src/astro/runtime-deps.ts +201 -0
- package/src/astro/templates.ts +554 -541
- package/src/audit/agent.ts +24 -0
- package/src/audit/catalog.ts +2 -2
- package/src/audit/checks/assets.ts +2 -2
- package/src/audit/checks/dns-aid.ts +1 -1
- package/src/audit/checks/duplicates.ts +3 -1
- package/src/audit/checks/i18n.ts +1 -1
- package/src/audit/checks/indexability.ts +7 -7
- package/src/audit/checks/links.ts +2 -2
- package/src/audit/checks/llms.ts +6 -6
- package/src/audit/checks/network.ts +3 -3
- package/src/audit/checks/og-image.ts +2 -2
- package/src/audit/checks/robots.ts +1 -1
- package/src/audit/checks/sitemap.ts +2 -2
- package/src/audit/checks/social.ts +1 -1
- package/src/audit/run.ts +4 -3
- package/src/audit/terms.ts +31 -0
- package/src/audit/url.ts +13 -13
- package/src/cli/command-meta.ts +10 -0
- package/src/cli/commands/audit.ts +39 -20
- package/src/cli/commands/build.ts +71 -314
- package/src/cli/commands/check.ts +1 -0
- package/src/cli/commands/dev.ts +40 -1
- package/src/cli/commands/doctor.ts +90 -14
- package/src/cli/commands/eject.ts +44 -7
- package/src/cli/commands/eval.ts +2 -2
- package/src/cli/commands/init.ts +161 -41
- package/src/cli/commands/migrate.ts +121 -0
- package/src/cli/commands/preview.ts +7 -1
- package/src/cli/commands/translate.ts +2 -2
- package/src/cli/commands/upgrade.ts +141 -0
- package/src/cli/commands/version.ts +57 -44
- package/src/cli/eject-scripts.ts +121 -6
- package/src/cli/index.ts +11 -1
- package/src/cli/init/install.ts +70 -0
- package/src/cli/init/questions.ts +7 -0
- package/src/cli/init/scaffold.ts +459 -75
- package/src/cli/lazy-command.ts +37 -1
- package/src/cli/prepare.ts +40 -6
- package/src/cli/required-secrets.ts +38 -11
- package/src/cli/unknown-flags.ts +266 -0
- package/src/cli/yarn-pnp.ts +52 -0
- package/src/components/content/AccordionItem.astro +7 -1
- package/src/components/content/Card.astro +4 -3
- package/src/components/content/ColorItem.astro +22 -4
- package/src/components/content/GithubInfo.astro +2 -2
- package/src/components/content/Prompt.astro +25 -25
- package/src/components/content/Tabs.astro +3 -1
- package/src/components/content/Tile.astro +2 -3
- package/src/components/content/Tooltip.astro +57 -9
- package/src/components/content/content-strings.ts +34 -0
- package/src/components/content/diff.ts +1 -1
- package/src/components/content/mermaid-element.ts +13 -2
- package/src/components/content/prompt-markdown.ts +292 -0
- package/src/components/content/tooltip-id.ts +41 -0
- package/src/components/islands/hooks.ts +75 -3
- package/src/components/layout/Analytics.astro +21 -79
- package/src/components/layout/Banner.astro +3 -1
- package/src/components/layout/DiscoveryLinks.astro +69 -0
- package/src/components/layout/Header.astro +83 -20
- package/src/components/layout/LanguageSwitcher.astro +4 -1
- package/src/components/layout/Logo.astro +23 -2
- package/src/components/layout/NavSelector.astro +13 -2
- package/src/components/layout/NavTree.astro +12 -3
- package/src/components/layout/NavTreeScript.astro +17 -3
- package/src/components/layout/PageActions.astro +3 -3
- package/src/components/layout/PageFeedback.astro +11 -1
- package/src/components/layout/PageLayout.astro +52 -5
- package/src/components/layout/ReferenceLayout.astro +21 -12
- package/src/components/layout/RootLayout.astro +69 -43
- package/src/components/layout/Search.astro +30 -6
- package/src/components/layout/WebMcp.astro +1 -1
- package/src/components/layout/analytics-client.ts +101 -15
- package/src/components/layout/drawer-inert.ts +113 -15
- package/src/components/layout/dropdown-clamp.ts +105 -0
- package/src/components/layout/head-scripts.ts +15 -6
- package/src/components/layout/nav-utils.ts +17 -0
- package/src/components/layout/search/algolia.ts +8 -8
- package/src/components/layout/search/orama-cloud.ts +9 -7
- package/src/components/layout/search/typesense.ts +11 -17
- package/src/components/openapi/MessageComposer.astro +2 -2
- package/src/components/openapi/Playground.astro +2 -2
- package/src/components/openapi/playground-client.ts +79 -10
- package/src/core/changelog-index.ts +24 -0
- package/src/core/component-overrides.ts +399 -154
- package/src/core/config-input.ts +212 -543
- package/src/core/config.ts +130 -41
- package/src/core/custom-pages.ts +105 -0
- package/src/core/data.ts +32 -11
- package/src/core/define-components.ts +12 -9
- package/src/core/deployment-env.ts +18 -74
- package/src/core/diagnostics.ts +14 -7
- package/src/core/graph.ts +69 -25
- package/src/core/i18n-ui.ts +6 -2
- package/src/core/i18n.ts +17 -0
- package/src/core/includes.ts +156 -38
- package/src/core/last-modified.ts +6 -11
- package/src/core/links.ts +166 -2
- package/src/core/manifest.ts +10 -3
- package/src/core/navigation.ts +137 -19
- package/src/core/new-tab.ts +35 -0
- package/src/core/node-require.ts +21 -0
- package/src/core/project-graph.ts +42 -26
- package/src/core/project.ts +9 -4
- package/src/core/request-body.ts +61 -0
- package/src/core/safe-href.ts +28 -0
- package/src/core/safe-links.ts +68 -0
- package/src/core/schema.ts +531 -721
- package/src/core/server-features.ts +8 -9
- package/src/core/sources/assets.ts +47 -11
- package/src/core/sources/collection.ts +67 -0
- package/src/core/sources/contentful-rich-text.ts +285 -0
- package/src/core/sources/contentful.ts +173 -0
- package/src/core/sources/github-releases.ts +51 -1
- package/src/core/sources/json.ts +71 -0
- package/src/core/sources/lexical.ts +195 -0
- package/src/core/sources/lower.ts +226 -0
- package/src/core/sources/normalize.ts +52 -2
- package/src/core/sources/notion.ts +39 -28
- package/src/core/sources/payload.ts +135 -0
- package/src/core/sources/portable-text.ts +11 -16
- package/src/core/sources/remote.ts +226 -0
- package/src/core/sources/resolve.ts +104 -166
- package/src/core/sources/sanity.ts +16 -49
- package/src/core/sources/strapi-blocks.ts +124 -0
- package/src/core/sources/strapi.ts +191 -0
- package/src/core/sources/types.ts +12 -1
- package/src/core/types.ts +20 -1
- package/src/core/ui-packs/ar.ts +6 -2
- package/src/core/ui-packs/bg.ts +6 -2
- package/src/core/ui-packs/bn.ts +6 -2
- package/src/core/ui-packs/ca.ts +3 -1
- package/src/core/ui-packs/cs.ts +6 -2
- package/src/core/ui-packs/da.ts +6 -2
- package/src/core/ui-packs/de.ts +6 -2
- package/src/core/ui-packs/el.ts +3 -1
- package/src/core/ui-packs/es.ts +3 -1
- package/src/core/ui-packs/fa.ts +6 -2
- package/src/core/ui-packs/fi.ts +6 -2
- package/src/core/ui-packs/fr.ts +3 -1
- package/src/core/ui-packs/he.ts +6 -2
- package/src/core/ui-packs/hi.ts +6 -2
- package/src/core/ui-packs/hr.ts +6 -2
- package/src/core/ui-packs/hu.ts +6 -2
- package/src/core/ui-packs/id.ts +6 -2
- package/src/core/ui-packs/it.ts +3 -1
- package/src/core/ui-packs/ja.ts +3 -1
- package/src/core/ui-packs/ko.ts +3 -1
- package/src/core/ui-packs/nl.ts +6 -2
- package/src/core/ui-packs/no.ts +6 -2
- package/src/core/ui-packs/pl.ts +6 -2
- package/src/core/ui-packs/pt-br.ts +3 -1
- package/src/core/ui-packs/pt.ts +3 -1
- package/src/core/ui-packs/ro.ts +6 -2
- package/src/core/ui-packs/ru.ts +6 -2
- package/src/core/ui-packs/sk.ts +6 -2
- package/src/core/ui-packs/sr.ts +6 -2
- package/src/core/ui-packs/sv.ts +6 -2
- package/src/core/ui-packs/th.ts +3 -1
- package/src/core/ui-packs/tr.ts +6 -2
- package/src/core/ui-packs/uk.ts +6 -2
- package/src/core/ui-packs/vi.ts +3 -1
- package/src/core/ui-packs/zh-tw.ts +3 -1
- package/src/core/ui-packs/zh.ts +3 -1
- package/src/core/unrecognized-keys.ts +10 -0
- package/src/core/version-cut.ts +116 -8
- package/src/deploy/adapter-output.ts +57 -97
- package/src/deploy/adapters/cloudflare.ts +39 -0
- package/src/deploy/adapters/index.ts +41 -0
- package/src/deploy/adapters/netlify.ts +34 -0
- package/src/deploy/adapters/node.ts +34 -0
- package/src/deploy/adapters/registry.ts +127 -0
- package/src/deploy/adapters/types.ts +92 -0
- package/src/deploy/adapters/vercel.ts +35 -0
- package/src/deploy/artifacts.ts +67 -28
- package/src/deploy/cloudflare-negotiation.ts +179 -100
- package/src/deploy/function-bundle.ts +18 -3
- package/src/deploy/headers.ts +129 -22
- package/src/deploy/node-headers.ts +198 -0
- package/src/deploy/platforms/cloudflare.ts +312 -0
- package/src/deploy/platforms/index.ts +67 -0
- package/src/deploy/platforms/netlify.ts +52 -0
- package/src/deploy/platforms/node.ts +40 -0
- package/src/deploy/platforms/paths.ts +42 -0
- package/src/deploy/platforms/static.ts +29 -0
- package/src/deploy/platforms/types.ts +112 -0
- package/src/deploy/platforms/vercel.ts +193 -0
- package/src/deploy/redirects.ts +30 -18
- package/src/deploy/robots.ts +3 -3
- package/src/deploy/rss.ts +2 -2
- package/src/deploy/sitemap.ts +2 -2
- package/src/deploy/vercel-negotiation.ts +27 -4
- package/src/eval/agents.ts +32 -1
- package/src/eval/findings.ts +19 -11
- package/src/eval/report.ts +10 -2
- package/src/markdown/external-links.ts +65 -0
- package/src/markdown/include.ts +45 -27
- package/src/markdown/index.ts +34 -9
- package/src/markdown/inline-code.ts +12 -6
- package/src/markdown/relative-links.ts +324 -0
- package/src/markdown/themes.ts +3 -3
- package/src/migrate/migrate.ts +149 -0
- package/src/openapi/parse.ts +64 -16
- package/src/openapi/proxy.ts +62 -10
- package/src/openapi/references.ts +147 -147
- package/src/openapi/render-mdx.ts +32 -10
- package/src/openapi/scalar.ts +15 -13
- package/src/openapi/sentence.ts +14 -0
- package/src/openapi/source.ts +37 -21
- package/src/openapi/spec-dependency-error.ts +15 -0
- package/src/reference/asyncapi.ts +83 -0
- package/src/reference/graphql.ts +89 -0
- package/src/reference/index.ts +40 -0
- package/src/reference/openapi.ts +83 -0
- package/src/reference/options.ts +201 -0
- package/src/reference/scalar.ts +136 -0
- package/src/reference/schema.ts +88 -0
- package/src/registry/eject.ts +97 -42
- package/src/search/adapters/algolia.ts +46 -0
- package/src/search/adapters/flexsearch.ts +29 -0
- package/src/search/adapters/index.ts +39 -0
- package/src/search/adapters/mixedbread.ts +39 -0
- package/src/search/adapters/orama-cloud.ts +51 -0
- package/src/search/adapters/orama.ts +24 -0
- package/src/search/adapters/pagefind.ts +27 -0
- package/src/search/adapters/registry.ts +131 -0
- package/src/search/adapters/types.ts +46 -0
- package/src/search/adapters/typesense.ts +57 -0
- package/src/search/build.ts +33 -7
- package/src/search/documents.ts +6 -0
- package/src/search/sync/algolia.ts +12 -11
- package/src/search/sync/index.ts +35 -20
- package/src/search/sync/orama-cloud.ts +12 -9
- package/src/search/sync/typesense.ts +15 -13
- package/src/sources/contentful.ts +63 -0
- package/src/sources/custom.ts +38 -0
- package/src/sources/filesystem.ts +51 -0
- package/src/sources/github-releases.ts +52 -0
- package/src/sources/index.ts +60 -0
- package/src/sources/mdx-remote.ts +76 -0
- package/src/sources/notion.ts +63 -0
- package/src/sources/obsidian.ts +38 -0
- package/src/sources/payload.ts +60 -0
- package/src/sources/registry.ts +182 -0
- package/src/sources/sanity.ts +66 -0
- package/src/sources/shared.ts +52 -0
- package/src/sources/strapi.ts +58 -0
- package/src/theme/entry.ts +47 -2
- package/src/translate/report.ts +40 -7
- package/src/upgrade/upgrade.ts +499 -0
- package/dist/cli/chunk-12dxjqk7.js.map +0 -10
- package/dist/cli/chunk-196vjxp9.js.map +0 -13
- package/dist/cli/chunk-2mzebbbz.js +0 -69
- package/dist/cli/chunk-2z47ypj8.js.map +0 -11
- package/dist/cli/chunk-30e87n55.js +0 -108
- package/dist/cli/chunk-30e87n55.js.map +0 -10
- package/dist/cli/chunk-450a7rcr.js +0 -185
- package/dist/cli/chunk-450a7rcr.js.map +0 -11
- package/dist/cli/chunk-5n7t497w.js.map +0 -40
- package/dist/cli/chunk-61j18dwk.js +0 -5342
- package/dist/cli/chunk-61j18dwk.js.map +0 -58
- package/dist/cli/chunk-88by27n5.js +0 -17
- package/dist/cli/chunk-88by27n5.js.map +0 -10
- package/dist/cli/chunk-8cd8tj54.js.map +0 -34
- package/dist/cli/chunk-aztttvb3.js +0 -381
- package/dist/cli/chunk-aztttvb3.js.map +0 -12
- package/dist/cli/chunk-cvky9gb2.js.map +0 -11
- package/dist/cli/chunk-ejjx8znq.js.map +0 -15
- package/dist/cli/chunk-fmceyezb.js +0 -1007
- package/dist/cli/chunk-fmceyezb.js.map +0 -13
- package/dist/cli/chunk-hdm2dkd2.js.map +0 -48
- package/dist/cli/chunk-hs3gbh8p.js.map +0 -10
- package/dist/cli/chunk-jbj4qhfw.js +0 -30
- package/dist/cli/chunk-jbj4qhfw.js.map +0 -10
- package/dist/cli/chunk-mqb2ka8m.js +0 -68
- package/dist/cli/chunk-mqb2ka8m.js.map +0 -10
- package/dist/cli/chunk-mt76t7dj.js.map +0 -11
- package/dist/cli/chunk-q4rae3bg.js +0 -60
- package/dist/cli/chunk-q4rae3bg.js.map +0 -10
- package/dist/cli/chunk-ra1v2nc2.js +0 -35
- package/dist/cli/chunk-ra1v2nc2.js.map +0 -10
- package/dist/cli/chunk-t3tj0dgr.js.map +0 -15
- package/dist/cli/chunk-tqa1s0k8.js +0 -69
- package/dist/cli/chunk-tqa1s0k8.js.map +0 -11
- package/dist/cli/chunk-vh9w1sgp.js +0 -73
- package/dist/cli/chunk-vh9w1sgp.js.map +0 -10
- package/dist/cli/chunk-vkrsvbr5.js +0 -107
- package/dist/cli/chunk-vkrsvbr5.js.map +0 -11
- package/dist/cli/chunk-vrfp10qk.js +0 -81
- package/dist/cli/chunk-vrfp10qk.js.map +0 -10
- package/dist/cli/chunk-wjt80jps.js +0 -1049
- package/dist/cli/chunk-wjt80jps.js.map +0 -24
- package/docs/advanced/api-reference.mdx +0 -240
- package/docs/reference/cli.mdx +0 -197
- package/skills/blume-migrate/assets/oxfmt@0.55.0.patch +0 -20
- package/src/components/content/changelog-element.ts +0 -69
- package/src/search/providers.ts +0 -91
- /package/dist/cli/{chunk-3w7b2vcx.js.map → chunk-7ez8ny0t.js.map} +0 -0
- /package/dist/cli/{chunk-688e0dde.js.map → chunk-88cpgt6h.js.map} +0 -0
- /package/dist/cli/{chunk-exeeb35e.js.map → chunk-f7t03s3g.js.map} +0 -0
- /package/dist/cli/{chunk-ppfvdcd4.js.map → chunk-zxccj738.js.map} +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { BlumeConfig } from "./config-input.ts";
|
|
2
|
+
import { BlumeError } from "./diagnostics.ts";
|
|
2
3
|
import type { ResolvedConfig } from "./schema.ts";
|
|
3
4
|
import type { Diagnostic } from "./types.ts";
|
|
4
5
|
/**
|
|
@@ -35,10 +36,12 @@ import type { Diagnostic } from "./types.ts";
|
|
|
35
36
|
* dismissible }`.
|
|
36
37
|
*
|
|
37
38
|
* **Content & navigation**
|
|
38
|
-
* - `content` — where content lives
|
|
39
|
-
* `sources` (filesystem
|
|
40
|
-
*
|
|
41
|
-
*
|
|
39
|
+
* - `content` — where content lives: adapters from `blume/sources` under
|
|
40
|
+
* `sources` (`filesystem({ root })`, `mdxRemote({…})`, `githubReleases({…})`,
|
|
41
|
+
* `sanity({…})`, `notion({…})`, `contentful({…})`, `payload({…})`,
|
|
42
|
+
* `strapi({…})`, `obsidian({…})`, or `custom(source)`), or the
|
|
43
|
+
* zero-config shorthand `root`/`include`/`exclude`, which desugars to one
|
|
44
|
+
* `filesystem()` source and can't be combined with `sources`.
|
|
42
45
|
* - `navigation` — sidebar, header `tabs`, `selectors` (version/language/product
|
|
43
46
|
* switchers), pinned `featured` links, header `actions` and the one `cta`,
|
|
44
47
|
* and the `repo` link (a toggle, or a URL). Omit `sidebar` to generate it
|
|
@@ -60,35 +63,41 @@ import type { Diagnostic } from "./types.ts";
|
|
|
60
63
|
* - `export` — reader-facing PDF/EPUB export actions (off by default).
|
|
61
64
|
*
|
|
62
65
|
* **Reference docs**
|
|
63
|
-
* - `
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
* are normalized to 3.x
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
66
|
+
* - `reference` — API references as a list of adapters from
|
|
67
|
+
* `blume/reference`: `openapi({…})` and `asyncapi({…})` render native pages
|
|
68
|
+
* (one real page per operation, woven into the sidebar and search; AsyncAPI
|
|
69
|
+
* 2.x specs are normalized to 3.x), `graphql({…})` renders a schema, and
|
|
70
|
+
* `scalar({…})` embeds the Scalar reference instead.
|
|
71
|
+
*
|
|
72
|
+
* **Search, AI & agents**
|
|
73
|
+
* - `search` — a search adapter from `blume/search` (`orama()` by default;
|
|
74
|
+
* `flexsearch()`, `pagefind()`, `algolia({…})`, `oramaCloud({…})`,
|
|
75
|
+
* `typesense({…})`, `mixedbread({…})`, or `false`), or `{ provider,
|
|
76
|
+
* popular, indexing }` to add curated links and indexing settings.
|
|
77
|
+
* - `ai` — what faces a model at read time: `ask` (the Ask AI assistant, with
|
|
78
|
+
* a provider adapter from `blume/ai` such as `gateway()` or `openrouter()`)
|
|
79
|
+
* and `openInChat` (the "Open in chat" page action).
|
|
80
|
+
* - `agents` — the machine-readable surface: `llmsTxt`, the JSON `api`, the
|
|
81
|
+
* `mcp` server, published `skills`, `markdownComponents` (Markdown
|
|
82
|
+
* serializers for custom components), the `catalog` manifests,
|
|
83
|
+
* `agentReadability`, robots `contentSignals`, `webmcp`, and `webBotAuth`.
|
|
76
84
|
*
|
|
77
85
|
* **SEO, feeds & analytics**
|
|
78
|
-
* - `seo` — `og` images, `sitemap`, `robots`, `rss` feeds,
|
|
79
|
-
* JSON-LD
|
|
80
|
-
* - `analytics` —
|
|
81
|
-
*
|
|
86
|
+
* - `seo` — `og` images, `sitemap`, `robots`, `rss` feeds, and
|
|
87
|
+
* `structuredData` JSON-LD.
|
|
88
|
+
* - `analytics` — a list of adapters from `blume/analytics`, one per provider
|
|
89
|
+
* (`posthog()`, `googleAnalytics()`, `plausible()`, `fathom()`, `vercel()`,
|
|
90
|
+
* `cloudflare()`, …), or `script()` for anything without one.
|
|
82
91
|
*
|
|
83
92
|
* **Astro**
|
|
84
93
|
* - `integrations` — Astro integrations appended after Blume's built-ins, in
|
|
85
94
|
* declaration order. Install and maintain each integration in the site.
|
|
86
95
|
*
|
|
87
96
|
* **Deployment & i18n**
|
|
88
|
-
* - `deployment` —
|
|
89
|
-
* `
|
|
90
|
-
*
|
|
91
|
-
* Cloudflare from the platform env.
|
|
97
|
+
* - `deployment` — a host adapter from `blume/deploy` (`vercel()`, `node()`,
|
|
98
|
+
* `netlify()`, `cloudflare()`) for a server build, each taking `site`,
|
|
99
|
+
* `base`, and `output`; or `{ site, base }` for a static build anywhere.
|
|
100
|
+
* `site` is auto-detected on Vercel/Netlify/Cloudflare from the platform env.
|
|
92
101
|
* - `i18n` — opt-in multi-locale: `locales`, `defaultLocale`, `parser`
|
|
93
102
|
* (`dir` vs filename `dot` suffix), and per-locale UI overrides.
|
|
94
103
|
*
|
|
@@ -103,33 +112,41 @@ import type { Diagnostic } from "./types.ts";
|
|
|
103
112
|
*
|
|
104
113
|
* @example A production docs site with theming, search, and deployment.
|
|
105
114
|
* ```ts
|
|
115
|
+
* import { vercel } from "blume/deploy";
|
|
116
|
+
* import { orama } from "blume/search";
|
|
117
|
+
*
|
|
106
118
|
* export default defineConfig({
|
|
107
119
|
* title: "Acme Docs",
|
|
108
120
|
* description: "Build faster with Acme.",
|
|
109
121
|
* logo: { image: "/logo.svg", text: "Acme" },
|
|
110
122
|
* github: { owner: "acme", repo: "acme" },
|
|
111
|
-
* theme: { accent: "
|
|
123
|
+
* theme: { accent: "purple", fonts: { body: "inter" }, radius: "lg" },
|
|
112
124
|
* navigation: {
|
|
113
125
|
* tabs: [
|
|
114
126
|
* { label: "Guides", path: "/guides" },
|
|
115
127
|
* { label: "API", path: "/api" },
|
|
116
128
|
* ],
|
|
117
129
|
* },
|
|
118
|
-
* search:
|
|
119
|
-
*
|
|
130
|
+
* search: orama(),
|
|
131
|
+
* // A server build on Vercel.
|
|
132
|
+
* deployment: vercel({ site: "https://docs.acme.com" }),
|
|
120
133
|
* });
|
|
121
134
|
* ```
|
|
122
135
|
*
|
|
123
136
|
* @example An OpenAPI reference with the Ask AI assistant enabled.
|
|
124
137
|
* ```ts
|
|
138
|
+
* import { openapi } from "blume/reference";
|
|
139
|
+
*
|
|
125
140
|
* export default defineConfig({
|
|
126
141
|
* title: "Acme API",
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
*
|
|
142
|
+
* reference: [
|
|
143
|
+
* openapi({
|
|
144
|
+
* route: "/reference",
|
|
145
|
+
* sources: [{ label: "Core", spec: "./openapi.json" }],
|
|
146
|
+
* }),
|
|
147
|
+
* ],
|
|
148
|
+
* agents: { llmsTxt: true },
|
|
149
|
+
* ai: { ask: { enabled: true } },
|
|
133
150
|
* });
|
|
134
151
|
* ```
|
|
135
152
|
*
|
|
@@ -138,6 +155,15 @@ import type { Diagnostic } from "./types.ts";
|
|
|
138
155
|
* @see https://useblume.dev/docs for the full configuration reference.
|
|
139
156
|
*/
|
|
140
157
|
export declare const defineConfig: (config: BlumeConfig) => BlumeConfig;
|
|
158
|
+
/**
|
|
159
|
+
* A config that fails validation. `diagnostic` folds every issue into the one
|
|
160
|
+
* message a command prints; `issues` keeps each on its own, with its own
|
|
161
|
+
* line, for `blume upgrade`, which lists them one by one.
|
|
162
|
+
*/
|
|
163
|
+
export declare class ConfigValidationError extends BlumeError {
|
|
164
|
+
readonly issues: Diagnostic[];
|
|
165
|
+
constructor(diagnostic: Diagnostic, issues: Diagnostic[]);
|
|
166
|
+
}
|
|
141
167
|
/** Result of loading + validating a project config. */
|
|
142
168
|
export interface ConfigLoadResult {
|
|
143
169
|
config: ResolvedConfig;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { ContentSource } from "./sources/types.ts";
|
|
2
|
+
import type { PageRecord } from "./types.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Colocated content images — `` next to the page that
|
|
5
|
+
* references it. The HTML render optimizes these through `astro:assets` into
|
|
6
|
+
* hashed `_astro/` files, but that mapping doesn't exist yet when the raw
|
|
7
|
+
* agent-facing Markdown (`/<route>.md`, llms-full.txt, MCP) is snapshotted at
|
|
8
|
+
* generate time — so a verbatim relative path would 404 for every agent
|
|
9
|
+
* fetching the page by URL. Instead, the originals are served at
|
|
10
|
+
* `/blume-assets/content/<project-relative path>` by a generated endpoint (see
|
|
11
|
+
* `contentAssetsEndpointTemplate`), and these helpers rewrite the relative
|
|
12
|
+
* references in agent-facing output to that URL.
|
|
13
|
+
*/
|
|
14
|
+
/** The endpoint route prefix colocated content images are served under. */
|
|
15
|
+
export declare const CONTENT_ASSETS_PREFIX = "/blume-assets/content";
|
|
16
|
+
/**
|
|
17
|
+
* The endpoint param a colocated image is served under: its project-relative
|
|
18
|
+
* path (readable, collision-free — it mirrors the source tree). A file outside
|
|
19
|
+
* the project root can't be addressed that way (`..` segments don't survive a
|
|
20
|
+
* URL), so it falls back to a content-addressed name.
|
|
21
|
+
*/
|
|
22
|
+
export declare const contentAssetParam: (projectRoot: string, absPath: string) => string;
|
|
23
|
+
/**
|
|
24
|
+
* Whether a target is *shaped* like a colocated image reference: a relative
|
|
25
|
+
* filesystem path with an image extension. Exported so link validation can
|
|
26
|
+
* tell "not a colocated candidate" apart from "a candidate that resolves
|
|
27
|
+
* nowhere" — the former falls through to the public-dir probe, the latter is
|
|
28
|
+
* a broken reference beside the page source.
|
|
29
|
+
*/
|
|
30
|
+
export declare const isRelativeImageTarget: (target: string) => boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Resolve one image target against its page's directory. Returns the absolute
|
|
33
|
+
* file path when the target is relative, is an image, and exists on disk —
|
|
34
|
+
* anything else (remote URLs, `public/` absolutes, broken refs, code-block
|
|
35
|
+
* examples that happen to look like paths) is null and left untouched. Shared
|
|
36
|
+
* with link validation, so what counts as a colocated image is decided once.
|
|
37
|
+
*/
|
|
38
|
+
export declare const resolveRelativeImage: (sourceDir: string, target: string) => string | null;
|
|
39
|
+
/**
|
|
40
|
+
* Rewrite a page's relative image references to their served
|
|
41
|
+
* `/blume-assets/content/…` URLs (under `deployment.base` when set). Fenced
|
|
42
|
+
* code blocks and inline code are skipped; only references whose file actually
|
|
43
|
+
* exists next to the source are touched. `register` observes each rewritten
|
|
44
|
+
* asset so a caller can accumulate the files the endpoint must serve.
|
|
45
|
+
*/
|
|
46
|
+
export declare const rewriteRelativeImages: (options: {
|
|
47
|
+
source: string;
|
|
48
|
+
sourcePath: string;
|
|
49
|
+
projectRoot: string;
|
|
50
|
+
deployBase?: string;
|
|
51
|
+
register?: (param: string, absPath: string) => void;
|
|
52
|
+
}) => string;
|
|
53
|
+
/**
|
|
54
|
+
* Every colocated image the project's pages reference, keyed by endpoint param.
|
|
55
|
+
* Serialized to `generated/content-assets.json`, which the
|
|
56
|
+
* `/blume-assets/[...asset]` endpoint reads to serve the original files. Runs
|
|
57
|
+
* the same rewrite the agent-Markdown builders apply — over the same
|
|
58
|
+
* include-expanded text, so a partial's colocated images (rebased into the
|
|
59
|
+
* including page by the expander) are served too — keeping the served set and
|
|
60
|
+
* the rewritten URLs from drifting apart.
|
|
61
|
+
*/
|
|
62
|
+
export declare const collectContentAssets: (project: {
|
|
63
|
+
context: {
|
|
64
|
+
root: string;
|
|
65
|
+
};
|
|
66
|
+
manifest: {
|
|
67
|
+
routes: {
|
|
68
|
+
id: string;
|
|
69
|
+
sourcePath?: string;
|
|
70
|
+
}[];
|
|
71
|
+
};
|
|
72
|
+
graph: {
|
|
73
|
+
pages: PageRecord[];
|
|
74
|
+
};
|
|
75
|
+
sources?: ContentSource[];
|
|
76
|
+
}) => Promise<Record<string, string>>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom `.astro` pages (the `pages/` folder): discovery and the routes they
|
|
3
|
+
* serve. Lives in core so the content graph can see them too — a header tab or
|
|
4
|
+
* brand link that points at a custom page must know the page exists only at
|
|
5
|
+
* its own path, not under every locale prefix.
|
|
6
|
+
*/
|
|
7
|
+
/** A user `.astro` page and the route pattern Blume injects it at. */
|
|
8
|
+
export interface CustomPageRoute {
|
|
9
|
+
/** Route pattern, e.g. `/changelog` or `/examples/[slug]`. */
|
|
10
|
+
pattern: string;
|
|
11
|
+
/** Absolute path to the user's `.astro` page file. */
|
|
12
|
+
entrypoint: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Discover user `.astro` pages and map them to route patterns. Files keep their
|
|
16
|
+
* original location; only the route pattern is derived (index -> parent,
|
|
17
|
+
* dynamic `[param]` segments preserved).
|
|
18
|
+
*/
|
|
19
|
+
export declare const discoverPages: (pagesRoot: string) => Promise<CustomPageRoute[]>;
|
|
20
|
+
/** {@link discoverPages} for synchronous callers (e.g. the sitemap builder). */
|
|
21
|
+
export declare const discoverPagesSync: (pagesRoot: string) => CustomPageRoute[];
|
|
22
|
+
/** Segments of a static, shareable page pattern; null for dynamic/private ones. */
|
|
23
|
+
export declare const staticSegments: (pattern: string) => string[] | null;
|
|
24
|
+
/**
|
|
25
|
+
* The static routes served by custom `.astro` pages — the same filtering as
|
|
26
|
+
* the generated OG cards, but yielding the routes themselves. Feeds the route
|
|
27
|
+
* sets that must know every servable page beyond the content graph (the link
|
|
28
|
+
* checker, the sitemap); dynamic (`[param]`) and private segments are skipped
|
|
29
|
+
* because their concrete URLs can't be enumerated statically.
|
|
30
|
+
*/
|
|
31
|
+
export declare const customStaticRoutes: (pages: {
|
|
32
|
+
pattern: string;
|
|
33
|
+
}[]) => string[];
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import type { SearchAdapterKind } from "../search/adapters/registry.ts";
|
|
1
2
|
import type { StructuredDataIdentity } from "../seo/jsonld.ts";
|
|
2
3
|
import type { FontHead } from "../theme/fonts.ts";
|
|
3
4
|
import type { UIStrings } from "./i18n-ui.ts";
|
|
4
|
-
import type { ResolvedConfig
|
|
5
|
+
import type { ResolvedConfig } from "./schema.ts";
|
|
5
6
|
import type { Navigation, RouteAlternate, VersionAlternate } from "./types.ts";
|
|
6
7
|
/**
|
|
7
8
|
* The shape of the `blume:data` virtual module — the resolved, serializable
|
|
@@ -102,6 +103,11 @@ export interface BlumeRoute {
|
|
|
102
103
|
lastModified: string | null;
|
|
103
104
|
/** Resolved locale code (the default locale when not under i18n). */
|
|
104
105
|
locale: string;
|
|
106
|
+
/**
|
|
107
|
+
* True when the page's source publishes one language only (GitHub
|
|
108
|
+
* Releases), so the page renders without a language switcher.
|
|
109
|
+
*/
|
|
110
|
+
monolingual: boolean;
|
|
105
111
|
path: string;
|
|
106
112
|
title: string;
|
|
107
113
|
/** Resolved docs version (`""` for the current docs). */
|
|
@@ -115,7 +121,8 @@ export interface BlumeRoute {
|
|
|
115
121
|
}
|
|
116
122
|
/** Site-wide settings derived from `blume.config` — the `config` field of {@link BlumeData}. */
|
|
117
123
|
export interface BlumeDataConfig {
|
|
118
|
-
|
|
124
|
+
/** Analytics adapter descriptors, in configured order; empty when none. */
|
|
125
|
+
analytics: ResolvedConfig["analytics"];
|
|
119
126
|
/** Apple touch icon, or `null` when none is configured/detected. */
|
|
120
127
|
appleIcon: BlumeFavicon | null;
|
|
121
128
|
/** Ask AI empty-state suggestions, or `null` when Ask AI is off. */
|
|
@@ -126,23 +133,26 @@ export interface BlumeDataConfig {
|
|
|
126
133
|
banner: BlumeBanner | null;
|
|
127
134
|
/** Site-wide route mount point, normalized to `""` or `/seg` (see config). */
|
|
128
135
|
basePath: string;
|
|
129
|
-
/** `markdown.
|
|
130
|
-
codeThemes: ResolvedConfig["markdown"]["
|
|
136
|
+
/** `markdown.code.theme`: light/dark Shiki themes for code surfaces. */
|
|
137
|
+
codeThemes: ResolvedConfig["markdown"]["code"]["theme"];
|
|
131
138
|
/** `markdown.code.wrap`: wrap long code lines instead of scrolling. */
|
|
132
139
|
codeWrap: boolean;
|
|
133
140
|
/** `dateFormat`: `Intl.DateTimeFormat` options for the date stamps. */
|
|
134
141
|
dateFormat: ResolvedConfig["dateFormat"];
|
|
135
142
|
description: string | undefined;
|
|
136
143
|
/**
|
|
137
|
-
* Which agent-discovery resources exist for
|
|
138
|
-
* page's `<head>` (`
|
|
139
|
-
*
|
|
140
|
-
*
|
|
144
|
+
* Which agent-discovery resources exist for every layout to advertise in its
|
|
145
|
+
* page's `<head>` (`agents.agentReadability`, `agents.llmsTxt.enabled`) via
|
|
146
|
+
* the shared `DiscoveryLinks.astro` partial — the HTML counterpart of the
|
|
147
|
+
* homepage-only HTTP `Link` header, for agents that enter on a deep page
|
|
148
|
+
* (see `ai/link-headers.ts`). `sitemap` (`seo.sitemap` with a
|
|
141
149
|
* `deployment.site`, the condition under which one is emitted) feeds the
|
|
142
150
|
* 404 page's recovery links rather than the head.
|
|
143
151
|
*/
|
|
144
152
|
discovery: {
|
|
145
153
|
agentReadability: boolean;
|
|
154
|
+
/** Whether the AI Catalog / ARD manifest is published (`agents.catalog`). */
|
|
155
|
+
aiCatalog: boolean;
|
|
146
156
|
/** Whether the JSON docs API and its `/openapi.json` are published. */
|
|
147
157
|
api: boolean;
|
|
148
158
|
llmsTxt: boolean;
|
|
@@ -216,7 +226,8 @@ export interface BlumeDataConfig {
|
|
|
216
226
|
label: string;
|
|
217
227
|
route: string;
|
|
218
228
|
}[];
|
|
219
|
-
|
|
229
|
+
/** The configured adapter's kind (`none` when search is disabled). */
|
|
230
|
+
provider: SearchAdapterKind;
|
|
220
231
|
};
|
|
221
232
|
/** Deployment site URL, or `null` when none is configured/detected. */
|
|
222
233
|
site: string | null;
|
|
@@ -226,8 +237,8 @@ export interface BlumeDataConfig {
|
|
|
226
237
|
/** Table-of-contents settings: whether to show it and the heading range. */
|
|
227
238
|
toc: ResolvedConfig["toc"];
|
|
228
239
|
/**
|
|
229
|
-
* WebMCP in-page tools (`
|
|
230
|
-
* list tool to fetch (`
|
|
240
|
+
* WebMCP in-page tools (`agents.webmcp`), plus whether llms.txt exists for the
|
|
241
|
+
* list tool to fetch (`agents.llmsTxt.enabled`).
|
|
231
242
|
*/
|
|
232
243
|
/** Docs versioning config; `null` when the site is unversioned. */
|
|
233
244
|
versions: NonNullable<ResolvedConfig["versions"]> | null;
|
|
@@ -241,6 +252,12 @@ export interface BlumeDataConfig {
|
|
|
241
252
|
handle?: string;
|
|
242
253
|
};
|
|
243
254
|
}
|
|
255
|
+
/**
|
|
256
|
+
* The `discovery` flags the head partial (`components/layout/DiscoveryLinks.astro`)
|
|
257
|
+
* advertises — every layout's `discovery` prop is typed from here so a renamed
|
|
258
|
+
* or added flag surfaces in the shells at typecheck instead of drifting.
|
|
259
|
+
*/
|
|
260
|
+
export type DiscoveryHeadLinks = Pick<BlumeDataConfig["discovery"], "agentReadability" | "aiCatalog" | "llmsTxt">;
|
|
244
261
|
/**
|
|
245
262
|
* The compact snapshot the layout serializes into the page for React island
|
|
246
263
|
* hooks (`blume/hooks`). Islands hydrate independently, so this is read from a
|
|
@@ -13,18 +13,21 @@ export interface IslandDescriptor {
|
|
|
13
13
|
}
|
|
14
14
|
/** A component override: a static component or a hydrated island. */
|
|
15
15
|
export type ComponentOverride = ComponentReference | IslandDescriptor;
|
|
16
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* User-authored component overrides, grouped by surface. Blume reads this file
|
|
18
|
+
* statically (never executing it), so every entry must be an imported
|
|
19
|
+
* identifier, a path string, or a `{ component, client, media }` object literal
|
|
20
|
+
* — an entry with a `client` mode is an island, hydrated through a generated
|
|
21
|
+
* wrapper.
|
|
22
|
+
*/
|
|
17
23
|
export interface ComponentOverrides {
|
|
18
|
-
/**
|
|
19
|
-
* Interactive framework components made available in every `.mdx` page. Like
|
|
20
|
-
* `mdx`, but hydrated: entries default to `client: "visible"`. Shorthand for
|
|
21
|
-
* an `mdx` descriptor with a client mode, and the config-file equivalent of
|
|
22
|
-
* dropping a component in the `islands/` folder.
|
|
23
|
-
*/
|
|
24
|
-
islands?: Record<string, ComponentOverride>;
|
|
25
24
|
/** Layout slot overrides (`Header`, `Sidebar`, `Footer`, ...). */
|
|
26
25
|
layout?: Record<string, ComponentOverride>;
|
|
27
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* MDX component map overrides (`Callout`, `Card`, ...) and additions,
|
|
28
|
+
* available in every `.mdx` page. Give an entry a `client` mode to hydrate
|
|
29
|
+
* it — the config-file equivalent of dropping a component in `islands/`.
|
|
30
|
+
*/
|
|
28
31
|
mdx?: Record<string, ComponentOverride>;
|
|
29
32
|
}
|
|
30
33
|
/**
|
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
import type { ResolvedConfig } from "./schema.ts";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
* Fill in `deployment.adapter` and `deployment.site` from platform env vars
|
|
10
|
-
* (Vercel, Netlify, Cloudflare Pages) when the user hasn't set them. Explicit
|
|
11
|
-
* config always wins, and the adapter is only inferred for server output (it
|
|
12
|
-
* has no effect on static builds). Mirrors Astro's platform auto-detection so a
|
|
13
|
-
* project deployed to a known host gets a working canonical origin for free.
|
|
3
|
+
* Fill in the deployment `site` from platform env vars (Vercel, Netlify,
|
|
4
|
+
* Cloudflare Pages) when the config hasn't set one. Explicit config always
|
|
5
|
+
* wins. Each adapter's platform declares its own detection and URL vars (see
|
|
6
|
+
* `deploy/platforms/*`); the configured adapter is asked first, then every
|
|
7
|
+
* other platform, so a static build deployed to a known host gets a working
|
|
8
|
+
* canonical origin for free, mirroring Astro's platform auto-detection.
|
|
14
9
|
*/
|
|
15
10
|
export declare const applyDeploymentEnv: (config: ResolvedConfig, env?: NodeJS.ProcessEnv) => ResolvedConfig;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import baseMatter from "gray-matter";
|
|
2
|
+
type MatterInput = Parameters<typeof baseMatter>[0];
|
|
3
|
+
type MatterOptions = Parameters<typeof baseMatter>[1];
|
|
4
|
+
type ReadArgs = Parameters<typeof baseMatter.read>;
|
|
5
|
+
type StringifyArgs = Parameters<typeof baseMatter.stringify>;
|
|
6
|
+
declare const matter: ((input: MatterInput, options?: MatterOptions) => baseMatter.GrayMatterFile<baseMatter.Input>) & typeof baseMatter & {
|
|
7
|
+
read: (filepath: ReadArgs[0], options?: ReadArgs[1]) => baseMatter.GrayMatterFile<string>;
|
|
8
|
+
stringify: (file: StringifyArgs[0], data: StringifyArgs[1], options?: StringifyArgs[2]) => string;
|
|
9
|
+
};
|
|
10
|
+
export default matter;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { FolderMeta, ResolvedConfig, ResolvedI18nConfig, ResolvedVersionsConfig } from "./schema.ts";
|
|
2
|
+
import type { ContentGraph, PageRecord } from "./types.ts";
|
|
3
|
+
interface BuildContentGraphOptions {
|
|
4
|
+
/** Site-wide route mount point (`""` or `/seg`); invisible to the nav tree. */
|
|
5
|
+
basePath?: string;
|
|
6
|
+
/** The header brand link as configured (`logo.href`, default `/`). */
|
|
7
|
+
brandHref?: string;
|
|
8
|
+
/** Routes served outside the content tree that tabs may link to directly. */
|
|
9
|
+
extraRoutes?: ReadonlySet<string>;
|
|
10
|
+
folderMeta: Map<string, FolderMeta>;
|
|
11
|
+
sharedFolderMeta?: Map<string, FolderMeta>;
|
|
12
|
+
navigation: ResolvedConfig["navigation"];
|
|
13
|
+
i18n?: ResolvedI18nConfig;
|
|
14
|
+
versions?: ResolvedVersionsConfig;
|
|
15
|
+
}
|
|
16
|
+
/** Assemble the content graph: routes map, nav, and duplicate diagnostics. */
|
|
17
|
+
export declare const buildContentGraph: (pages: PageRecord[], options: BuildContentGraphOptions) => ContentGraph;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trailing heading markers, matching Fumadocs' syntax so migrated content works
|
|
3
|
+
* verbatim: `## Heading [#custom-id]` pins the anchor id, `## Heading [!toc]`
|
|
4
|
+
* keeps the heading on the page but out of the table of contents, and
|
|
5
|
+
* `## Heading [toc]` shows it only in the table of contents. Markers chain in
|
|
6
|
+
* any order (`## Heading [toc] [#id]`). The `{#id}` pin of Pandoc, kramdown,
|
|
7
|
+
* and Markdown-based specification toolchains is accepted as an equivalent of
|
|
8
|
+
* `[#id]` — in `.md` verbatim, in `.mdx` only as the escape `\{#id\}` (a bare
|
|
9
|
+
* `{…}` there is a JSX expression; the scan-time scanner reports one as
|
|
10
|
+
* `BLUME_MDX_CURLY_ANCHOR`). Both pipelines resolve escapes before parsing
|
|
11
|
+
* markers, so the escaped and bare spellings reach this parser identically.
|
|
12
|
+
*
|
|
13
|
+
* Both heading pipelines share this parser — the render-time hast plugin
|
|
14
|
+
* (`markdown/heading-anchors.ts`) and the scan-time source scanner
|
|
15
|
+
* (`core/sources/normalize.ts`) — so the rendered `id`, the TOC entry, and the
|
|
16
|
+
* anchor index `blume validate` checks against always agree.
|
|
17
|
+
*/
|
|
18
|
+
import type GithubSlugger from "github-slugger";
|
|
19
|
+
/**
|
|
20
|
+
* Frontmatter key carrying the slugs of `[!toc]` headings out of a render. The
|
|
21
|
+
* hast plugin pushes onto it and the generated page template reads it back via
|
|
22
|
+
* `remarkPluginFrontmatter` to filter the TOC.
|
|
23
|
+
*/
|
|
24
|
+
export declare const TOC_HIDDEN_KEY = "__blumeTocHidden";
|
|
25
|
+
/**
|
|
26
|
+
* Register a pinned `[#id]` with the document slugger, the way
|
|
27
|
+
* `GithubSlugger#slug` registers the slugs it returns — so a later heading
|
|
28
|
+
* whose auto-slug collides disambiguates (`setup` → `setup-1`) instead of
|
|
29
|
+
* silently duplicating the anchor id. An id that is already taken is left
|
|
30
|
+
* untouched (the pin still uses it verbatim; duplicate pins are the author's
|
|
31
|
+
* explicit choice).
|
|
32
|
+
*/
|
|
33
|
+
export declare const occupySlug: (slugger: GithubSlugger, id: string) => void;
|
|
34
|
+
export interface HeadingMarkers {
|
|
35
|
+
/** Author-pinned anchor id from `[#id]` or `{#id}`, used verbatim (never re-slugged). */
|
|
36
|
+
id?: string;
|
|
37
|
+
/** The heading text with every trailing marker stripped. */
|
|
38
|
+
text: string;
|
|
39
|
+
/** `[!toc]` hides the heading from the TOC; `[toc]` shows it only there. */
|
|
40
|
+
toc?: "hide" | "only";
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Split trailing markers off a heading's text. Only markers at the very end of
|
|
44
|
+
* the heading count (mid-text brackets are ordinary prose); when a marker kind
|
|
45
|
+
* repeats, the last one written wins.
|
|
46
|
+
*
|
|
47
|
+
* `isRefDefined` reports whether a link-reference definition exists for a
|
|
48
|
+
* bracket's label (`toc`, `!toc`, `#id`): a defined bracket is a CommonMark
|
|
49
|
+
* shortcut link, not a marker — the renderer sees a resolved `<a>` element
|
|
50
|
+
* there and strips nothing at or before it, so the parse stops the same way.
|
|
51
|
+
* The render-time hast plugin never passes it (resolved links are already
|
|
52
|
+
* elements by the time it runs); the raw-source scanner does.
|
|
53
|
+
*/
|
|
54
|
+
export declare const parseHeadingMarkers: (text: string, isRefDefined?: (label: string) => boolean) => HeadingMarkers;
|
|
@@ -49,10 +49,11 @@ declare const uiStringsObject: z.ZodObject<{
|
|
|
49
49
|
}, z.core.$strip>>;
|
|
50
50
|
changelog: z.ZodPrefault<z.ZodObject<{
|
|
51
51
|
description: z.ZodDefault<z.ZodString>;
|
|
52
|
-
showReleases: z.ZodDefault<z.ZodString>;
|
|
53
52
|
title: z.ZodDefault<z.ZodString>;
|
|
54
53
|
}, z.core.$strip>>;
|
|
55
54
|
content: z.ZodPrefault<z.ZodObject<{
|
|
55
|
+
copyColor: z.ZodDefault<z.ZodString>;
|
|
56
|
+
copyPrompt: z.ZodDefault<z.ZodString>;
|
|
56
57
|
diagramError: z.ZodDefault<z.ZodString>;
|
|
57
58
|
}, z.core.$strip>>;
|
|
58
59
|
feedback: z.ZodPrefault<z.ZodObject<{
|
|
@@ -73,6 +74,7 @@ declare const uiStringsObject: z.ZodObject<{
|
|
|
73
74
|
featured: z.ZodDefault<z.ZodString>;
|
|
74
75
|
githubRepository: z.ZodDefault<z.ZodString>;
|
|
75
76
|
navigation: z.ZodDefault<z.ZodString>;
|
|
77
|
+
opensInNewTab: z.ZodDefault<z.ZodString>;
|
|
76
78
|
primary: z.ZodDefault<z.ZodString>;
|
|
77
79
|
sections: z.ZodDefault<z.ZodString>;
|
|
78
80
|
toggleNavigation: z.ZodDefault<z.ZodString>;
|
|
@@ -163,10 +165,11 @@ export declare const uiStringsSchema: z.ZodPrefault<z.ZodObject<{
|
|
|
163
165
|
}, z.core.$strip>>;
|
|
164
166
|
changelog: z.ZodPrefault<z.ZodObject<{
|
|
165
167
|
description: z.ZodDefault<z.ZodString>;
|
|
166
|
-
showReleases: z.ZodDefault<z.ZodString>;
|
|
167
168
|
title: z.ZodDefault<z.ZodString>;
|
|
168
169
|
}, z.core.$strip>>;
|
|
169
170
|
content: z.ZodPrefault<z.ZodObject<{
|
|
171
|
+
copyColor: z.ZodDefault<z.ZodString>;
|
|
172
|
+
copyPrompt: z.ZodDefault<z.ZodString>;
|
|
170
173
|
diagramError: z.ZodDefault<z.ZodString>;
|
|
171
174
|
}, z.core.$strip>>;
|
|
172
175
|
feedback: z.ZodPrefault<z.ZodObject<{
|
|
@@ -187,6 +190,7 @@ export declare const uiStringsSchema: z.ZodPrefault<z.ZodObject<{
|
|
|
187
190
|
featured: z.ZodDefault<z.ZodString>;
|
|
188
191
|
githubRepository: z.ZodDefault<z.ZodString>;
|
|
189
192
|
navigation: z.ZodDefault<z.ZodString>;
|
|
193
|
+
opensInNewTab: z.ZodDefault<z.ZodString>;
|
|
190
194
|
primary: z.ZodDefault<z.ZodString>;
|
|
191
195
|
sections: z.ZodDefault<z.ZodString>;
|
|
192
196
|
toggleNavigation: z.ZodDefault<z.ZodString>;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { ResolvedConfig, ResolvedI18nConfig, ResolvedVersionsConfig } from "./schema.ts";
|
|
2
|
+
import type { Diagnostic, PageRecord } from "./types.ts";
|
|
3
|
+
/** True when the project opts into i18n. */
|
|
4
|
+
export declare const i18nEnabled: (config: ResolvedConfig) => config is ResolvedConfig & {
|
|
5
|
+
i18n: ResolvedI18nConfig;
|
|
6
|
+
};
|
|
7
|
+
/** All configured locale codes, default first as authored. */
|
|
8
|
+
export declare const localeCodes: (i18n: ResolvedI18nConfig) => string[];
|
|
9
|
+
/** Text direction for a locale (`ltr` when unknown). */
|
|
10
|
+
export declare const localeDir: (code: string, i18n: ResolvedI18nConfig) => "ltr" | "rtl";
|
|
11
|
+
/**
|
|
12
|
+
* The locale a missing translation falls back to: `fallbackLocale` when set,
|
|
13
|
+
* the default locale when `fallbackLocale` is omitted, or `null` (disabled)
|
|
14
|
+
* when explicitly set to `null`.
|
|
15
|
+
*/
|
|
16
|
+
export declare const resolveFallbackLocale: (i18n: ResolvedI18nConfig) => string | null;
|
|
17
|
+
/**
|
|
18
|
+
* The slice of the i18n settings URL routing reads. `ResolvedI18nConfig` and
|
|
19
|
+
* the `blume:data` runtime shape both satisfy it, so route helpers serve the
|
|
20
|
+
* Node-side graph and the rendered page alike.
|
|
21
|
+
*/
|
|
22
|
+
export interface LocaleRouting {
|
|
23
|
+
defaultLocale: string;
|
|
24
|
+
hideDefaultLocalePrefix: boolean;
|
|
25
|
+
locales: {
|
|
26
|
+
code: string;
|
|
27
|
+
}[];
|
|
28
|
+
}
|
|
29
|
+
/** URL prefix for a locale: `""` for the hidden default, else `/<code>`. */
|
|
30
|
+
export declare const localePrefix: (code: string, i18n: LocaleRouting) => string;
|
|
31
|
+
/**
|
|
32
|
+
* Prefix a locale-agnostic route (e.g. `/guides/x` or `/`) with its locale.
|
|
33
|
+
* `/` becomes `/fr` (or stays `/` for the hidden default).
|
|
34
|
+
*/
|
|
35
|
+
export declare const localizeRoute: (logicalRoute: string, code: string, i18n: LocaleRouting) => string;
|
|
36
|
+
/**
|
|
37
|
+
* Localize a configured link target the way header tabs are: a root-relative
|
|
38
|
+
* internal path (`/`, `/docs`) moves into `code`'s prefix, and anything else —
|
|
39
|
+
* an absolute URL, a fragment, a relative path — passes through. `//host/path`
|
|
40
|
+
* is protocol-relative, an external URL that happens to start with a slash, so
|
|
41
|
+
* it must not pick up a locale prefix (`withBasePath` draws the same line).
|
|
42
|
+
* With no i18n (`null`) the path is returned as-is.
|
|
43
|
+
*/
|
|
44
|
+
export declare const localizeInternalPath: (path: string, code: string, i18n: LocaleRouting | null) => string;
|
|
45
|
+
/**
|
|
46
|
+
* Detect a leading non-default locale directory in a path's segments. The
|
|
47
|
+
* default locale lives at the content root, so only non-default codes are
|
|
48
|
+
* matched as a leading segment. Returns the resolved locale and the remaining
|
|
49
|
+
* (locale-stripped) segments.
|
|
50
|
+
*/
|
|
51
|
+
export declare const detectLocale: (parts: string[], i18n: ResolvedI18nConfig) => {
|
|
52
|
+
locale: string;
|
|
53
|
+
rest: string[];
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Resolve where a content file lives across locales, by parser:
|
|
57
|
+
* - `dir`: a leading locale directory (`fr/page.mdx`)
|
|
58
|
+
* - `dot`: a filename suffix (`page.fr.mdx`)
|
|
59
|
+
*
|
|
60
|
+
* A `.$.` infix (e.g. `changelog.$.mdx`) marks a shared, locale-agnostic file
|
|
61
|
+
* that is materialized into every configured locale. Returns the locale-stripped
|
|
62
|
+
* path (used for nav grouping) and the locale codes the file maps to (one for a
|
|
63
|
+
* normal file, all locales for a shared one).
|
|
64
|
+
*/
|
|
65
|
+
export declare const localePlacement: (rel: string, ext: string, i18n: ResolvedI18nConfig) => {
|
|
66
|
+
locales: string[];
|
|
67
|
+
navPath: string;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* The inverse of {@link localePlacement}: where a default-locale file's
|
|
71
|
+
* translation into `locale` lives, by parser:
|
|
72
|
+
* - `dir`: a leading locale directory (`guides/x.mdx` → `fr/guides/x.mdx`)
|
|
73
|
+
* - `dot`: a filename suffix (`guides/x.mdx` → `guides/x.fr.mdx`)
|
|
74
|
+
*
|
|
75
|
+
* Under `dot`, a source authored with an explicit default-locale suffix
|
|
76
|
+
* (`x.en.mdx`) swaps it for the target's (`x.fr.mdx`) — same case-insensitive
|
|
77
|
+
* last-dot-inside-filename logic as `localePlacement`, so both spellings of a
|
|
78
|
+
* default-locale file resolve to one canonical target.
|
|
79
|
+
*/
|
|
80
|
+
export declare const localeTargetPath: (rel: string, ext: string, locale: string, i18n: ResolvedI18nConfig) => string;
|
|
81
|
+
/**
|
|
82
|
+
* Warn about top-level content folders that look like a locale (a code Blume
|
|
83
|
+
* recognizes) but aren't declared in `i18n.locales`. Without this they're
|
|
84
|
+
* silently treated as default-locale content under a `/<code>/…` route, which
|
|
85
|
+
* is almost never intended — usually a translation that wasn't registered.
|
|
86
|
+
*/
|
|
87
|
+
export declare const i18nDiagnostics: (pages: PageRecord[], i18n: ResolvedI18nConfig, versions?: ResolvedVersionsConfig) => Diagnostic[];
|