blume 2.1.0 → 2.1.2
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/CHANGELOG.md +110 -0
- package/dist/cli/{chunk-ga0pf4aj.js → chunk-0n9xkp3d.js} +12 -3
- package/dist/cli/{chunk-ga0pf4aj.js.map → chunk-0n9xkp3d.js.map} +3 -3
- package/dist/cli/{chunk-43zcf4gz.js → chunk-0pmb4tr4.js} +541 -368
- package/dist/cli/chunk-0pmb4tr4.js.map +35 -0
- package/dist/cli/{chunk-9geymqns.js → chunk-0w6hs479.js} +15 -15
- package/dist/cli/{chunk-xkz5xbtv.js → chunk-124fvmzq.js} +2802 -1422
- package/dist/cli/chunk-124fvmzq.js.map +220 -0
- package/dist/cli/chunk-150jk7km.js +52 -0
- package/dist/cli/chunk-150jk7km.js.map +10 -0
- package/dist/cli/{chunk-y4ykbark.js → chunk-1f882900.js} +2 -2
- package/dist/cli/{chunk-5ffywsmb.js → chunk-297ajdcv.js} +8 -6
- package/dist/cli/{chunk-5ffywsmb.js.map → chunk-297ajdcv.js.map} +3 -3
- package/dist/cli/{chunk-h2a48yhd.js → chunk-32khwcb6.js} +120 -16
- package/dist/cli/{chunk-h2a48yhd.js.map → chunk-32khwcb6.js.map} +10 -10
- package/dist/cli/{chunk-5cg2rzgf.js → chunk-36bxs9c7.js} +20 -49
- package/dist/cli/{chunk-5cg2rzgf.js.map → chunk-36bxs9c7.js.map} +4 -5
- package/dist/cli/{chunk-py62fewh.js → chunk-53jqw8z0.js} +3 -3
- package/dist/cli/{chunk-5wj2qwn2.js → chunk-58bt3hag.js} +4 -4
- package/dist/cli/{chunk-e7vvk5ya.js → chunk-5cmts6dv.js} +3 -3
- package/dist/cli/{chunk-y5h4r2y0.js → chunk-60hz265r.js} +15 -5
- package/dist/cli/chunk-60hz265r.js.map +10 -0
- package/dist/cli/chunk-74wfhv79.js +65 -0
- package/dist/cli/chunk-74wfhv79.js.map +10 -0
- package/dist/cli/{chunk-g2z9x01v.js → chunk-9qzgg6mj.js} +3 -3
- package/dist/cli/{chunk-q3wxxq39.js → chunk-a57yh0h9.js} +5 -5
- package/dist/cli/{chunk-713mngdq.js → chunk-ave1wcbr.js} +76 -10
- package/dist/cli/chunk-ave1wcbr.js.map +14 -0
- package/dist/cli/{chunk-2n4ps1b3.js → chunk-bqxaqn5p.js} +40 -22
- package/dist/cli/chunk-bqxaqn5p.js.map +15 -0
- package/dist/cli/{chunk-jnwj5kjj.js → chunk-bxwhtvw8.js} +20 -7
- package/dist/cli/{chunk-jnwj5kjj.js.map → chunk-bxwhtvw8.js.map} +3 -3
- package/dist/cli/chunk-ckrcm08h.js +324 -0
- package/dist/cli/chunk-ckrcm08h.js.map +14 -0
- package/dist/cli/{chunk-2f3ndkpw.js → chunk-desvm72z.js} +3 -3
- package/dist/cli/{chunk-gp84za0h.js → chunk-dhwtqnnd.js} +2 -2
- package/dist/cli/{chunk-4h8z9vv5.js → chunk-dpy8qdjf.js} +93 -47
- package/dist/cli/chunk-dpy8qdjf.js.map +17 -0
- package/dist/cli/{chunk-2f7n4qzt.js → chunk-dqhg54mr.js} +1 -1
- package/dist/cli/{chunk-0gz36akr.js → chunk-dv2z0rzf.js} +21 -5
- package/dist/cli/chunk-dv2z0rzf.js.map +12 -0
- package/dist/cli/{chunk-cm89scdv.js → chunk-es8h0v3j.js} +9 -11
- package/dist/cli/{chunk-cm89scdv.js.map → chunk-es8h0v3j.js.map} +3 -3
- package/dist/cli/{chunk-zhvd6adm.js → chunk-gfc5fqvf.js} +14 -14
- package/dist/cli/{chunk-nd1821sk.js → chunk-gxtg6ed2.js} +33 -19
- package/dist/cli/chunk-gxtg6ed2.js.map +10 -0
- package/dist/cli/{chunk-p804f3pe.js → chunk-hvcxng5f.js} +6 -6
- package/dist/cli/{chunk-ta27feev.js → chunk-j1x92mx9.js} +21 -2
- package/dist/cli/chunk-j1x92mx9.js.map +10 -0
- package/dist/cli/{chunk-rekqz4qg.js → chunk-k3gr1nm9.js} +19 -16
- package/dist/cli/chunk-k3gr1nm9.js.map +10 -0
- package/dist/cli/{chunk-1n228xqb.js → chunk-kdpzw38a.js} +2 -2
- package/dist/cli/{chunk-cy5bm0j0.js → chunk-ms9z66nz.js} +2 -2
- package/dist/cli/{chunk-cy5bm0j0.js.map → chunk-ms9z66nz.js.map} +2 -2
- package/dist/cli/{chunk-zf748avv.js → chunk-nbyvgnnm.js} +193 -286
- package/dist/cli/chunk-nbyvgnnm.js.map +36 -0
- package/dist/cli/{chunk-6bm0xpgd.js → chunk-s0bdnc7v.js} +2 -2
- package/dist/cli/{chunk-yxmk4pec.js → chunk-sc93apfs.js} +17 -16
- package/dist/cli/{chunk-yxmk4pec.js.map → chunk-sc93apfs.js.map} +3 -3
- package/dist/cli/{chunk-cmtcnh9f.js → chunk-tfycddbt.js} +2 -2
- package/dist/cli/{chunk-9xr4dgee.js → chunk-twy7psdz.js} +29 -16
- package/dist/cli/chunk-twy7psdz.js.map +10 -0
- package/dist/cli/{chunk-ntv4qrt7.js → chunk-y4msrwm9.js} +15 -15
- package/dist/cli/{chunk-yj17vs39.js → chunk-ydp3065p.js} +5 -5
- package/dist/cli/index.js +24 -19
- package/dist/cli/index.js.map +3 -3
- package/dist/types/ai/ask-context.d.ts +6 -2
- package/dist/types/ai/ask.d.ts +24 -5
- package/dist/types/ai/component-markdown.d.ts +2 -0
- package/dist/types/ai/openapi-components.d.ts +4 -1
- package/dist/types/analytics/clics.d.ts +37 -0
- package/dist/types/analytics/index.d.ts +2 -0
- package/dist/types/analytics/schema.d.ts +18 -0
- package/dist/types/astro/integration.d.ts +11 -4
- package/dist/types/astro/markdown-negotiation.d.ts +3 -0
- package/dist/types/astro/pages.d.ts +10 -0
- package/dist/types/cli/init/scaffold.d.ts +1 -1
- package/dist/types/components/content/api-field.d.ts +4 -1
- package/dist/types/components/content/api-page.d.ts +6 -1
- package/dist/types/components/openapi/code-samples.d.ts +29 -0
- package/dist/types/components/openapi/helpers.d.ts +22 -1
- package/dist/types/components/openapi/security.d.ts +10 -0
- package/dist/types/components/openapi/snippets.d.ts +60 -0
- package/dist/types/core/changelog-index.d.ts +8 -0
- package/dist/types/core/config-input.d.ts +37 -6
- package/dist/types/core/data.d.ts +4 -0
- package/dist/types/core/i18n-ui.d.ts +2 -0
- package/dist/types/core/links.d.ts +8 -0
- package/dist/types/core/powered-by.d.ts +12 -0
- package/dist/types/core/probe.d.ts +2 -0
- package/dist/types/core/project-graph.d.ts +6 -0
- package/dist/types/core/redirect-patterns.d.ts +11 -3
- package/dist/types/core/schema.d.ts +228 -3
- package/dist/types/core/sources/cache.d.ts +3 -0
- package/dist/types/core/sources/contentful-rich-text.d.ts +11 -2
- package/dist/types/core/sources/contentful.d.ts +17 -1
- package/dist/types/core/sources/lexical.d.ts +5 -0
- package/dist/types/core/sources/lower.d.ts +10 -2
- package/dist/types/core/sources/normalize.d.ts +20 -1
- package/dist/types/core/sources/notion.d.ts +8 -0
- package/dist/types/core/sources/remote.d.ts +37 -10
- package/dist/types/core/sources/sanity.d.ts +1 -1
- package/dist/types/core/types.d.ts +17 -0
- package/dist/types/deploy/adapter-output.d.ts +2 -1
- package/dist/types/deploy/adapters/cloudflare.d.ts +7 -5
- package/dist/types/deploy/adapters/node.d.ts +58 -23
- package/dist/types/deploy/adapters/registry.d.ts +10 -0
- package/dist/types/deploy/adapters/types.d.ts +3 -2
- package/dist/types/deploy/cloudflare-negotiation.d.ts +5 -2
- package/dist/types/deploy/node-headers.d.ts +12 -4
- package/dist/types/deploy/platforms/cloudflare.d.ts +10 -7
- package/dist/types/deploy/platforms/node.d.ts +3 -1
- package/dist/types/deploy/platforms/types.d.ts +18 -7
- package/dist/types/deploy/platforms/vercel.d.ts +21 -2
- package/dist/types/deploy/redirects.d.ts +17 -1
- package/dist/types/deploy/sitemap.d.ts +2 -1
- package/dist/types/deploy/vercel-negotiation.d.ts +44 -21
- package/dist/types/narration/build.d.ts +34 -12
- package/dist/types/narration/provider.d.ts +96 -8
- package/dist/types/openapi/checks.d.ts +27 -0
- package/dist/types/openapi/graphql.d.ts +6 -0
- package/dist/types/openapi/model.d.ts +15 -4
- package/dist/types/openapi/parse.d.ts +3 -0
- package/dist/types/openapi/references.d.ts +16 -0
- package/dist/types/openapi/sentence.d.ts +11 -1
- package/dist/types/ratelimit/index.d.ts +1 -1
- package/dist/types/ratelimit/schema.d.ts +8 -0
- package/dist/types/ratelimit/upstash.d.ts +39 -14
- package/dist/types/reference/graphql.d.ts +76 -1
- package/dist/types/reference/index.d.ts +1 -1
- package/dist/types/reference/openapi.d.ts +2 -2
- package/dist/types/reference/options.d.ts +37 -1
- package/dist/types/reference/schema.d.ts +84 -0
- package/dist/types/search/adapters/registry.d.ts +3 -0
- package/dist/types/search/adapters/typesense.d.ts +14 -4
- package/dist/types/search/build.d.ts +3 -1
- package/dist/types/search/orama-index.d.ts +9 -9
- package/dist/types/search/sync/algolia.d.ts +5 -2
- package/dist/types/search/sync/index.d.ts +3 -1
- package/dist/types/search/sync/typesense.d.ts +11 -7
- package/dist/types/seo/jsonld.d.ts +11 -6
- package/dist/types/sources/contentful.d.ts +16 -0
- package/dist/types/sources/github-releases.d.ts +8 -1
- package/dist/types/sources/notion.d.ts +8 -0
- package/dist/types/sources/payload.d.ts +2 -0
- package/dist/types/sources/registry.d.ts +63 -0
- package/dist/types/sources/shared.d.ts +3 -0
- package/dist/types/sources/strapi.d.ts +2 -0
- package/docs/01-quickstart.mdx +4 -2
- package/docs/02-deployment.mdx +59 -13
- package/docs/03-upgrading.mdx +2 -1
- package/docs/04-migrating.mdx +9 -9
- package/docs/08-faq.mdx +12 -12
- package/docs/advanced/changelog.mdx +30 -2
- package/docs/advanced/custom-pages.mdx +1 -1
- package/docs/advanced/skills.mdx +1 -1
- package/docs/cli/audit.mdx +30 -7
- package/docs/cli/doctor.mdx +6 -2
- package/docs/cli/evals.mdx +4 -4
- package/docs/cli/translate.mdx +1 -0
- package/docs/cli/validate.mdx +4 -3
- package/docs/configuration/analytics.mdx +19 -1
- package/docs/configuration/assistant.mdx +6 -2
- package/docs/configuration/customization.mdx +4 -2
- package/docs/configuration/export.mdx +5 -3
- package/docs/configuration/index.mdx +4 -2
- package/docs/configuration/narration.mdx +43 -6
- package/docs/configuration/rate-limiting.mdx +23 -2
- package/docs/configuration/search.mdx +37 -14
- package/docs/content/components.mdx +2 -2
- package/docs/content/frontmatter.mdx +5 -3
- package/docs/content/i18n.mdx +2 -2
- package/docs/content/includes.mdx +1 -1
- package/docs/content/navigation.mdx +8 -6
- package/docs/content/sources/contentful.mdx +9 -4
- package/docs/content/sources/custom.mdx +7 -3
- package/docs/content/sources/github-releases.mdx +12 -2
- package/docs/content/sources/index.mdx +3 -3
- package/docs/content/sources/notion.mdx +17 -2
- package/docs/content/sources/obsidian.mdx +3 -1
- package/docs/content/sources/payload.mdx +5 -2
- package/docs/content/sources/remote-mdx.mdx +6 -0
- package/docs/content/sources/sanity.mdx +4 -2
- package/docs/content/sources/strapi.mdx +5 -2
- package/docs/content/syntax.mdx +2 -2
- package/docs/discoverability/agent-discovery.mdx +1 -1
- package/docs/discoverability/index.mdx +1 -1
- package/docs/discoverability/json-api.mdx +2 -0
- package/docs/discoverability/llms-txt.mdx +1 -1
- package/docs/discoverability/markdown.mdx +3 -1
- package/docs/discoverability/mcp.mdx +6 -0
- package/docs/discoverability/sitemap-and-robots.mdx +1 -1
- package/docs/discoverability/structured-data.mdx +8 -6
- package/docs/references/api-pages.mdx +1 -1
- package/docs/references/asyncapi.mdx +5 -1
- package/docs/references/graphql.mdx +15 -1
- package/docs/references/openapi.mdx +64 -8
- package/package.json +9 -9
- package/skills/blume/SKILL.md +1 -1
- package/skills/blume-migrate/SKILL.md +2 -2
- package/skills/blume-migrate/assets/{oxfmt@0.67.0.patch → oxfmt@0.71.0.patch} +7 -7
- package/skills/blume-migrate/references/docusaurus.md +4 -4
- package/skills/blume-migrate/references/fumadocs.md +17 -13
- package/skills/blume-migrate/references/monorepo.md +5 -5
- package/skills/blume-migrate/references/nextra.md +8 -5
- package/skills/blume-migrate/references/starlight.md +9 -7
- package/src/ai/ask-context.ts +33 -3
- package/src/ai/ask-limits.ts +13 -0
- package/src/ai/ask.ts +24 -6
- package/src/ai/changelog-markdown.ts +11 -6
- package/src/ai/component-markdown.ts +1 -1
- package/src/ai/cors.ts +12 -3
- package/src/ai/mcp/query.ts +14 -6
- package/src/ai/openapi-components.ts +28 -4
- package/src/ai/relative-links.ts +4 -38
- package/src/analytics/clics.ts +58 -0
- package/src/analytics/head.ts +5 -0
- package/src/analytics/index.ts +2 -0
- package/src/analytics/schema.ts +2 -0
- package/src/astro/generate.ts +91 -56
- package/src/astro/integration.ts +72 -22
- package/src/astro/markdown-negotiation.ts +3 -0
- package/src/astro/module-types.ts +3 -1
- package/src/astro/pages.ts +23 -0
- package/src/astro/render-deps.ts +10 -5
- package/src/astro/runtime-deps.ts +23 -2
- package/src/astro/templates.ts +129 -81
- package/src/audit/catalog.ts +19 -3
- package/src/audit/checks/links.ts +14 -1
- package/src/audit/checks/network.ts +110 -6
- package/src/audit/checks/redirects.ts +6 -4
- package/src/audit/checks/robots.ts +58 -2
- package/src/audit/run.ts +3 -0
- package/src/audit/types.ts +2 -0
- package/src/audit/url.ts +14 -5
- package/src/blume-modules.d.ts +5 -1
- package/src/cli/args.ts +51 -0
- package/src/cli/build-failure.ts +23 -0
- package/src/cli/commands/audit.ts +10 -1
- package/src/cli/commands/dev.ts +18 -2
- package/src/cli/commands/doctor.ts +45 -12
- package/src/cli/commands/eval.ts +36 -4
- package/src/cli/commands/init.ts +6 -4
- package/src/cli/commands/validate.ts +10 -1
- package/src/cli/init/scaffold.ts +9 -6
- package/src/cli/prepare.ts +6 -3
- package/src/cli/required-secrets.ts +3 -2
- package/src/components/content/ApiPlayground.astro +6 -2
- package/src/components/content/api-field.ts +4 -1
- package/src/components/content/api-page.ts +31 -7
- package/src/components/content/mermaid-element.ts +15 -1
- package/src/components/content/view-switcher.ts +7 -4
- package/src/components/islands/hooks.ts +27 -1
- package/src/components/layout/NavTree.astro +49 -5
- package/src/components/layout/NavTreeScript.astro +18 -0
- package/src/components/layout/PageActions.astro +139 -24
- package/src/components/layout/PageLayout.astro +13 -3
- package/src/components/layout/RootLayout.astro +27 -14
- package/src/components/layout/Search.astro +17 -3
- package/src/components/layout/TableOfContents.astro +24 -17
- package/src/components/layout/analytics-client.ts +8 -8
- package/src/components/layout/head-scripts.ts +6 -1
- package/src/components/layout/search/algolia.ts +10 -1
- package/src/components/layout/search/analytics.ts +42 -14
- package/src/components/layout/search/endpoint.ts +48 -5
- package/src/components/layout/search/pagefind.ts +114 -5
- package/src/components/layout/search/types.ts +12 -0
- package/src/components/layout/search/typesense.ts +18 -6
- package/src/components/openapi/AsyncApiOperation.astro +14 -7
- package/src/components/openapi/Authorization.astro +10 -0
- package/src/components/openapi/GraphqlOperation.astro +5 -0
- package/src/components/openapi/Operation.astro +24 -1
- package/src/components/openapi/ParametersTable.astro +8 -4
- package/src/components/openapi/Playground.astro +7 -1
- package/src/components/openapi/RequestBody.astro +19 -2
- package/src/components/openapi/Responses.astro +1 -0
- package/src/components/openapi/SchemaTable.astro +15 -3
- package/src/components/openapi/async-snippets.ts +61 -5
- package/src/components/openapi/async.ts +123 -29
- package/src/components/openapi/graphql-helpers.ts +35 -12
- package/src/components/openapi/helpers.ts +36 -2
- package/src/components/openapi/message-model.ts +54 -11
- package/src/components/openapi/message.ts +14 -4
- package/src/components/openapi/operation-model.ts +16 -7
- package/src/components/openapi/playground-client.ts +77 -58
- package/src/components/openapi/playground-schema.ts +1 -1
- package/src/components/openapi/schema-tree.ts +44 -14
- package/src/components/openapi/security.ts +10 -0
- package/src/components/openapi/snippets.ts +5 -3
- package/src/components/openapi/validate-json.ts +4 -3
- package/src/components/powered-by-middleware.ts +33 -0
- package/src/core/changelog-index.ts +31 -1
- package/src/core/component-diagnostics.ts +53 -0
- package/src/core/component-overrides.ts +32 -0
- package/src/core/config-input.ts +42 -6
- package/src/core/data.ts +2 -0
- package/src/core/diagnostics.ts +5 -0
- package/src/core/i18n-ui.ts +2 -0
- package/src/core/includes.ts +1 -1
- package/src/core/links.ts +47 -17
- package/src/core/powered-by.ts +12 -0
- package/src/core/probe.ts +26 -6
- package/src/core/project-graph.ts +59 -18
- package/src/core/redirect-patterns.ts +36 -7
- package/src/core/schema.ts +26 -6
- package/src/core/sources/cache.ts +6 -0
- package/src/core/sources/contentful-rich-text.ts +29 -6
- package/src/core/sources/contentful.ts +135 -25
- package/src/core/sources/filesystem.ts +26 -4
- package/src/core/sources/github-releases.ts +12 -1
- package/src/core/sources/lexical.ts +15 -10
- package/src/core/sources/lower.ts +19 -3
- package/src/core/sources/mdx-remote.ts +62 -10
- package/src/core/sources/normalize.ts +227 -41
- package/src/core/sources/notion.ts +34 -10
- package/src/core/sources/obsidian.ts +16 -3
- package/src/core/sources/payload.ts +38 -15
- package/src/core/sources/remote.ts +72 -15
- package/src/core/sources/resolve.ts +11 -1
- package/src/core/sources/sanity.ts +43 -25
- package/src/core/sources/strapi.ts +2 -2
- package/src/core/types.ts +18 -0
- package/src/core/ui-packs/ar.ts +1 -0
- package/src/core/ui-packs/bg.ts +1 -0
- package/src/core/ui-packs/bn.ts +1 -0
- package/src/core/ui-packs/ca.ts +1 -0
- package/src/core/ui-packs/cs.ts +1 -0
- package/src/core/ui-packs/da.ts +1 -0
- package/src/core/ui-packs/de.ts +1 -0
- package/src/core/ui-packs/el.ts +1 -0
- package/src/core/ui-packs/es.ts +1 -0
- package/src/core/ui-packs/fa.ts +1 -0
- package/src/core/ui-packs/fi.ts +1 -0
- package/src/core/ui-packs/fr.ts +1 -0
- package/src/core/ui-packs/he.ts +1 -0
- package/src/core/ui-packs/hi.ts +1 -0
- package/src/core/ui-packs/hr.ts +1 -0
- package/src/core/ui-packs/hu.ts +1 -0
- package/src/core/ui-packs/id.ts +1 -0
- package/src/core/ui-packs/it.ts +1 -0
- package/src/core/ui-packs/ja.ts +1 -0
- package/src/core/ui-packs/ko.ts +1 -0
- package/src/core/ui-packs/nl.ts +1 -0
- package/src/core/ui-packs/no.ts +1 -0
- package/src/core/ui-packs/pl.ts +1 -0
- package/src/core/ui-packs/pt-br.ts +1 -0
- package/src/core/ui-packs/pt.ts +1 -0
- package/src/core/ui-packs/ro.ts +1 -0
- package/src/core/ui-packs/ru.ts +1 -0
- package/src/core/ui-packs/sk.ts +1 -0
- package/src/core/ui-packs/sr.ts +1 -0
- package/src/core/ui-packs/sv.ts +1 -0
- package/src/core/ui-packs/th.ts +1 -0
- package/src/core/ui-packs/tr.ts +1 -0
- package/src/core/ui-packs/uk.ts +1 -0
- package/src/core/ui-packs/vi.ts +1 -0
- package/src/core/ui-packs/zh-tw.ts +1 -0
- package/src/core/ui-packs/zh.ts +1 -0
- package/src/deploy/adapter-output.ts +7 -2
- package/src/deploy/adapters/cloudflare.ts +7 -5
- package/src/deploy/adapters/node.ts +47 -9
- package/src/deploy/adapters/types.ts +7 -3
- package/src/deploy/artifacts.ts +2 -1
- package/src/deploy/cloudflare-negotiation.ts +36 -7
- package/src/deploy/headers.ts +15 -1
- package/src/deploy/node-headers.ts +32 -20
- package/src/deploy/platforms/cloudflare.ts +14 -9
- package/src/deploy/platforms/netlify.ts +2 -1
- package/src/deploy/platforms/node.ts +12 -2
- package/src/deploy/platforms/types.ts +21 -7
- package/src/deploy/platforms/vercel.ts +115 -17
- package/src/deploy/redirects.ts +66 -6
- package/src/deploy/rss.ts +3 -1
- package/src/deploy/sitemap.ts +39 -5
- package/src/deploy/vercel-negotiation.ts +325 -103
- package/src/eval/agents.ts +18 -1
- package/src/eval/prompts.ts +6 -3
- package/src/eval/report.ts +34 -13
- package/src/eval/run.ts +5 -0
- package/src/markdown/base-links.ts +15 -14
- package/src/markdown/package-commands.ts +9 -8
- package/src/markdown/relative-links.ts +3 -2
- package/src/narration/build.ts +218 -40
- package/src/narration/provider.ts +89 -9
- package/src/openapi/checks.ts +273 -0
- package/src/openapi/graphql-build.ts +21 -0
- package/src/openapi/graphql.ts +11 -0
- package/src/openapi/model.ts +15 -3
- package/src/openapi/parse.ts +127 -2
- package/src/openapi/references.ts +43 -3
- package/src/openapi/render-mdx.ts +68 -8
- package/src/openapi/sentence.ts +29 -2
- package/src/openapi/source.ts +39 -14
- package/src/ratelimit/index.ts +1 -1
- package/src/ratelimit/runtime.ts +37 -19
- package/src/ratelimit/upstash.ts +40 -10
- package/src/reference/graphql.ts +15 -1
- package/src/reference/index.ts +1 -0
- package/src/reference/openapi.ts +2 -2
- package/src/reference/options.ts +29 -1
- package/src/registry/eject.ts +8 -2
- package/src/search/adapters/locale-scope.ts +30 -0
- package/src/search/adapters/typesense.ts +14 -4
- package/src/search/build.ts +21 -3
- package/src/search/orama-index.ts +163 -31
- package/src/search/source-pages.ts +29 -0
- package/src/search/sync/algolia.ts +99 -9
- package/src/search/sync/index.ts +52 -13
- package/src/search/sync/typesense.ts +72 -27
- package/src/seo/jsonld.ts +38 -20
- package/src/sources/contentful.ts +12 -0
- package/src/sources/github-releases.ts +7 -1
- package/src/sources/notion.ts +7 -0
- package/src/sources/shared.ts +3 -0
- package/src/theme/color.ts +9 -10
- package/src/theme/entry.ts +43 -6
- package/src/translate/validate.ts +23 -1
- package/dist/cli/chunk-0gz36akr.js.map +0 -12
- package/dist/cli/chunk-2n4ps1b3.js.map +0 -15
- package/dist/cli/chunk-43zcf4gz.js.map +0 -36
- package/dist/cli/chunk-4ejxbzee.js +0 -39
- package/dist/cli/chunk-4ejxbzee.js.map +0 -10
- package/dist/cli/chunk-4h8z9vv5.js.map +0 -16
- package/dist/cli/chunk-713mngdq.js.map +0 -14
- package/dist/cli/chunk-9xr4dgee.js.map +0 -10
- package/dist/cli/chunk-amrb6hgh.js +0 -145
- package/dist/cli/chunk-amrb6hgh.js.map +0 -11
- package/dist/cli/chunk-nd1821sk.js.map +0 -10
- package/dist/cli/chunk-rekqz4qg.js.map +0 -10
- package/dist/cli/chunk-ta27feev.js.map +0 -10
- package/dist/cli/chunk-xkz5xbtv.js.map +0 -213
- package/dist/cli/chunk-y5h4r2y0.js.map +0 -10
- package/dist/cli/chunk-zf748avv.js.map +0 -37
- /package/dist/cli/{chunk-9geymqns.js.map → chunk-0w6hs479.js.map} +0 -0
- /package/dist/cli/{chunk-y4ykbark.js.map → chunk-1f882900.js.map} +0 -0
- /package/dist/cli/{chunk-py62fewh.js.map → chunk-53jqw8z0.js.map} +0 -0
- /package/dist/cli/{chunk-5wj2qwn2.js.map → chunk-58bt3hag.js.map} +0 -0
- /package/dist/cli/{chunk-e7vvk5ya.js.map → chunk-5cmts6dv.js.map} +0 -0
- /package/dist/cli/{chunk-g2z9x01v.js.map → chunk-9qzgg6mj.js.map} +0 -0
- /package/dist/cli/{chunk-q3wxxq39.js.map → chunk-a57yh0h9.js.map} +0 -0
- /package/dist/cli/{chunk-2f3ndkpw.js.map → chunk-desvm72z.js.map} +0 -0
- /package/dist/cli/{chunk-gp84za0h.js.map → chunk-dhwtqnnd.js.map} +0 -0
- /package/dist/cli/{chunk-2f7n4qzt.js.map → chunk-dqhg54mr.js.map} +0 -0
- /package/dist/cli/{chunk-zhvd6adm.js.map → chunk-gfc5fqvf.js.map} +0 -0
- /package/dist/cli/{chunk-p804f3pe.js.map → chunk-hvcxng5f.js.map} +0 -0
- /package/dist/cli/{chunk-1n228xqb.js.map → chunk-kdpzw38a.js.map} +0 -0
- /package/dist/cli/{chunk-6bm0xpgd.js.map → chunk-s0bdnc7v.js.map} +0 -0
- /package/dist/cli/{chunk-cmtcnh9f.js.map → chunk-tfycddbt.js.map} +0 -0
- /package/dist/cli/{chunk-ntv4qrt7.js.map → chunk-y4msrwm9.js.map} +0 -0
- /package/dist/cli/{chunk-yj17vs39.js.map → chunk-ydp3065p.js.map} +0 -0
|
@@ -8,14 +8,15 @@ import {
|
|
|
8
8
|
fontLocaleCodes,
|
|
9
9
|
buildFontEntries,
|
|
10
10
|
isPatternPath,
|
|
11
|
-
|
|
11
|
+
compileEveryRedirect,
|
|
12
12
|
hasVariables,
|
|
13
13
|
SVG_ASSET_HEADERS,
|
|
14
14
|
applyBaseToAstroRedirects,
|
|
15
|
+
withMirrorRedirects,
|
|
15
16
|
distDir,
|
|
16
17
|
adapterRoot,
|
|
17
18
|
deployPlatform
|
|
18
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-124fvmzq.js";
|
|
19
20
|
import {
|
|
20
21
|
trimChar,
|
|
21
22
|
normalizeBasePath
|
|
@@ -34,7 +35,7 @@ var deployOutputDir = (config, context) => {
|
|
|
34
35
|
};
|
|
35
36
|
var deployStaticDir = (config, context) => {
|
|
36
37
|
const { deployment } = config;
|
|
37
|
-
return deployment.options.output === "server" ? deployPlatform(deployment).serverStaticDir(context) : distDir(context);
|
|
38
|
+
return deployment.options.output === "server" ? deployPlatform(deployment).serverStaticDir(context, normalizeBasePath(deployment.options.base)) : distDir(context);
|
|
38
39
|
};
|
|
39
40
|
var surfaceAdapterOutput = async (config, context) => {
|
|
40
41
|
const { deployment } = config;
|
|
@@ -219,6 +220,10 @@ import { existsSync as existsSync2, readFileSync } from "node:fs";
|
|
|
219
220
|
import { pathToFileURL } from "node:url";
|
|
220
221
|
import { dirname as dirname2, isAbsolute as isAbsolute2, join as join3, relative as relative2 } from "pathe";
|
|
221
222
|
|
|
223
|
+
// src/ai/ask-limits.ts
|
|
224
|
+
var ASK_MAX_MESSAGES = 40;
|
|
225
|
+
var ASK_MAX_MESSAGES_CHARS = 24000;
|
|
226
|
+
|
|
222
227
|
// src/consent/clients.ts
|
|
223
228
|
var CONSENT_CLIENT_MODULES = new Map([
|
|
224
229
|
["native", "blume/components/layout/consent/native.ts"]
|
|
@@ -273,13 +278,13 @@ var renderAstroAdapter = (deployment, context, ejected) => {
|
|
|
273
278
|
const { astro } = platform;
|
|
274
279
|
const args = {
|
|
275
280
|
...astro.options(context),
|
|
276
|
-
...deployPassthrough(deployment.options)
|
|
281
|
+
...deployPassthrough(deployment.options, astro.configOptions)
|
|
277
282
|
};
|
|
278
283
|
const argsLiteral = Object.keys(args).length > 0 ? JSON.stringify(args) : "";
|
|
279
284
|
const construct = `adapter(${argsLiteral})`;
|
|
280
285
|
const expression = platform.hiddenRuntime.showProjectRoot && !ejected ? `withAdapterRoot(${construct}, ${JSON.stringify(adapterRoot(context))})` : construct;
|
|
281
286
|
return {
|
|
282
|
-
configEntries: Object.entries(astro.config).map(([key, value]) => `
|
|
287
|
+
configEntries: Object.entries(astro.config(deployment.options)).map(([key, value]) => `
|
|
283
288
|
${key}: ${JSON.stringify(value)},`).join(""),
|
|
284
289
|
importLine: `import adapter from "${astro.package}";
|
|
285
290
|
`,
|
|
@@ -338,7 +343,7 @@ var RENDER_EXTERNAL_DEPS = [
|
|
|
338
343
|
];
|
|
339
344
|
var renderUserAliases = (aliases) => Object.entries(aliases ?? {}).toSorted(([a], [b]) => b.length - a.length).map(([find, replacement]) => `
|
|
340
345
|
${JSON.stringify(find)}: ${JSON.stringify(replacement)},`).join("");
|
|
341
|
-
var REACT_EXCLUDE = String.raw`exclude: [
|
|
346
|
+
var REACT_EXCLUDE = String.raw`exclude: [/\/\.cache\/vite\//]`;
|
|
342
347
|
var runtimeCacheOptions = (context, generatedModulesDir) => {
|
|
343
348
|
if (generatedModulesDir !== undefined) {
|
|
344
349
|
return { astro: "", vite: "" };
|
|
@@ -350,7 +355,7 @@ var runtimeCacheOptions = (context, generatedModulesDir) => {
|
|
|
350
355
|
cacheDir: ${JSON.stringify(`${context.outDir}/.cache/vite`)},`
|
|
351
356
|
};
|
|
352
357
|
};
|
|
353
|
-
var reactIntegration = (
|
|
358
|
+
var reactIntegration = (compiler) => compiler ? `react({ compiler: true, ${REACT_EXCLUDE} })` : `react({ ${REACT_EXCLUDE} })`;
|
|
354
359
|
var renderIntegrationBridge = (bridge) => {
|
|
355
360
|
if (!bridge) {
|
|
356
361
|
return {
|
|
@@ -396,7 +401,7 @@ var resolveOptimizeDeps = (options) => {
|
|
|
396
401
|
...features.mermaid ? ["blume > mermaid"] : [],
|
|
397
402
|
...features.epub ? ["blume > epub-gen-memory/bundle"] : [],
|
|
398
403
|
...searchDep ? [`blume > ${searchDep}`] : [],
|
|
399
|
-
...options.needsReact && options.
|
|
404
|
+
...options.needsReact && options.reactCompiler ? ["react/compiler-runtime"] : []
|
|
400
405
|
];
|
|
401
406
|
return { optimizeDepsEntries, optimizeDepsInclude };
|
|
402
407
|
};
|
|
@@ -424,7 +429,10 @@ var renderRuntimeModuleWiring = (generatedModulesDir) => {
|
|
|
424
429
|
return { aliasLines, imports: [], pluginEntry: "" };
|
|
425
430
|
};
|
|
426
431
|
var blumeIntegrationOptions = (options) => {
|
|
427
|
-
const shared = {
|
|
432
|
+
const shared = {
|
|
433
|
+
pages: options.pages,
|
|
434
|
+
poweredBy: options.config.poweredBy
|
|
435
|
+
};
|
|
428
436
|
if (options.redirects.length > 0) {
|
|
429
437
|
shared.redirects = options.redirects;
|
|
430
438
|
}
|
|
@@ -465,7 +473,7 @@ var astroConfigTemplate = (options) => {
|
|
|
465
473
|
context,
|
|
466
474
|
features,
|
|
467
475
|
needsReact,
|
|
468
|
-
|
|
476
|
+
reactCompiler: options.reactCompiler,
|
|
469
477
|
searchKind: config.search.provider.kind
|
|
470
478
|
});
|
|
471
479
|
const {
|
|
@@ -486,7 +494,8 @@ var astroConfigTemplate = (options) => {
|
|
|
486
494
|
prefixDefaultLocale: !config.i18n.hideDefaultLocalePrefix
|
|
487
495
|
}
|
|
488
496
|
})},` : "";
|
|
489
|
-
const
|
|
497
|
+
const redirectPages = new Set(contentRoutes);
|
|
498
|
+
const basedRedirects = withMirrorRedirects(applyBaseToAstroRedirects(config.redirects, config.basePath, deployment.options.base ?? "", redirectPages), redirectPages, { from: "", to: normalizeBasePath(deployment.options.base) });
|
|
490
499
|
const exactRedirects = basedRedirects.filter((redirect) => !isPatternPath(redirect.from));
|
|
491
500
|
const redirectsOption = exactRedirects.length > 0 ? `
|
|
492
501
|
redirects: ${JSON.stringify(Object.fromEntries(exactRedirects.map((redirect) => [
|
|
@@ -547,7 +556,7 @@ var astroConfigTemplate = (options) => {
|
|
|
547
556
|
`mdx({ processor: blumeMdxProcessor(${processorOptions}) })`
|
|
548
557
|
];
|
|
549
558
|
if (needsReact) {
|
|
550
|
-
integrations.push(reactIntegration(options.
|
|
559
|
+
integrations.push(reactIntegration(options.reactCompiler));
|
|
551
560
|
}
|
|
552
561
|
if (needsVue) {
|
|
553
562
|
integrations.push("vue()");
|
|
@@ -560,7 +569,7 @@ var astroConfigTemplate = (options) => {
|
|
|
560
569
|
contentRoutes,
|
|
561
570
|
ejected,
|
|
562
571
|
pages,
|
|
563
|
-
redirects:
|
|
572
|
+
redirects: compileEveryRedirect(basedRedirects)
|
|
564
573
|
}))})`);
|
|
565
574
|
const {
|
|
566
575
|
configSourceMarker,
|
|
@@ -625,8 +634,8 @@ ${userConfigSetup}export default defineConfig({
|
|
|
625
634
|
// Everything hydration can reach must be part of the dev dep optimizer's
|
|
626
635
|
// FIRST run. The Vite root is the generated runtime, so user pages,
|
|
627
636
|
// islands, and aliased components live outside it and are only crawled
|
|
628
|
-
// when first requested — and \`react/compiler-runtime\` is
|
|
629
|
-
// so no source scan can ever see it. A dependency discovered after
|
|
637
|
+
// when first requested — and \`react/compiler-runtime\` is injected by the
|
|
638
|
+
// React Compiler, so no source scan can ever see it. A dependency discovered after
|
|
630
639
|
// hydration begins triggers a mid-session re-optimization whose new
|
|
631
640
|
// generation imports React through new \`?v=\` URLs; the browser then
|
|
632
641
|
// evaluates a second React copy and every island tears down with
|
|
@@ -880,7 +889,7 @@ ${limit.check} const text = await readCappedText(request, ${ASK_BODY_LIMIT_BYTE
|
|
|
880
889
|
const valid =
|
|
881
890
|
Array.isArray(raw) &&
|
|
882
891
|
raw.length > 0 &&
|
|
883
|
-
raw.length <=
|
|
892
|
+
raw.length <= ${ASK_MAX_MESSAGES} &&
|
|
884
893
|
raw.every(
|
|
885
894
|
(m: unknown) =>
|
|
886
895
|
typeof m === "object" &&
|
|
@@ -888,10 +897,10 @@ ${limit.check} const text = await readCappedText(request, ${ASK_BODY_LIMIT_BYTE
|
|
|
888
897
|
("role" in m && (m.role === "user" || m.role === "assistant")) &&
|
|
889
898
|
("content" in m && typeof m.content === "string")
|
|
890
899
|
) &&
|
|
891
|
-
JSON.stringify(raw).length <=
|
|
900
|
+
JSON.stringify(raw).length <= ${ASK_MAX_MESSAGES_CHARS};
|
|
892
901
|
if (!valid) {
|
|
893
902
|
return new Response(
|
|
894
|
-
"Invalid request: send 1
|
|
903
|
+
"Invalid request: send 1-${ASK_MAX_MESSAGES} user/assistant messages with string content.",
|
|
895
904
|
{ status: 400 }
|
|
896
905
|
);
|
|
897
906
|
}
|
|
@@ -1034,10 +1043,11 @@ var searchClientTemplate = (config) => {
|
|
|
1034
1043
|
return hostedSearchClient(provider);
|
|
1035
1044
|
}
|
|
1036
1045
|
case "server": {
|
|
1037
|
-
return `${SEARCH_CLIENT_HEADER}${searchClientImport("endpoint")}${SEARCH_BASE_IMPORT}
|
|
1046
|
+
return `${SEARCH_CLIENT_HEADER}${searchClientImport("endpoint")}${SEARCH_BASE_IMPORT}import type { SearchClientOptions } from "blume/components/layout/search/types.ts";
|
|
1038
1047
|
const api = joinBase(import.meta.env.BASE_URL, "api/search");
|
|
1039
1048
|
|
|
1040
|
-
export const createSearch = (
|
|
1049
|
+
export const createSearch = (options: SearchClientOptions = {}) =>
|
|
1050
|
+
create({ ...options, api });
|
|
1041
1051
|
`;
|
|
1042
1052
|
}
|
|
1043
1053
|
case "pagefind": {
|
|
@@ -1054,7 +1064,8 @@ export const createSearch = () => create({ url });
|
|
|
1054
1064
|
}
|
|
1055
1065
|
}
|
|
1056
1066
|
};
|
|
1057
|
-
var mixedbreadSearchEndpointTemplate = (options, rateLimit) => {
|
|
1067
|
+
var mixedbreadSearchEndpointTemplate = (options, pages, rateLimit) => {
|
|
1068
|
+
const { search_options: tuning, storeId, ...searchOptions } = options;
|
|
1058
1069
|
const limit = rateLimitTemplate(rateLimit, "search");
|
|
1059
1070
|
const imports = [
|
|
1060
1071
|
'import type { APIRoute } from "astro";',
|
|
@@ -1070,9 +1081,26 @@ ${imports.join(`
|
|
|
1070
1081
|
export const prerender = false;
|
|
1071
1082
|
|
|
1072
1083
|
const client = new Mixedbread({ apiKey: getSecret("MIXEDBREAD_API_KEY") ?? "" });
|
|
1073
|
-
const
|
|
1074
|
-
// Every option
|
|
1075
|
-
const
|
|
1084
|
+
const STORE_ID = ${JSON.stringify(storeId)};
|
|
1085
|
+
// Every other option reaches the search call verbatim.
|
|
1086
|
+
const SEARCH_OPTIONS = ${JSON.stringify(searchOptions)};
|
|
1087
|
+
const SEARCH_TUNING = ${JSON.stringify(tuning ?? {})};
|
|
1088
|
+
// Each page's source file, relative to the project root, and the page it renders.
|
|
1089
|
+
const PAGES = new Map<string, { title: string; url: string }>(${JSON.stringify(pages)});
|
|
1090
|
+
|
|
1091
|
+
// The page a synced file renders. \`mxbai store sync\` records the path
|
|
1092
|
+
// relative to where it ran (the project root, or a monorepo root above it), so
|
|
1093
|
+
// the longest trailing run of that path that names a page's file wins.
|
|
1094
|
+
const pageFor = (path: string) => {
|
|
1095
|
+
const segments = path.replaceAll("\\\\", "/").split("/");
|
|
1096
|
+
for (let start = 0; start < segments.length; start += 1) {
|
|
1097
|
+
const page = PAGES.get(segments.slice(start).join("/"));
|
|
1098
|
+
if (page) {
|
|
1099
|
+
return page;
|
|
1100
|
+
}
|
|
1101
|
+
}
|
|
1102
|
+
return undefined;
|
|
1103
|
+
};
|
|
1076
1104
|
${limit.setup}
|
|
1077
1105
|
export const POST: APIRoute = async (context) => {
|
|
1078
1106
|
const { request } = context;
|
|
@@ -1098,23 +1126,32 @@ ${limit.check} // A search body is one short query: read it under a 16 KB cap,
|
|
|
1098
1126
|
});
|
|
1099
1127
|
}
|
|
1100
1128
|
// \`top_k\` defaults to 8 unless an option sets it; the query and store
|
|
1101
|
-
// always come from the request and \`storeId\`.
|
|
1129
|
+
// always come from the request and \`storeId\`. File metadata is always
|
|
1130
|
+
// returned: it holds the path \`mxbai store sync\` recorded for the file.
|
|
1102
1131
|
const response = await client.stores.search({
|
|
1103
1132
|
top_k: 8,
|
|
1104
1133
|
...SEARCH_OPTIONS,
|
|
1105
1134
|
query,
|
|
1135
|
+
search_options: { ...SEARCH_TUNING, return_metadata: true },
|
|
1106
1136
|
store_identifiers: [STORE_ID],
|
|
1107
1137
|
});
|
|
1108
|
-
const
|
|
1138
|
+
const seen = new Set<string>();
|
|
1139
|
+
const hits = (response.data ?? []).flatMap((chunk) => {
|
|
1140
|
+
const { file_path: path } = (chunk.metadata ?? {}) as { file_path?: unknown };
|
|
1141
|
+
const page = typeof path === "string" ? pageFor(path) : undefined;
|
|
1142
|
+
// A file no page renders has nowhere to link, and a page's later chunks
|
|
1143
|
+
// would repeat it: one hit per page, at its best chunk.
|
|
1144
|
+
if (!page || seen.has(page.url)) {
|
|
1145
|
+
return [];
|
|
1146
|
+
}
|
|
1147
|
+
seen.add(page.url);
|
|
1109
1148
|
const meta = chunk.generated_metadata ?? {};
|
|
1110
1149
|
// Only a text chunk carries \`text\`; image, audio, and video chunks fall
|
|
1111
1150
|
// back to the excerpt the store generated for them.
|
|
1112
1151
|
const text = "text" in chunk ? chunk.text : undefined;
|
|
1113
|
-
return
|
|
1114
|
-
excerpt: text ?? meta.excerpt ?? "",
|
|
1115
|
-
|
|
1116
|
-
url: meta.url ?? "",
|
|
1117
|
-
};
|
|
1152
|
+
return [
|
|
1153
|
+
{ excerpt: text ?? meta.excerpt ?? "", title: page.title, url: page.url },
|
|
1154
|
+
];
|
|
1118
1155
|
});
|
|
1119
1156
|
return new Response(JSON.stringify(hits), {
|
|
1120
1157
|
headers: { "Content-Type": "application/json" },
|
|
@@ -1629,6 +1666,7 @@ import type { CollectionKey } from "astro:content";
|
|
|
1629
1666
|
import RootLayout from "blume/components/layout/RootLayout.astro";
|
|
1630
1667
|
import { withBase, withMountedBase } from "blume/components/islands/base-path.ts";
|
|
1631
1668
|
import { mountBasePath, stripBasePath } from "blume/core/base-path.ts";
|
|
1669
|
+
import { routeSetFor, servesRoute } from "blume/core/locale-links.ts";
|
|
1632
1670
|
import { resolveSlot } from "blume/components/layout/overrides.ts";
|
|
1633
1671
|
${componentImports}
|
|
1634
1672
|
import data from "blume:data";
|
|
@@ -1832,18 +1870,24 @@ const logicalRoute = i18n
|
|
|
1832
1870
|
? stripLocale(stripBasePath(data.config.basePath, route), locale)
|
|
1833
1871
|
: route;
|
|
1834
1872
|
// A page from a one-language source (GitHub Releases) gets no switcher: every
|
|
1835
|
-
// other locale would only repeat the same text.
|
|
1873
|
+
// other locale would only repeat the same text. A locale with no real
|
|
1874
|
+
// translation links the page's fallback copy, which exists only while
|
|
1875
|
+
// fallbacks are on; where nothing is served at that URL (\`fallbackLocale:
|
|
1876
|
+
// null\`), the locale is left out rather than linked to a 404.
|
|
1836
1877
|
const localeSwitch = i18n && !monolingual
|
|
1837
|
-
? i18n.locales.
|
|
1878
|
+
? i18n.locales.flatMap((l) => {
|
|
1838
1879
|
const alt = (alternates ?? []).find((x) => x.locale === l.code);
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
1880
|
+
const href = alt ? alt.path : mountLocalized(logicalRoute, l.code);
|
|
1881
|
+
return alt || servesRoute(routeSetFor(data.routes), href)
|
|
1882
|
+
? [{
|
|
1883
|
+
code: l.code,
|
|
1884
|
+
current: l.code === locale,
|
|
1885
|
+
dir: l.dir,
|
|
1886
|
+
href,
|
|
1887
|
+
label: l.label,
|
|
1888
|
+
untranslated: !alt,
|
|
1889
|
+
}]
|
|
1890
|
+
: [];
|
|
1847
1891
|
})
|
|
1848
1892
|
: [];
|
|
1849
1893
|
|
|
@@ -2143,13 +2187,15 @@ const canonical = base ? base + basedRoute : null;
|
|
|
2143
2187
|
const ogPath = data.config.og.enabled ? withMountedBase("/og/changelog.png") : null;
|
|
2144
2188
|
const ogImage = ogPath && base ? base + ogPath : ogPath;
|
|
2145
2189
|
|
|
2146
|
-
// The page chrome (h1, title, description) comes from the
|
|
2147
|
-
// \`changelog\` group
|
|
2148
|
-
//
|
|
2190
|
+
// The page chrome (h1, title, description, empty state) comes from the
|
|
2191
|
+
// translatable \`changelog\` group, which carries the \`changelog\` config's title and
|
|
2192
|
+
// description when it sets them; optional chaining tolerates a
|
|
2193
|
+
// not-yet-regenerated data snapshot from before these keys existed.
|
|
2149
2194
|
const changelogTitle = data.ui.changelog?.title ?? "Changelog";
|
|
2150
2195
|
const changelogDescription =
|
|
2151
2196
|
data.ui.changelog?.description ??
|
|
2152
2197
|
"Product updates, new features, and fixes from every release.";
|
|
2198
|
+
const changelogEmpty = data.ui.changelog?.empty ?? "No changelog entries yet.";
|
|
2153
2199
|
// The layout suffixes "- {site title}" itself, so the page title is just the
|
|
2154
2200
|
// changelog's own name — prefixing the site title too would double it
|
|
2155
2201
|
// ("Acme Changelog - Acme").
|
|
@@ -2202,7 +2248,7 @@ const LayoutComponent = resolveSlot(layoutOverrides.Layout, RootLayout);
|
|
|
2202
2248
|
<p class="text-lg text-muted-foreground">{changelogDescription}</p>
|
|
2203
2249
|
{
|
|
2204
2250
|
items.length === 0 ? (
|
|
2205
|
-
<p>
|
|
2251
|
+
<p>{changelogEmpty}</p>
|
|
2206
2252
|
) : (
|
|
2207
2253
|
<div class="not-prose mt-10 divide-y divide-border border-border border-y">
|
|
2208
2254
|
{groups.map((group) => (
|
|
@@ -2755,5 +2801,5 @@ var runtimeTsconfigTemplate = () => `${JSON.stringify({
|
|
|
2755
2801
|
|
|
2756
2802
|
export { deployOutputDir, deployStaticDir, surfaceAdapterOutput, planComponentSlots, publishRuntimeModules, runtimeDependencies, EJECTED_CONFIG_HEADER, astroConfigTemplate, stagedContentDir, contentConfigTemplate, askEndpointTemplate, askComponentTemplate, searchEndpointTemplate, featuresTemplate, consentClientTemplate, searchClientTemplate, mixedbreadSearchEndpointTemplate, rawMarkdownEndpointTemplate, contentAssetsEndpointTemplate, mcpPageFile, mcpEndpointTemplate, playgroundProxyTemplate, staticJsonEndpointTemplate, rssEndpointTemplate, navFragmentTemplate, ogEndpointTemplate, scalarReferenceTemplate, catchAllPageTemplate, changelogIndexTemplate, notFoundPageTemplate, notFoundMarkdownTemplate, notFoundJsonTemplate, apiPagesIndexTemplate, apiPageTemplate, apiNavigationTemplate, apiSearchTemplate, apiNotFoundTemplate, exampleSlug, exampleWrapperTemplate, examplesRouteBase, exampleMapTemplate, examplesPageTemplate, runtimePackageTemplate, runtimeTsconfigTemplate };
|
|
2757
2803
|
|
|
2758
|
-
//# debugId=
|
|
2759
|
-
//# sourceMappingURL=chunk-
|
|
2804
|
+
//# debugId=FCEABB4236B6B32C64756E2164756E21
|
|
2805
|
+
//# sourceMappingURL=chunk-dpy8qdjf.js.map
|