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
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
import type { AdapterDescriptor } from "../core/adapter.ts";
|
|
4
|
+
import { adapterDescriptorSchema } from "../core/adapter.ts";
|
|
5
|
+
import type { SharedSourceOptions } from "./shared.ts";
|
|
6
|
+
import { sharedSourceOptionsSchema } from "./shared.ts";
|
|
7
|
+
|
|
8
|
+
/** Options for {@link sanity}. */
|
|
9
|
+
export interface SanityOptions extends SharedSourceOptions {
|
|
10
|
+
/** Sanity API version (a date). Defaults to `2024-01-01`. */
|
|
11
|
+
apiVersion?: string;
|
|
12
|
+
/** Dataset name to query. */
|
|
13
|
+
dataset: string;
|
|
14
|
+
/** Field paths mapping a document onto Blume meta + body. */
|
|
15
|
+
fields?: {
|
|
16
|
+
/** Field holding the renderable body (Portable Text or Markdown). */
|
|
17
|
+
body?: string;
|
|
18
|
+
/** Field holding the page description. */
|
|
19
|
+
description?: string;
|
|
20
|
+
/** Field holding the last-modified date. */
|
|
21
|
+
lastModified?: string;
|
|
22
|
+
/** Field holding the page slug. */
|
|
23
|
+
slug?: string;
|
|
24
|
+
/** Field holding the page title. */
|
|
25
|
+
title?: string;
|
|
26
|
+
};
|
|
27
|
+
/** Sanity project id. */
|
|
28
|
+
projectId: string;
|
|
29
|
+
/** GROQ query selecting the documents to import. */
|
|
30
|
+
query: string;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export const sanityOptionsSchema = sharedSourceOptionsSchema.extend({
|
|
34
|
+
apiVersion: z.string().optional(),
|
|
35
|
+
dataset: z.string(),
|
|
36
|
+
fields: z
|
|
37
|
+
.strictObject({
|
|
38
|
+
body: z.string().optional(),
|
|
39
|
+
description: z.string().optional(),
|
|
40
|
+
lastModified: z.string().optional(),
|
|
41
|
+
slug: z.string().optional(),
|
|
42
|
+
title: z.string().optional(),
|
|
43
|
+
})
|
|
44
|
+
.optional(),
|
|
45
|
+
projectId: z.string(),
|
|
46
|
+
query: z.string(),
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
export type SanityAdapter = AdapterDescriptor<"sanity", SanityOptions>;
|
|
50
|
+
|
|
51
|
+
export const sanityAdapterSchema = adapterDescriptorSchema(
|
|
52
|
+
"sanity",
|
|
53
|
+
sanityOptionsSchema
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* A Sanity dataset queried with GROQ; Portable Text bodies become Markdown.
|
|
58
|
+
* `@sanity/client` is the declared runtime dependency, and a private dataset's
|
|
59
|
+
* read token comes from `SANITY_TOKEN`.
|
|
60
|
+
*/
|
|
61
|
+
export const sanity = (options: SanityOptions): SanityAdapter => ({
|
|
62
|
+
kind: "sanity",
|
|
63
|
+
options,
|
|
64
|
+
requiredSecrets: ["SANITY_TOKEN"],
|
|
65
|
+
runtimeDeps: ["@sanity/client"],
|
|
66
|
+
});
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
/** The glob every content-reading adapter defaults `include` to. */
|
|
4
|
+
export const DEFAULT_CONTENT_GLOB = "**/*.{md,mdx}";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Options every built-in content source shares. They ride on the descriptor
|
|
8
|
+
* beside the adapter's own options, so an adapter declares only what is
|
|
9
|
+
* specific to it.
|
|
10
|
+
*/
|
|
11
|
+
export interface SharedSourceOptions {
|
|
12
|
+
/**
|
|
13
|
+
* Opt-in dev polling interval (seconds) for a remote source; omit to fetch
|
|
14
|
+
* once and freeze for the session. Local sources (`filesystem()`,
|
|
15
|
+
* `obsidian()`) watch the filesystem instead and ignore it.
|
|
16
|
+
*/
|
|
17
|
+
pollInterval?: number;
|
|
18
|
+
/** Namespaces the source's routes under `/<prefix>/`. */
|
|
19
|
+
prefix?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** The schema for {@link SharedSourceOptions}; each adapter extends it. */
|
|
23
|
+
export const sharedSourceOptionsSchema = z.strictObject({
|
|
24
|
+
pollInterval: z.number().positive().optional(),
|
|
25
|
+
prefix: z.string().optional(),
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
/** Field paths mapping a CMS document onto Blume meta + body. */
|
|
29
|
+
export interface SourceFieldMap {
|
|
30
|
+
/** Field holding the renderable body (rich text, or a Markdown string). */
|
|
31
|
+
body?: string;
|
|
32
|
+
/** Field holding the page description. */
|
|
33
|
+
description?: string;
|
|
34
|
+
/** Field holding the last-modified date. */
|
|
35
|
+
lastModified?: string;
|
|
36
|
+
/** Field holding the page slug. */
|
|
37
|
+
slug?: string;
|
|
38
|
+
/** Field holding the page title. */
|
|
39
|
+
title?: string;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** The schema for {@link SourceFieldMap}. */
|
|
43
|
+
export const sourceFieldMapSchema = z.strictObject({
|
|
44
|
+
body: z.string().optional(),
|
|
45
|
+
description: z.string().optional(),
|
|
46
|
+
lastModified: z.string().optional(),
|
|
47
|
+
slug: z.string().optional(),
|
|
48
|
+
title: z.string().optional(),
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
/** Extra query parameters a REST-backed adapter appends to its request. */
|
|
52
|
+
export const queryParamsSchema = z.record(z.string(), z.string());
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
import type { AdapterDescriptor } from "../core/adapter.ts";
|
|
4
|
+
import { adapterDescriptorSchema } from "../core/adapter.ts";
|
|
5
|
+
import type { SharedSourceOptions, SourceFieldMap } from "./shared.ts";
|
|
6
|
+
import {
|
|
7
|
+
queryParamsSchema,
|
|
8
|
+
sharedSourceOptionsSchema,
|
|
9
|
+
sourceFieldMapSchema,
|
|
10
|
+
} from "./shared.ts";
|
|
11
|
+
|
|
12
|
+
/** Options for {@link strapi}. */
|
|
13
|
+
export interface StrapiOptions extends SharedSourceOptions {
|
|
14
|
+
/** The content type's plural API id (`articles`). */
|
|
15
|
+
contentType: string;
|
|
16
|
+
/**
|
|
17
|
+
* Field paths mapping an entry onto Blume meta + body. Defaults to
|
|
18
|
+
* `title` / `description` / `slug` / `content` / `updatedAt`.
|
|
19
|
+
*/
|
|
20
|
+
fields?: SourceFieldMap;
|
|
21
|
+
/** Locale code to fetch, for a localized content type. */
|
|
22
|
+
locale?: string;
|
|
23
|
+
/** Extra query parameters for the request (`"filters[section][$eq]": "sdk"`). */
|
|
24
|
+
params?: Record<string, string>;
|
|
25
|
+
/** The `populate` parameter. Defaults to `*`, which fills media and relations. */
|
|
26
|
+
populate?: string;
|
|
27
|
+
/** The Strapi origin (`https://cms.acme.dev`); its REST API is at `/api`. */
|
|
28
|
+
url: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export const strapiOptionsSchema = sharedSourceOptionsSchema.extend({
|
|
32
|
+
contentType: z.string(),
|
|
33
|
+
fields: sourceFieldMapSchema.optional(),
|
|
34
|
+
locale: z.string().optional(),
|
|
35
|
+
params: queryParamsSchema.optional(),
|
|
36
|
+
populate: z.string().optional(),
|
|
37
|
+
url: z.string(),
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
export type StrapiAdapter = AdapterDescriptor<"strapi", StrapiOptions>;
|
|
41
|
+
|
|
42
|
+
export const strapiAdapterSchema = adapterDescriptorSchema(
|
|
43
|
+
"strapi",
|
|
44
|
+
strapiOptionsSchema
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* A Strapi content type read through its REST API; Blocks bodies become
|
|
49
|
+
* Markdown. The API token comes from `STRAPI_API_TOKEN`, and `--preview`
|
|
50
|
+
* reads drafts. Nothing to install: the adapter speaks the REST API
|
|
51
|
+
* directly.
|
|
52
|
+
*/
|
|
53
|
+
export const strapi = (options: StrapiOptions): StrapiAdapter => ({
|
|
54
|
+
kind: "strapi",
|
|
55
|
+
options,
|
|
56
|
+
requiredSecrets: ["STRAPI_API_TOKEN"],
|
|
57
|
+
runtimeDeps: [],
|
|
58
|
+
});
|
package/src/theme/entry.ts
CHANGED
|
@@ -8,6 +8,9 @@ import { CODE_PADDING_BLOCK_REM } from "./code-block-padding.ts";
|
|
|
8
8
|
*/
|
|
9
9
|
const CODE_SCROLL_INSET_REM = 0.375;
|
|
10
10
|
|
|
11
|
+
/** Lucide's arrow-up-right (the featured-link icon) as a `mask` data URI. */
|
|
12
|
+
const EXTERNAL_LINK_MASK = `url("data:image/svg+xml,${encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M7 7h10v10M7 17L17 7"/></svg>')}")`;
|
|
13
|
+
|
|
11
14
|
interface TailwindEntryOptions {
|
|
12
15
|
/**
|
|
13
16
|
* Globs to scan for utility classes. Typically the Blume package source and
|
|
@@ -274,10 +277,13 @@ ${THEME_MAPPING}
|
|
|
274
277
|
@apply -my-1 flex flex-1 items-center gap-1.5 rounded py-1 transition-colors aria-[current=page]:text-foreground aria-[current=page]:font-semibold;
|
|
275
278
|
}
|
|
276
279
|
@utility blume-nav-heading {
|
|
277
|
-
@apply mb-
|
|
280
|
+
@apply mb-1 flex items-center gap-1.5 px-2.5 py-1.5 font-medium text-foreground text-sm;
|
|
278
281
|
}
|
|
282
|
+
/* The linked heading fills the heading's own box with negative margins, so
|
|
283
|
+
its hover/active pill is the page row's exactly (same padding and radius)
|
|
284
|
+
and an unlinked heading beside it keeps the same text position. */
|
|
279
285
|
@utility blume-nav-heading-link {
|
|
280
|
-
@apply -
|
|
286
|
+
@apply -mx-2.5 -my-1.5 flex flex-1 items-center gap-1.5 rounded-[0.65rem] px-2.5 py-1.5 text-foreground transition-colors hover:bg-muted aria-[current=page]:bg-muted;
|
|
281
287
|
}
|
|
282
288
|
|
|
283
289
|
/* Theme Tailwind Typography (prose) with Blume tokens. */
|
|
@@ -298,6 +304,11 @@ ${THEME_MAPPING}
|
|
|
298
304
|
--tw-prose-pre-bg: var(--blume-code-background);
|
|
299
305
|
--tw-prose-th-borders: var(--blume-border);
|
|
300
306
|
--tw-prose-td-borders: var(--blume-border);
|
|
307
|
+
/* Neutralized: the plugin defaults are near-black text and shadow with no
|
|
308
|
+
dark counterpart (Blume never applies prose-invert), and the kbd rule
|
|
309
|
+
below draws the badge with Blume tokens instead. */
|
|
310
|
+
--tw-prose-kbd: inherit;
|
|
311
|
+
--tw-prose-kbd-shadows: transparent;
|
|
301
312
|
color: var(--blume-muted-foreground);
|
|
302
313
|
font-size: 0.875rem;
|
|
303
314
|
line-height: 1.7;
|
|
@@ -408,6 +419,22 @@ ${THEME_MAPPING}
|
|
|
408
419
|
text-decoration: none;
|
|
409
420
|
}
|
|
410
421
|
|
|
422
|
+
/* External Markdown links (markdown.externalLinks) open in a new tab and trail
|
|
423
|
+
the same Lucide arrow-up-right the featured sidebar links use, as a mask so it
|
|
424
|
+
takes the link's color. A link wrapping only an image (a badge, a logo)
|
|
425
|
+
skips the arrow. */
|
|
426
|
+
.prose :where(a[data-blume-external]:not(:has(img, svg)))::after {
|
|
427
|
+
background-color: currentColor;
|
|
428
|
+
content: "";
|
|
429
|
+
display: inline-block;
|
|
430
|
+
height: 0.75em;
|
|
431
|
+
margin-inline-start: 0.125em;
|
|
432
|
+
-webkit-mask: ${EXTERNAL_LINK_MASK} center / contain no-repeat;
|
|
433
|
+
mask: ${EXTERNAL_LINK_MASK} center / contain no-repeat;
|
|
434
|
+
opacity: 0.6;
|
|
435
|
+
width: 0.75em;
|
|
436
|
+
}
|
|
437
|
+
|
|
411
438
|
.prose :where(hr) {
|
|
412
439
|
margin: 2.5rem 0;
|
|
413
440
|
}
|
|
@@ -827,6 +854,24 @@ pre:has(.line.focused):hover .line:not(.focused) {
|
|
|
827
854
|
content: none;
|
|
828
855
|
}
|
|
829
856
|
|
|
857
|
+
/* Keyboard keys (<kbd>) render as the same bordered badge the search dialog
|
|
858
|
+
uses for its shortcut hints. Typography's own kbd rule is scoped with
|
|
859
|
+
:not(.not-prose *), so it never reaches a key inside <Steps>, <Callout>,
|
|
860
|
+
<Card>, or any other not-prose component; this rule is deliberately
|
|
861
|
+
unscoped from that exclusion so a key looks the same everywhere in the
|
|
862
|
+
content column. Unlayered, so it outranks the plugin's layered rule. */
|
|
863
|
+
.prose kbd {
|
|
864
|
+
background: var(--blume-muted);
|
|
865
|
+
border: 1px solid var(--blume-border);
|
|
866
|
+
border-radius: 0.25rem;
|
|
867
|
+
box-shadow: none;
|
|
868
|
+
color: inherit;
|
|
869
|
+
font-family: var(--font-mono);
|
|
870
|
+
font-size: 0.85em;
|
|
871
|
+
font-weight: 500;
|
|
872
|
+
padding: 0.125rem 0.25rem;
|
|
873
|
+
}
|
|
874
|
+
|
|
830
875
|
/* Inline code highlighting: Shiki colors the tokens of a \`code\`{:lang} snippet
|
|
831
876
|
via the same dual-theme CSS variables as fenced blocks, keeping the inline
|
|
832
877
|
pill background. Always on — it only fires on the trailing {:lang} marker. */
|
package/src/translate/report.ts
CHANGED
|
@@ -137,26 +137,57 @@ export const diagnosticLines = (diagnostics: Diagnostic[]): string[] =>
|
|
|
137
137
|
(diagnostic) => ` ${colors.yellow("⚠")} ${colors.dim(diagnostic.message)}`
|
|
138
138
|
);
|
|
139
139
|
|
|
140
|
+
/** One (source, locale) pair a `--check` run flags. */
|
|
141
|
+
interface DriftRow {
|
|
142
|
+
/** Absolute path of the default-locale source. */
|
|
143
|
+
file: string;
|
|
144
|
+
locale: string;
|
|
145
|
+
sourceRel: string;
|
|
146
|
+
status: WorkStatus;
|
|
147
|
+
}
|
|
148
|
+
|
|
140
149
|
/** Every (source, locale, status) drift row in a work list, pages then meta. */
|
|
141
|
-
const driftRows = (
|
|
142
|
-
workList: TranslateWorkList
|
|
143
|
-
): { locale: string; sourceRel: string; status: WorkStatus }[] =>
|
|
150
|
+
const driftRows = (workList: TranslateWorkList): DriftRow[] =>
|
|
144
151
|
workList.items.flatMap((item) =>
|
|
145
152
|
item.kind === "page"
|
|
146
153
|
? [
|
|
147
154
|
{
|
|
155
|
+
file: item.sourcePath,
|
|
148
156
|
locale: item.locale,
|
|
149
157
|
sourceRel: item.sourceRel,
|
|
150
158
|
status: item.status,
|
|
151
159
|
},
|
|
152
160
|
]
|
|
153
161
|
: item.entries.map((entry: MetaWorkEntry) => ({
|
|
162
|
+
file: entry.meta.file,
|
|
154
163
|
locale: item.locale,
|
|
155
164
|
sourceRel: entry.meta.sourceRel,
|
|
156
165
|
status: entry.status,
|
|
157
166
|
}))
|
|
158
167
|
);
|
|
159
168
|
|
|
169
|
+
/**
|
|
170
|
+
* Each missing or stale translation as an error diagnostic, so the `--check`
|
|
171
|
+
* JSON's `summary` counts the drift that fails the gate — the exit-code
|
|
172
|
+
* contract `blume validate/audit/eval --json` keep, where a non-zero exit
|
|
173
|
+
* always shows as a non-zero `summary.error`.
|
|
174
|
+
*/
|
|
175
|
+
const driftDiagnostics = (workList: TranslateWorkList): Diagnostic[] =>
|
|
176
|
+
driftRows(workList).map((row) => ({
|
|
177
|
+
code:
|
|
178
|
+
row.status === "missing"
|
|
179
|
+
? "BLUME_TRANSLATE_MISSING"
|
|
180
|
+
: "BLUME_TRANSLATE_STALE",
|
|
181
|
+
file: row.file,
|
|
182
|
+
message:
|
|
183
|
+
row.status === "missing"
|
|
184
|
+
? `${row.sourceRel} has no "${row.locale}" translation.`
|
|
185
|
+
: `The "${row.locale}" translation of ${row.sourceRel} is stale: its source changed since it was translated.`,
|
|
186
|
+
severity: "error",
|
|
187
|
+
suggestion:
|
|
188
|
+
"Run `blume translate --claude` (or `--codex`) to bring the translations up to date.",
|
|
189
|
+
}));
|
|
190
|
+
|
|
160
191
|
/** One line per missing/stale pair, plus dim lines for untracked adoptions. */
|
|
161
192
|
export const checkLines = (workList: TranslateWorkList): string[] => [
|
|
162
193
|
...driftRows(workList).map(
|
|
@@ -191,10 +222,12 @@ export const hasDrift = (workList: TranslateWorkList): boolean =>
|
|
|
191
222
|
|
|
192
223
|
/**
|
|
193
224
|
* The machine-readable `--check` report. The `diagnostics` + `summary` shape
|
|
194
|
-
* matches `blume validate/audit/eval --json` exactly
|
|
195
|
-
*
|
|
225
|
+
* matches `blume validate/audit/eval --json` exactly — every missing or stale
|
|
226
|
+
* translation is an error diagnostic there, so `summary.error` agrees with the
|
|
227
|
+
* exit code — with the drift report grouped by locale under `translate`.
|
|
196
228
|
*/
|
|
197
229
|
export const checkReportJson = (workList: TranslateWorkList): string => {
|
|
230
|
+
const diagnostics = [...workList.diagnostics, ...driftDiagnostics(workList)];
|
|
198
231
|
const locales: Record<
|
|
199
232
|
string,
|
|
200
233
|
{ missing: string[]; stale: string[]; untracked: string[] }
|
|
@@ -210,8 +243,8 @@ export const checkReportJson = (workList: TranslateWorkList): string => {
|
|
|
210
243
|
}
|
|
211
244
|
return `${JSON.stringify(
|
|
212
245
|
{
|
|
213
|
-
diagnostics
|
|
214
|
-
summary: countBySeverity(
|
|
246
|
+
diagnostics,
|
|
247
|
+
summary: countBySeverity(diagnostics),
|
|
215
248
|
translate: { locales, upToDate: workList.upToDate },
|
|
216
249
|
},
|
|
217
250
|
null,
|