blume 2.0.3 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +1 -0
- package/CHANGELOG.md +48 -0
- package/README.md +1 -1
- package/dist/cli/{chunk-1d7ve1dm.js → chunk-0gz36akr.js} +18 -2
- package/dist/cli/{chunk-1d7ve1dm.js.map → chunk-0gz36akr.js.map} +3 -3
- package/dist/cli/{chunk-2eytanqx.js → chunk-1n228xqb.js} +2 -2
- package/dist/cli/{chunk-yfyb25rh.js → chunk-2f3ndkpw.js} +24 -8
- package/dist/cli/chunk-2f3ndkpw.js.map +14 -0
- package/dist/cli/{chunk-r20tn01b.js → chunk-2f7n4qzt.js} +8 -2
- package/dist/cli/{chunk-r20tn01b.js.map → chunk-2f7n4qzt.js.map} +3 -3
- package/dist/cli/{chunk-35d4wj9f.js → chunk-2n4ps1b3.js} +7 -7
- package/dist/cli/{chunk-j85vccga.js → chunk-43zcf4gz.js} +97 -57
- package/dist/cli/{chunk-j85vccga.js.map → chunk-43zcf4gz.js.map} +6 -6
- package/dist/cli/{chunk-e04dxsz1.js → chunk-4ejxbzee.js} +1 -1
- package/dist/cli/{chunk-5m5nmvyq.js → chunk-4h8z9vv5.js} +233 -39
- package/dist/cli/chunk-4h8z9vv5.js.map +16 -0
- package/dist/cli/{chunk-5f86nr5m.js → chunk-5cg2rzgf.js} +18 -16
- package/dist/cli/{chunk-5f86nr5m.js.map → chunk-5cg2rzgf.js.map} +2 -2
- package/dist/cli/{chunk-tzmab476.js → chunk-5ffywsmb.js} +4 -4
- package/dist/cli/{chunk-2z928egk.js → chunk-5wj2qwn2.js} +5 -5
- package/dist/cli/chunk-6bm0xpgd.js +18 -0
- package/dist/cli/chunk-6bm0xpgd.js.map +10 -0
- package/dist/cli/{chunk-vg9r4eb9.js → chunk-713mngdq.js} +12 -5
- package/dist/cli/{chunk-vg9r4eb9.js.map → chunk-713mngdq.js.map} +3 -3
- package/dist/cli/{chunk-5xvm6tfj.js → chunk-9geymqns.js} +17 -15
- package/dist/cli/{chunk-5xvm6tfj.js.map → chunk-9geymqns.js.map} +2 -2
- package/dist/cli/{chunk-q58y5e6a.js → chunk-9xr4dgee.js} +26 -17
- package/dist/cli/chunk-9xr4dgee.js.map +10 -0
- package/dist/cli/{chunk-b07cmahc.js → chunk-amrb6hgh.js} +2 -2
- package/dist/cli/chunk-cm89scdv.js +443 -0
- package/dist/cli/chunk-cm89scdv.js.map +11 -0
- package/dist/cli/{chunk-akbpwfxc.js → chunk-cmtcnh9f.js} +2 -2
- package/dist/cli/chunk-cy5bm0j0.js +104 -0
- package/dist/cli/chunk-cy5bm0j0.js.map +11 -0
- package/dist/cli/{chunk-crgn1q09.js → chunk-e7vvk5ya.js} +4 -4
- package/dist/cli/{chunk-pehfxfta.js → chunk-g2z9x01v.js} +6 -98
- package/dist/cli/chunk-g2z9x01v.js.map +10 -0
- package/dist/cli/{chunk-tkacnehg.js → chunk-gp84za0h.js} +2 -2
- package/dist/cli/{chunk-wrr3j9w9.js → chunk-h2a48yhd.js} +186 -63
- package/dist/cli/chunk-h2a48yhd.js.map +36 -0
- package/dist/cli/{chunk-hm3vjy5s.js → chunk-jnwj5kjj.js} +14 -9
- package/dist/cli/{chunk-hm3vjy5s.js.map → chunk-jnwj5kjj.js.map} +4 -4
- package/dist/cli/chunk-kwrg63tm.js +31 -0
- package/dist/cli/chunk-kwrg63tm.js.map +10 -0
- package/dist/cli/{chunk-2hsdwb9n.js → chunk-nd1821sk.js} +18 -16
- package/dist/cli/{chunk-2hsdwb9n.js.map → chunk-nd1821sk.js.map} +2 -2
- package/dist/cli/{chunk-6dsbexzp.js → chunk-ntv4qrt7.js} +17 -15
- package/dist/cli/{chunk-6dsbexzp.js.map → chunk-ntv4qrt7.js.map} +2 -2
- package/dist/cli/{chunk-r9rcc4w7.js → chunk-p804f3pe.js} +7 -7
- package/dist/cli/{chunk-ey84smr6.js → chunk-py62fewh.js} +6 -6
- package/dist/cli/{chunk-ey84smr6.js.map → chunk-py62fewh.js.map} +1 -1
- package/dist/cli/chunk-q3wxxq39.js +126 -0
- package/dist/cli/chunk-q3wxxq39.js.map +11 -0
- package/dist/cli/{chunk-9t7a85s3.js → chunk-rekqz4qg.js} +23 -13
- package/dist/cli/chunk-rekqz4qg.js.map +10 -0
- package/dist/cli/{chunk-8ktnccpt.js → chunk-ta27feev.js} +1 -1
- package/dist/cli/{chunk-pv29h0wf.js → chunk-xkz5xbtv.js} +3476 -822
- package/dist/cli/chunk-xkz5xbtv.js.map +213 -0
- package/dist/cli/{chunk-a58773jm.js → chunk-y4ykbark.js} +2 -2
- package/dist/cli/{chunk-p3v96n38.js → chunk-y5h4r2y0.js} +4 -4
- package/dist/cli/{chunk-acanzt5p.js → chunk-yj17vs39.js} +6 -6
- package/dist/cli/{chunk-p73c0m7w.js → chunk-yxmk4pec.js} +16 -14
- package/dist/cli/{chunk-p73c0m7w.js.map → chunk-yxmk4pec.js.map} +2 -2
- package/dist/cli/{chunk-3em5wd2y.js → chunk-zccbjcj0.js} +4 -3
- package/dist/cli/{chunk-3em5wd2y.js.map → chunk-zccbjcj0.js.map} +2 -2
- package/dist/cli/{chunk-c8chx29p.js → chunk-zf748avv.js} +384 -207
- package/dist/cli/chunk-zf748avv.js.map +37 -0
- package/dist/cli/{chunk-g4hq16wv.js → chunk-zhvd6adm.js} +16 -14
- package/dist/cli/{chunk-g4hq16wv.js.map → chunk-zhvd6adm.js.map} +2 -2
- package/dist/cli/index.js +26 -20
- package/dist/cli/index.js.map +5 -5
- package/dist/types/ai/agent-surface.d.ts +8 -7
- package/dist/types/ai/ai-catalog.d.ts +7 -0
- package/dist/types/ai/ask-context.d.ts +22 -0
- package/dist/types/ai/ask.d.ts +271 -58
- package/dist/types/ai/index.d.ts +2 -2
- package/dist/types/ai/site-skill.d.ts +26 -0
- package/dist/types/ai/skills.d.ts +16 -0
- package/dist/types/astro/integration.d.ts +8 -0
- package/dist/types/captcha/hcaptcha.d.ts +27 -0
- package/dist/types/captcha/index.d.ts +28 -0
- package/dist/types/captcha/schema.d.ts +29 -0
- package/dist/types/captcha/turnstile.d.ts +28 -0
- package/dist/types/components/content/api-field.d.ts +59 -0
- package/dist/types/components/content/api-page.d.ts +95 -0
- package/dist/types/components/layout/nav-utils.d.ts +26 -0
- package/dist/types/components/openapi/helpers.d.ts +137 -0
- package/dist/types/components/openapi/security.d.ts +85 -0
- package/dist/types/consent/ethyca.d.ts +48 -0
- package/dist/types/consent/index.d.ts +37 -0
- package/dist/types/consent/native.d.ts +28 -0
- package/dist/types/consent/osano.d.ts +42 -0
- package/dist/types/consent/schema.d.ts +110 -0
- package/dist/types/core/config-input.d.ts +187 -20
- package/dist/types/core/data.d.ts +49 -4
- package/dist/types/core/footer.d.ts +8 -0
- package/dist/types/core/i18n-ui.d.ts +86 -0
- package/dist/types/core/includes.d.ts +8 -2
- package/dist/types/core/localizable.d.ts +7 -0
- package/dist/types/core/page-modes.d.ts +29 -0
- package/dist/types/core/redirect-patterns.d.ts +144 -0
- package/dist/types/core/related.d.ts +40 -0
- package/dist/types/core/schema.d.ts +551 -56
- package/dist/types/core/sources/read.d.ts +5 -0
- package/dist/types/core/types.d.ts +1 -1
- package/dist/types/core/variables.d.ts +42 -0
- package/dist/types/deploy/node-headers.d.ts +13 -2
- package/dist/types/deploy/platforms/cloudflare.d.ts +5 -0
- package/dist/types/deploy/platforms/netlify.d.ts +7 -0
- package/dist/types/deploy/platforms/vercel.d.ts +6 -0
- package/dist/types/deploy/redirects.d.ts +39 -11
- package/dist/types/deploy/vercel-negotiation.d.ts +9 -0
- package/dist/types/markdown/code-title.d.ts +17 -0
- package/dist/types/markdown/features.d.ts +3 -2
- package/dist/types/narration/build.d.ts +70 -0
- package/dist/types/narration/provider.d.ts +26 -0
- package/dist/types/narration/script.d.ts +154 -0
- package/dist/types/openapi/model.d.ts +12 -6
- package/dist/types/openapi/overlay.d.ts +54 -0
- package/dist/types/openapi/parse.d.ts +13 -0
- package/dist/types/openapi/references.d.ts +14 -4
- package/dist/types/ratelimit/cloudflare.d.ts +39 -0
- package/dist/types/ratelimit/index.d.ts +27 -0
- package/dist/types/ratelimit/memory.d.ts +36 -0
- package/dist/types/ratelimit/schema.d.ts +111 -0
- package/dist/types/ratelimit/upstash.d.ts +21 -0
- package/dist/types/ratelimit/wrangler.d.ts +23 -0
- package/dist/types/reference/asyncapi.d.ts +10 -10
- package/dist/types/reference/graphql.d.ts +13 -10
- package/dist/types/reference/openapi.d.ts +33 -12
- package/dist/types/reference/options.d.ts +45 -5
- package/dist/types/reference/scalar.d.ts +13 -0
- package/dist/types/reference/schema.d.ts +60 -36
- package/dist/types/search/documents.d.ts +12 -1
- package/dist/types/search/orama-index.d.ts +4 -0
- package/dist/types/seo/metatags.d.ts +20 -0
- package/docs/02-deployment.mdx +41 -5
- package/docs/03-upgrading.mdx +4 -4
- package/docs/04-migrating.mdx +1 -1
- package/docs/advanced/changelog.mdx +2 -2
- package/docs/advanced/skills.mdx +14 -0
- package/docs/cli/audit.mdx +21 -1
- package/docs/cli/index.mdx +1 -0
- package/docs/configuration/analytics.mdx +3 -1
- package/docs/configuration/assistant.mdx +188 -36
- package/docs/configuration/consent.mdx +100 -0
- package/docs/configuration/customization.mdx +4 -4
- package/docs/configuration/index.mdx +63 -5
- package/docs/configuration/meta.ts +3 -0
- package/docs/configuration/narration.mdx +119 -0
- package/docs/configuration/rate-limiting.mdx +69 -0
- package/docs/configuration/search.mdx +29 -1
- package/docs/configuration/theming.mdx +3 -1
- package/docs/content/components.mdx +106 -0
- package/docs/content/frontmatter.mdx +76 -0
- package/docs/content/i18n.mdx +38 -3
- package/docs/content/includes.mdx +16 -0
- package/docs/content/meta.mdx +1 -0
- package/docs/content/meta.ts +1 -0
- package/docs/content/navigation.mdx +28 -6
- package/docs/content/sources/contentful.mdx +32 -0
- package/docs/content/sources/custom.mdx +39 -0
- package/docs/content/sources/github-releases.mdx +31 -0
- package/docs/content/sources/index.mdx +91 -0
- package/docs/content/sources/meta.ts +16 -0
- package/docs/content/sources/notion.mdx +32 -0
- package/docs/content/sources/obsidian.mdx +37 -0
- package/docs/content/sources/payload.mdx +30 -0
- package/docs/content/sources/remote-mdx.mdx +40 -0
- package/docs/content/sources/sanity.mdx +29 -0
- package/docs/content/sources/strapi.mdx +31 -0
- package/docs/content/syntax.mdx +67 -2
- package/docs/content/variables.mdx +41 -0
- package/docs/discoverability/agent-discovery.mdx +29 -2
- package/docs/discoverability/index.mdx +1 -1
- package/docs/discoverability/llms-txt.mdx +1 -1
- package/docs/discoverability/metadata.mdx +17 -0
- package/docs/references/api-pages.mdx +74 -0
- package/docs/references/asyncapi.mdx +1 -1
- package/docs/references/graphql.mdx +2 -2
- package/docs/references/meta.ts +1 -1
- package/docs/references/openapi.mdx +102 -3
- package/docs/references/scalar.mdx +3 -1
- package/package.json +36 -1
- package/skills/blume/SKILL.md +3 -0
- package/skills/blume-migrate/SKILL.md +5 -5
- package/skills/blume-migrate/references/docusaurus.md +3 -3
- package/skills/blume-migrate/references/mintlify.md +37 -19
- package/skills/blume-migrate/references/nextra.md +2 -2
- package/skills/blume-migrate/references/starlight.md +2 -1
- package/skills/blume-migrate/scripts/mintlify-codemod.mjs +60 -14
- package/skills/blume-write-skill/SKILL.md +82 -0
- package/src/ai/agent-readability.ts +2 -1
- package/src/ai/agent-surface.ts +9 -7
- package/src/ai/ai-catalog.ts +6 -3
- package/src/ai/ask-context.ts +73 -20
- package/src/ai/ask-data.ts +6 -0
- package/src/ai/ask-tools.ts +142 -0
- package/src/ai/ask.ts +354 -76
- package/src/ai/component-markdown.ts +75 -0
- package/src/ai/cors.ts +2 -0
- package/src/ai/index.ts +12 -0
- package/src/ai/llms.ts +6 -2
- package/src/ai/markdown.ts +2 -1
- package/src/ai/mcp/data.ts +6 -0
- package/src/ai/openapi-components.ts +9 -3
- package/src/ai/site-skill.ts +274 -0
- package/src/ai/skills.ts +35 -2
- package/src/ai/write-skill.ts +97 -0
- package/src/astro/generate.ts +132 -18
- package/src/astro/index.ts +1 -0
- package/src/astro/integration.ts +35 -0
- package/src/astro/module-types.ts +6 -0
- package/src/astro/templates.ts +283 -30
- package/src/astro/variables.ts +31 -0
- package/src/audit/catalog.ts +19 -0
- package/src/audit/checks/contrast.ts +183 -0
- package/src/audit/checks/i18n.ts +2 -3
- package/src/audit/checks/indexability.ts +2 -3
- package/src/audit/checks/links.ts +5 -12
- package/src/audit/checks/sitemap.ts +2 -3
- package/src/audit/redirects.ts +46 -15
- package/src/audit/run.ts +2 -0
- package/src/audit/types.ts +2 -1
- package/src/blume-modules.d.ts +7 -0
- package/src/captcha/client.ts +152 -0
- package/src/captcha/hcaptcha.ts +36 -0
- package/src/captcha/index.ts +28 -0
- package/src/captcha/schema.ts +32 -0
- package/src/captcha/turnstile.ts +38 -0
- package/src/captcha/verify.ts +71 -0
- package/src/cli/command-meta.ts +5 -0
- package/src/cli/commands/doctor.ts +22 -16
- package/src/cli/commands/skill.ts +96 -0
- package/src/cli/index.ts +5 -0
- package/src/cli/required-secrets.ts +71 -29
- package/src/components/BlumePage.astro +2 -0
- package/src/components/content/ApiEndpoint.astro +18 -0
- package/src/components/content/ApiField.astro +79 -0
- package/src/components/content/ApiPlayground.astro +62 -0
- package/src/components/content/ApiRail.astro +19 -0
- package/src/components/content/Color.astro +1 -0
- package/src/components/content/FileTree.astro +1 -0
- package/src/components/content/GithubInfo.astro +1 -0
- package/src/components/content/Panel.astro +1 -0
- package/src/components/content/ParamField.astro +25 -0
- package/src/components/content/RequestExample.astro +17 -0
- package/src/components/content/ResponseExample.astro +17 -0
- package/src/components/content/ResponseField.astro +32 -0
- package/src/components/content/Step.astro +1 -0
- package/src/components/content/Tile.astro +1 -0
- package/src/components/content/Tooltip.astro +1 -0
- package/src/components/content/Tree.astro +1 -0
- package/src/components/content/TypeTable.astro +4 -1
- package/src/components/content/View.astro +21 -0
- package/src/components/content/ViewSwitcher.astro +168 -0
- package/src/components/content/api-field.ts +100 -0
- package/src/components/content/api-page.ts +224 -0
- package/src/components/content/view-switcher.ts +71 -0
- package/src/components/index.ts +2 -0
- package/src/components/islands/Assistant.astro +10 -1
- package/src/components/islands/assistant.tsx +104 -14
- package/src/components/islands/code-question.ts +62 -0
- package/src/components/islands/hooks.ts +110 -21
- package/src/components/islands/support-link.ts +68 -0
- package/src/components/layout/Analytics.astro +11 -2
- package/src/components/layout/Banner.astro +14 -10
- package/src/components/layout/Breadcrumbs.astro +6 -2
- package/src/components/layout/ConsentBanner.astro +62 -0
- package/src/components/layout/ConsentHead.astro +38 -0
- package/src/components/layout/Directory.astro +94 -0
- package/src/components/layout/DrawerSwitchers.astro +51 -0
- package/src/components/layout/Empty.astro +2 -2
- package/src/components/layout/Header.astro +122 -80
- package/src/components/layout/LanguageSwitcher.astro +48 -15
- package/src/components/layout/NarrationPlayer.astro +1085 -0
- package/src/components/layout/NavSelector.astro +33 -7
- package/src/components/layout/PageFeedback.astro +54 -49
- package/src/components/layout/PageLayout.astro +71 -3
- package/src/components/layout/ReferenceLayout.astro +17 -6
- package/src/components/layout/RelatedPages.astro +42 -0
- package/src/components/layout/RootLayout.astro +308 -45
- package/src/components/layout/Search.astro +31 -17
- package/src/components/layout/SiteFooter.astro +124 -0
- package/src/components/layout/SiteMetatags.astro +16 -0
- package/src/components/layout/consent/native.ts +79 -0
- package/src/components/layout/consent/types.ts +37 -0
- package/src/components/layout/footer-links.ts +53 -0
- package/src/components/layout/footer-socials.ts +87 -0
- package/src/components/layout/locale-redirect.ts +107 -0
- package/src/components/layout/nav-utils.ts +83 -0
- package/src/components/layout/page-feedback.ts +96 -0
- package/src/components/layout/search/analytics.ts +98 -0
- package/src/components/layout/search/flexsearch.ts +17 -5
- package/src/components/layout/search/orama-cloud.ts +26 -14
- package/src/components/layout/search/types.ts +20 -0
- package/src/components/layout/search/typesense.ts +5 -1
- package/src/components/openapi/Operation.astro +161 -13
- package/src/components/openapi/RequestBody.astro +6 -4
- package/src/components/openapi/RequestPanel.astro +59 -7
- package/src/components/openapi/Responses.astro +6 -4
- package/src/components/openapi/async-snippets.ts +4 -4
- package/src/components/openapi/code-samples.ts +97 -0
- package/src/components/openapi/security.ts +6 -3
- package/src/components/openapi/snippets.ts +869 -8
- package/src/components/props.ts +6 -0
- package/src/consent/client.ts +95 -0
- package/src/consent/clients.ts +19 -0
- package/src/consent/ethyca.ts +71 -0
- package/src/consent/head.ts +24 -0
- package/src/consent/index.ts +37 -0
- package/src/consent/init.ts +29 -0
- package/src/consent/native.ts +36 -0
- package/src/consent/osano.ts +59 -0
- package/src/consent/schema.ts +30 -0
- package/src/core/builtin-tags.ts +5 -0
- package/src/core/client-address.ts +19 -0
- package/src/core/config-input.ts +194 -20
- package/src/core/data.ts +44 -4
- package/src/core/diagnostics.ts +3 -2
- package/src/core/footer.ts +26 -0
- package/src/core/graph.ts +39 -36
- package/src/core/i18n-ui.ts +82 -2
- package/src/core/includes.ts +20 -3
- package/src/core/links.ts +16 -2
- package/src/core/localizable.ts +26 -0
- package/src/core/navigation.ts +43 -12
- package/src/core/page-modes.ts +56 -0
- package/src/core/project-graph.ts +111 -5
- package/src/core/redirect-patterns.ts +491 -0
- package/src/core/related.ts +131 -0
- package/src/core/schema.ts +318 -64
- package/src/core/sources/normalize.ts +2 -1
- package/src/core/sources/read.ts +8 -3
- package/src/core/types.ts +1 -1
- package/src/core/ui-packs/ar.ts +43 -0
- package/src/core/ui-packs/bg.ts +45 -0
- package/src/core/ui-packs/bn.ts +43 -0
- package/src/core/ui-packs/ca.ts +46 -0
- package/src/core/ui-packs/cs.ts +44 -0
- package/src/core/ui-packs/da.ts +45 -0
- package/src/core/ui-packs/de.ts +46 -0
- package/src/core/ui-packs/el.ts +45 -0
- package/src/core/ui-packs/es.ts +46 -0
- package/src/core/ui-packs/fa.ts +45 -0
- package/src/core/ui-packs/fi.ts +45 -0
- package/src/core/ui-packs/fr.ts +46 -0
- package/src/core/ui-packs/he.ts +43 -0
- package/src/core/ui-packs/hi.ts +44 -0
- package/src/core/ui-packs/hr.ts +45 -0
- package/src/core/ui-packs/hu.ts +44 -0
- package/src/core/ui-packs/id.ts +45 -0
- package/src/core/ui-packs/it.ts +45 -0
- package/src/core/ui-packs/ja.ts +45 -0
- package/src/core/ui-packs/ko.ts +44 -0
- package/src/core/ui-packs/nl.ts +46 -0
- package/src/core/ui-packs/no.ts +44 -0
- package/src/core/ui-packs/pl.ts +45 -0
- package/src/core/ui-packs/pt-br.ts +46 -0
- package/src/core/ui-packs/pt.ts +45 -0
- package/src/core/ui-packs/ro.ts +45 -0
- package/src/core/ui-packs/ru.ts +45 -0
- package/src/core/ui-packs/sk.ts +44 -0
- package/src/core/ui-packs/sr.ts +45 -0
- package/src/core/ui-packs/sv.ts +44 -0
- package/src/core/ui-packs/th.ts +43 -0
- package/src/core/ui-packs/tr.ts +45 -0
- package/src/core/ui-packs/uk.ts +45 -0
- package/src/core/ui-packs/vi.ts +45 -0
- package/src/core/ui-packs/zh-tw.ts +43 -0
- package/src/core/ui-packs/zh.ts +43 -0
- package/src/core/variables.ts +103 -0
- package/src/deploy/artifacts.ts +77 -8
- package/src/deploy/cloudflare-negotiation.ts +35 -5
- package/src/deploy/headers.ts +2 -1
- package/src/deploy/node-headers.ts +63 -9
- package/src/deploy/platforms/cloudflare.ts +32 -0
- package/src/deploy/platforms/netlify.ts +33 -1
- package/src/deploy/platforms/vercel.ts +37 -2
- package/src/deploy/redirects.ts +91 -24
- package/src/deploy/vercel-negotiation.ts +36 -0
- package/src/markdown/api-rail.ts +259 -0
- package/src/markdown/code-title.ts +35 -9
- package/src/markdown/features.ts +3 -2
- package/src/markdown/fence-meta.ts +2 -0
- package/src/markdown/include.ts +11 -1
- package/src/markdown/index.ts +28 -5
- package/src/markdown/math.ts +4 -4
- package/src/markdown/variables.ts +56 -0
- package/src/markdown/views.ts +82 -0
- package/src/narration/build.ts +412 -0
- package/src/narration/player.ts +249 -0
- package/src/narration/provider.ts +29 -0
- package/src/narration/script.ts +592 -0
- package/src/og/card.ts +7 -6
- package/src/openapi/model.ts +57 -24
- package/src/openapi/overlay.ts +256 -0
- package/src/openapi/parse.ts +55 -2
- package/src/openapi/references.ts +21 -5
- package/src/openapi/render-mdx.ts +5 -1
- package/src/openapi/scalar.ts +40 -6
- package/src/openapi/source.ts +1 -1
- package/src/ratelimit/cloudflare.ts +54 -0
- package/src/ratelimit/index.ts +30 -0
- package/src/ratelimit/memory.ts +45 -0
- package/src/ratelimit/runtime.ts +229 -0
- package/src/ratelimit/schema.ts +28 -0
- package/src/ratelimit/upstash.ts +30 -0
- package/src/ratelimit/wrangler.ts +70 -0
- package/src/reference/asyncapi.ts +2 -2
- package/src/reference/graphql.ts +5 -2
- package/src/reference/openapi.ts +21 -7
- package/src/reference/options.ts +51 -7
- package/src/reference/scalar.ts +33 -8
- package/src/registry/eject.ts +20 -4
- package/src/registry/registry.ts +7 -0
- package/src/search/documents.ts +26 -2
- package/src/search/orama-index.ts +28 -3
- package/src/search/pagefind-ranking.ts +39 -0
- package/src/search/sync/algolia.ts +15 -4
- package/src/search/sync/orama-cloud.ts +3 -0
- package/src/search/sync/typesense.ts +5 -0
- package/src/seo/metatags.ts +67 -0
- package/src/theme/chrome-icons.ts +1 -0
- package/src/theme/color.ts +500 -0
- package/src/theme/entry.ts +56 -3
- package/src/theme/palette.ts +121 -45
- package/src/translate/prompts.ts +1 -0
- package/src/translate/validate.ts +8 -2
- package/src/upgrade/upgrade.ts +4 -171
- package/dist/cli/chunk-364znk6q.js +0 -75
- package/dist/cli/chunk-364znk6q.js.map +0 -11
- package/dist/cli/chunk-5m5nmvyq.js.map +0 -13
- package/dist/cli/chunk-9t7a85s3.js.map +0 -10
- package/dist/cli/chunk-c8chx29p.js.map +0 -36
- package/dist/cli/chunk-pehfxfta.js.map +0 -10
- package/dist/cli/chunk-pv29h0wf.js.map +0 -190
- package/dist/cli/chunk-q58y5e6a.js.map +0 -10
- package/dist/cli/chunk-wrr3j9w9.js.map +0 -35
- package/dist/cli/chunk-yfyb25rh.js.map +0 -14
- package/docs/content/sources.mdx +0 -334
- /package/dist/cli/{chunk-2eytanqx.js.map → chunk-1n228xqb.js.map} +0 -0
- /package/dist/cli/{chunk-35d4wj9f.js.map → chunk-2n4ps1b3.js.map} +0 -0
- /package/dist/cli/{chunk-e04dxsz1.js.map → chunk-4ejxbzee.js.map} +0 -0
- /package/dist/cli/{chunk-tzmab476.js.map → chunk-5ffywsmb.js.map} +0 -0
- /package/dist/cli/{chunk-2z928egk.js.map → chunk-5wj2qwn2.js.map} +0 -0
- /package/dist/cli/{chunk-b07cmahc.js.map → chunk-amrb6hgh.js.map} +0 -0
- /package/dist/cli/{chunk-akbpwfxc.js.map → chunk-cmtcnh9f.js.map} +0 -0
- /package/dist/cli/{chunk-crgn1q09.js.map → chunk-e7vvk5ya.js.map} +0 -0
- /package/dist/cli/{chunk-tkacnehg.js.map → chunk-gp84za0h.js.map} +0 -0
- /package/dist/cli/{chunk-r9rcc4w7.js.map → chunk-p804f3pe.js.map} +0 -0
- /package/dist/cli/{chunk-8ktnccpt.js.map → chunk-ta27feev.js.map} +0 -0
- /package/dist/cli/{chunk-a58773jm.js.map → chunk-y4ykbark.js.map} +0 -0
- /package/dist/cli/{chunk-p3v96n38.js.map → chunk-y5h4r2y0.js.map} +0 -0
- /package/dist/cli/{chunk-acanzt5p.js.map → chunk-yj17vs39.js.map} +0 -0
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/core/manifest.ts", "../src/core/project-graph.ts", "../src/core/directive-diagnostics.ts", "../src/markdown/directives.ts", "../src/theme/icon-kind.ts", "../src/theme/icons.ts", "../src/core/nav-diagnostics.ts", "../src/core/graph.ts", "../src/core/last-modified.ts", "../src/core/meta.ts", "../src/core/sources/resolve.ts", "../src/core/sources/
|
|
3
|
+
"sources": ["../src/core/manifest.ts", "../src/core/project-graph.ts", "../src/core/directive-diagnostics.ts", "../src/markdown/directives.ts", "../src/core/localizable.ts", "../src/theme/icon-kind.ts", "../src/theme/icons.ts", "../src/core/nav-diagnostics.ts", "../src/core/graph.ts", "../src/core/last-modified.ts", "../src/core/meta.ts", "../src/core/sources/resolve.ts", "../src/core/sources/contentful-rich-text.ts", "../src/core/sources/remote.ts", "../src/core/sources/contentful.ts", "../src/core/sources/filesystem.ts", "../src/core/sources/github-releases.ts", "../src/core/sources/mdx-remote.ts", "../src/core/sources/notion.ts", "../src/core/sources/assets.ts", "../src/core/sources/obsidian.ts", "../src/core/sources/lexical.ts", "../src/core/sources/payload.ts", "../src/core/sources/sanity.ts", "../src/core/sources/portable-text.ts", "../src/core/sources/strapi-blocks.ts", "../src/core/sources/strapi.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { mountBasePath } from \"./base-path.ts\";\nimport { localizeRoute, resolveFallbackLocale } from \"./i18n.ts\";\nimport type { ResolvedConfig } from \"./schema.ts\";\nimport type {\n BlumeManifest,\n ContentGraph,\n PageRecord,\n ProjectContext,\n RouteAlternate,\n RouteManifestEntry,\n VersionAlternate,\n} from \"./types.ts\";\nimport { getBlumeVersion } from \"./version.ts\";\n\n/**\n * Key for the same logical page across versions within one locale: the\n * version- and locale-agnostic route plus the locale code. NUL never appears\n * in either part, so the join is unambiguous.\n */\nconst versionAlternateKey = (versionKey: string, locale: string): string =>\n `${versionKey}\\u0000${locale}`;\n\n/**\n * Get-or-create the shared alternate list for a (versionKey, locale) pair.\n * Lists are attached to route entries by reference and mutated as fallback\n * routes materialize, then sorted once at the end — every holder sees the\n * final list.\n */\nconst versionAlternatesFor = (\n byKey: Map<string, VersionAlternate[]>,\n versionKey: string,\n locale: string\n): VersionAlternate[] => {\n const key = versionAlternateKey(versionKey, locale);\n const existing = byKey.get(key);\n if (existing) {\n return existing;\n }\n const list: VersionAlternate[] = [];\n byKey.set(key, list);\n return list;\n};\n\n/** The current manifest schema version. */\nexport const MANIFEST_VERSION = 1;\n\n/**\n * Whether a page may be indexed on its own merits — not author-excluded and not\n * hidden (unless hidden pages are opted in). This is independent of whether the\n * site search provider is enabled, so features like the MCP server can index\n * docs even when on-page search is off.\n */\nexport const contentIndexable = (\n page: PageRecord,\n config: ResolvedConfig\n): boolean =>\n !page.meta.search.exclude &&\n (!page.meta.sidebar.hidden || config.search.indexing.includeHiddenPages);\n\n/**\n * Fallback materialization: render the fallback locale's content at the\n * localized URL for any translation a non-default locale is missing, so static\n * output is fully prerendered (render-fallback, no client redirect). Fallback\n * routes are not indexed and carry no `hreflang` of their own.\n */\n/**\n * The description a page's `<head>` emits — `seo.description` over the front\n * matter `description` — mirrored onto its route so the OG card's subtitle\n * matches the page's `og:description`.\n */\nconst routeDescription = (page: PageRecord): string | undefined =>\n page.meta.seo.description ?? page.description;\n\nconst buildFallbackRoutes = (\n graph: ContentGraph,\n i18n: NonNullable<ResolvedConfig[\"i18n\"]>,\n alternatesByKey: Map<string, RouteAlternate[]>,\n basePath: string,\n versionAlternatesByKey: Map<string, VersionAlternate[]> | undefined\n): RouteManifestEntry[] => {\n const fallback = resolveFallbackLocale(i18n);\n if (!fallback) {\n return [];\n }\n // A monolingual page (a GitHub release) publishes in one language only, so it\n // gets no copy at every other locale's URL: those would be duplicates of the\n // same text under a translated chrome.\n const fallbackPages = new Map(\n graph.pages.flatMap((page) =>\n page.locale === fallback && !page.monolingual\n ? [[page.translationKey, page] as const]\n : []\n )\n );\n const routes: RouteManifestEntry[] = [];\n for (const { code } of i18n.locales) {\n if (code === fallback) {\n continue;\n }\n const present = new Set(\n graph.pages.flatMap((page) =>\n page.locale === code ? [page.translationKey] : []\n )\n );\n for (const [key, source] of fallbackPages) {\n if (present.has(key)) {\n continue;\n }\n const path = mountBasePath(basePath, localizeRoute(key, code, i18n));\n // A fallback route is a real prerendered page, so it registers as a\n // version alternate too — the switcher on a sibling version's page\n // lands here instead of bouncing to the version root. Its own path is\n // recorded (not the fallback source's), keeping the target in-locale.\n const versionAlternates: VersionAlternate[] = versionAlternatesByKey\n ? versionAlternatesFor(versionAlternatesByKey, source.versionKey, code)\n : [];\n if (versionAlternatesByKey) {\n versionAlternates.push({ path, version: source.version });\n }\n routes.push({\n alternates: alternatesByKey.get(key) ?? [],\n collection: source.collection ?? \"docs\",\n contentType: source.contentType,\n description: routeDescription(source),\n draft: source.meta.draft,\n editUrl: source.editUrl,\n entryId: source.entryId ?? source.source.ref,\n fallback: true,\n hidden: source.meta.sidebar.hidden,\n id: source.id,\n indexable: false,\n lastModified: source.lastModified,\n locale: code,\n monolingual: source.monolingual,\n path,\n source: source.source,\n sourcePath: source.sourcePath,\n title: source.title,\n version: source.version,\n versionAlternates,\n });\n }\n }\n return routes;\n};\n\n/** Build the runtime manifest that bridges core and the generated Astro app. */\nexport const buildManifest = (options: {\n context: ProjectContext;\n config: ResolvedConfig;\n graph: ContentGraph;\n}): BlumeManifest => {\n const { context, config, graph } = options;\n const searchEnabled = config.search.provider.mode !== \"none\";\n const { i18n } = config;\n\n // Real translations per logical page, for `hreflang` and the switcher. Built\n // only under i18n; a single-locale page has no alternates.\n const alternatesByKey = new Map<string, RouteAlternate[]>();\n if (i18n) {\n for (const page of graph.pages) {\n const list = alternatesByKey.get(page.translationKey) ?? [];\n list.push({ locale: page.locale, path: page.route });\n alternatesByKey.set(page.translationKey, list);\n }\n }\n\n // The same logical page across versions, within each locale — for the\n // version switcher and the canonical-to-latest lookup. Built only under\n // versioning; lists are shared by reference and finalized (fallback routes\n // appended, then sorted) before the manifest is returned.\n const versionAlternatesByKey = config.versions\n ? new Map<string, VersionAlternate[]>()\n : undefined;\n if (versionAlternatesByKey) {\n for (const page of graph.pages) {\n versionAlternatesFor(\n versionAlternatesByKey,\n page.versionKey,\n page.locale\n ).push({ path: page.route, version: page.version });\n }\n }\n\n const routes: RouteManifestEntry[] = graph.pages.map((page) => ({\n aiExclude: page.meta.ai.exclude,\n alternates: alternatesByKey.get(page.translationKey) ?? [],\n collection: page.collection ?? \"docs\",\n contentType: page.contentType,\n description: routeDescription(page),\n draft: page.meta.draft,\n editUrl: page.editUrl,\n entryId: page.entryId ?? page.source.ref,\n hidden: page.meta.sidebar.hidden,\n id: page.id,\n indexable: searchEnabled && contentIndexable(page, config),\n lastModified: page.lastModified,\n locale: page.locale,\n monolingual: page.monolingual,\n path: page.route,\n source: page.source,\n sourcePath: page.sourcePath,\n title: page.title,\n version: page.version,\n versionAlternates: versionAlternatesByKey\n ? versionAlternatesFor(\n versionAlternatesByKey,\n page.versionKey,\n page.locale\n )\n : [],\n }));\n\n if (i18n) {\n routes.push(\n ...buildFallbackRoutes(\n graph,\n i18n,\n alternatesByKey,\n config.basePath,\n versionAlternatesByKey\n )\n );\n }\n\n // Alternate lists read current-first, then archived versions in configured\n // (switcher) order. Sorted once here — every route holding a list by\n // reference sees the final ordering.\n if (versionAlternatesByKey && config.versions) {\n const rank = new Map<string, number>(\n config.versions.archived.map((version, index) => [version.id, index + 1])\n );\n for (const list of versionAlternatesByKey.values()) {\n list.sort(\n (a, b) => (rank.get(a.version) ?? 0) - (rank.get(b.version) ?? 0)\n );\n }\n }\n\n routes.sort((a, b) => a.path.localeCompare(b.path));\n\n return {\n blumeVersion: getBlumeVersion(),\n contentRoot: context.contentRoot,\n output: config.deployment.options.output,\n projectRoot: context.root,\n routes,\n version: MANIFEST_VERSION,\n };\n};\n",
|
|
6
|
-
"import { isAbsolute, relative } from \"pathe\";\n\nimport { CHANGELOG_INDEX_ROUTE, hasChangelogIndex } from \"./changelog-index.ts\";\nimport { loadConfig } from \"./config.ts\";\nimport { customStaticRoutes, discoverPages } from \"./custom-pages.ts\";\nimport { unknownDirectiveDiagnostics } from \"./directive-diagnostics.ts\";\nimport { buildContentGraph } from \"./graph.ts\";\nimport { i18nDiagnostics } from \"./i18n.ts\";\nimport { expandIncludes, hasIncludeStatements } from \"./includes.ts\";\nimport {\n gitLastModifiedTimes,\n gitRepositoryRoot,\n lastModifiedShallowWarning,\n realPath,\n resolveLastModifiedConfig,\n} from \"./last-modified.ts\";\nimport { buildManifest } from \"./manifest.ts\";\nimport { discoverFolderMeta } from \"./meta.ts\";\nimport type { FolderMetaSource } from \"./meta.ts\";\nimport { resolveProjectContext } from \"./project.ts\";\nimport type { ResolvedConfig } from \"./schema.ts\";\nimport { normalizeEntry, strippedLineOffset } from \"./sources/normalize.ts\";\nimport { resolveDocsCollection, resolveSources } from \"./sources/resolve.ts\";\nimport type { ContentSource, SourceLoadResult } from \"./sources/types.ts\";\nimport type {\n BlumeManifest,\n ContentGraph,\n Diagnostic,\n ExampleLookup,\n PageRecord,\n ProjectContext,\n} from \"./types.ts\";\nimport { versionsDiagnostics } from \"./versions.ts\";\n\n/** Build mode: drafts are kept in `dev` and dropped in `build`. */\nexport type BuildMode = \"dev\" | \"build\";\n\n/** CLI-supplied overrides applied over the loaded config (see `scanProject`). */\nexport interface ConfigOverrides {\n /** Override `content.root` (`blume dev --content-dir`). */\n contentRoot?: string;\n}\n\n/**\n * Whether `path` sits at or under `dir`. A relative result that is itself\n * absolute means a different drive root on Windows, which is outside too.\n */\nexport const isWithin = (dir: string, path: string): boolean => {\n const rel = relative(dir, path);\n return !(rel.startsWith(\"..\") || isAbsolute(rel));\n};\n\n/** Apply CLI config overrides onto a resolved config (returns a new object). */\nconst applyConfigOverrides = (\n config: ResolvedConfig,\n overrides?: ConfigOverrides\n): ResolvedConfig => {\n if (!overrides) {\n return config;\n }\n // `--content-dir` re-roots every filesystem source: with one (the\n // zero-config case) it is exactly the old `content.root` override, and\n // several must share a root anyway (see `resolveDocsCollection`).\n const { contentRoot } = overrides;\n const sources = contentRoot\n ? config.content.sources.map((source) =>\n source.kind === \"filesystem\"\n ? { ...source, options: { ...source.options, root: contentRoot } }\n : source\n )\n : config.content.sources;\n return {\n ...config,\n content: { ...config.content, sources },\n };\n};\n\n/** Everything Blume knows about a project after a full scan. */\nexport interface BlumeProject {\n mode: BuildMode;\n context: ProjectContext;\n config: ResolvedConfig;\n graph: ContentGraph;\n manifest: BlumeManifest;\n diagnostics: Diagnostic[];\n /** Entries excluded from the graph because their frontmatter failed validation. */\n droppedPages: number;\n /** The instantiated content sources, for lazy entry reads (search/AI/raw). */\n sources: ContentSource[];\n /**\n * Whether the config file set `theme.fonts` itself (see\n * {@link ConfigLoadResult.themeFontsConfigured}); gates OG font derivation.\n */\n themeFontsConfigured: boolean;\n /**\n * Discovered `examples/` sources keyed by `<Component path>`, attached by the\n * runtime/eject layer after {@link scanProject} (example discovery is an Astro\n * concern, so core doesn't run it). Undefined until then; the agent-facing\n * Markdown downleveler reads it to turn `<Component path=\"…\" />` into the\n * example's source. Empty when the project has no examples.\n */\n examples?: ExampleLookup;\n}\n\n/**\n * Guard the invariant that ties a filesystem page to the `docs` collection:\n * Astro ids each collection entry by its path relative to the collection base,\n * so `getEntry(\"docs\", entryId)` only resolves when that entry id equals\n * `relative(base, file)`. A filesystem source ids entries relative to its own\n * root; when that root can't be the collection base (e.g. a second filesystem\n * source rooted elsewhere), the ids diverge and every one of that source's pages\n * would 404 in dev (a static build silently masks it). Emit a hard error naming\n * the mismatch so it can't ship, instead of a silent runtime failure. One\n * diagnostic per file (locale duplicates share a source path).\n */\nconst entryIdDiagnostics = (\n pages: PageRecord[],\n collectionBase: string\n): Diagnostic[] => {\n const diagnostics: Diagnostic[] = [];\n const seen = new Set<string>();\n for (const page of pages) {\n // Only filesystem entries render through the base-rooted `docs` collection;\n // staged sources carry their own id and collection.\n if (page.collection || !page.sourcePath || seen.has(page.sourcePath)) {\n continue;\n }\n seen.add(page.sourcePath);\n const expected = relative(collectionBase, page.sourcePath)\n .split(\"\\\\\")\n .join(\"/\");\n const entryId = page.entryId ?? page.source.ref;\n if (expected !== entryId) {\n diagnostics.push({\n code: \"BLUME_ENTRY_ID_MISMATCH\",\n file: page.sourcePath,\n message: `Content source \"${page.source.name}\" is rooted outside the docs collection base, so ${page.route} resolves entry id \"${entryId}\" but the collection would generate \"${expected}\" — the page would 404 at runtime.`,\n severity: \"error\",\n suggestion:\n \"Use a single filesystem() source (the docs collection roots at it), or give every filesystem() source the same root and partition them with include globs — a root at a subdirectory of the first source's root still mismatches.\",\n });\n }\n }\n return diagnostics;\n};\n\n/**\n * Funnel every loaded source's entries through the shared `normalizeEntry`,\n * collecting pages, diagnostics, and the count of entries dropped outright —\n * an entry that yields no pages but did yield diagnostics was rejected for\n * invalid frontmatter, and callers surface that count so a build with missing\n * pages can't read as clean.\n */\nconst normalizeLoadedEntries = (\n loaded: ({ source: ContentSource } & SourceLoadResult)[],\n config: ResolvedConfig\n) => {\n // Only thread `frontmatter.extend` / `content.types` through when a project\n // opts in, so the known-key split in `normalizeEntry` stays off the default\n // path.\n const frontmatterExtend =\n Object.keys(config.frontmatter.extend).length > 0\n ? config.frontmatter.extend\n : undefined;\n const declaredTypes = Object.entries(config.content.types).filter(\n ([, type]) => Object.keys(type.frontmatter).length > 0\n );\n const typeFrontmatter =\n declaredTypes.length > 0\n ? Object.fromEntries(\n declaredTypes.map(([name, type]) => [name, type.frontmatter])\n )\n : undefined;\n\n const pages: PageRecord[] = [];\n const allDiagnostics: Diagnostic[] = [];\n let droppedPages = 0;\n for (const { source, entries, diagnostics } of loaded) {\n allDiagnostics.push(...diagnostics);\n for (const entry of entries) {\n const normalized = normalizeEntry(entry, {\n basePath: config.basePath,\n defaultType: config.content.defaultType,\n frontmatterExtend,\n i18n: config.i18n,\n source: {\n monolingual: source.monolingual,\n name: source.name,\n orderedNames: source.orderedNames,\n prefix: source.prefix,\n staged: source.staged,\n },\n typeFrontmatter,\n versions: config.versions,\n });\n if (normalized.pages.length === 0 && normalized.diagnostics.length > 0) {\n droppedPages += 1;\n }\n pages.push(...normalized.pages);\n allDiagnostics.push(...normalized.diagnostics);\n if (normalized.pages.length > 0) {\n allDiagnostics.push(...unknownDirectiveDiagnostics(entry, source.name));\n }\n }\n }\n return { diagnostics: allDiagnostics, droppedPages, pages };\n};\n\n/**\n * The local sources' on-disk roots a `git log` pathspec can cover: those\n * inside the repository at `gitRoot`. A root outside it would fail the log\n * outright and can never yield dates. Compared by real path, since git spells\n * its toplevel with every symlink resolved (`/private/tmp/site` for a project\n * opened as `/tmp/site`); the roots themselves keep the project's spelling.\n */\nconst gitContentRoots = (\n sources: readonly ContentSource[],\n gitRoot: string | null\n): string[] => {\n if (gitRoot === null) {\n return [];\n }\n const top = realPath(gitRoot);\n return sources\n .flatMap((source) => (source.contentRoot ? [source.contentRoot] : []))\n .filter((dir) => isWithin(top, realPath(dir)));\n};\n\n/**\n * Run the full core pipeline for a project root: load config, resolve paths,\n * discover content and folder meta, build the graph, and assemble the manifest.\n * Collects all diagnostics without throwing on content-level problems so\n * callers can decide how strict to be.\n */\n/** Narrows the logo config's image shorthand from its object form. */\nconst isLogoShorthand = (\n logo: NonNullable<ResolvedConfig[\"logo\"]>\n): logo is string => typeof logo === \"string\";\n\n/** The configured brand link: `logo.href`, else the site root. */\nconst logoHref = (logo: ResolvedConfig[\"logo\"]): string =>\n logo === undefined || isLogoShorthand(logo) ? \"/\" : (logo.href ?? \"/\");\n\n/** Narrows the banner config's text shorthand from its object form. */\nconst isBannerShorthand = (\n banner: NonNullable<ResolvedConfig[\"banner\"]>\n): banner is string => typeof banner === \"string\";\n\n/** The configured banner link target, when the banner has a link. */\nconst bannerLinkHref = (\n banner: ResolvedConfig[\"banner\"]\n): string | undefined =>\n banner === undefined || isBannerShorthand(banner)\n ? undefined\n : banner.link?.href;\n\nexport const scanProject = async (\n root: string,\n options: {\n devServerUrl?: string;\n mode?: BuildMode;\n preview?: boolean;\n refresh?: boolean;\n /** CLI overrides applied over the loaded config (e.g. `--output`). */\n overrides?: ConfigOverrides;\n /** Relocate the generated runtime (e.g. `.blume-verify` for isolation). */\n runtimeDir?: string;\n } = {}\n): Promise<BlumeProject> => {\n const mode = options.mode ?? \"dev\";\n const preview = options.preview ?? false;\n const configResult = await loadConfig(root, {\n devServerUrl: options.devServerUrl,\n });\n const config = applyConfigOverrides(configResult.config, options.overrides);\n const context = resolveProjectContext(root, config, {\n runtimeDir: options.runtimeDir,\n });\n\n // Each source validates itself (e.g. the filesystem source checks its root\n // exists), replacing the single hard `contentRoot` check.\n const sources = resolveSources(config, context, {\n mode,\n preview,\n refresh: options.refresh,\n });\n for (const source of sources) {\n source.validate?.();\n }\n\n // Folder meta is discovered per filesystem source, under each source's own\n // root and keyed by its route prefix, so a prefixed/root-differing source's\n // `meta.ts` still lines up with its (prefixed) sidebar group path.\n const metaSources: FolderMetaSource[] = sources.flatMap((source) =>\n source.staged || !source.contentRoot\n ? []\n : [\n {\n exclude: source.exclude,\n include: source.include,\n prefix: source.prefix,\n root: source.contentRoot,\n },\n ]\n );\n\n // Run every source's `load()` in parallel, then funnel each entry through the\n // shared `normalizeEntry` so route mapping is identical regardless of origin.\n // Under the `dir` parser, non-default locales are top-level directories whose\n // meta keys must carry the locale in front of the source prefix (see\n // `discoverFolderMeta`).\n const localeDirs =\n config.i18n && config.i18n.parser === \"dir\"\n ? config.i18n.locales.flatMap((locale) =>\n locale.code === config.i18n?.defaultLocale ? [] : [locale.code]\n )\n : undefined;\n\n const [loaded, folderMeta] = await Promise.all([\n Promise.all(\n sources.map(async (source) => ({ source, ...(await source.load()) }))\n ),\n discoverFolderMeta(metaSources, {\n localeDirs,\n versionDirs: config.versions?.archived.map((version) => version.id),\n }),\n ]);\n\n // Expand `<include>` statements before normalization, so heading/link/\n // component extraction sees the spliced content every render surface shows.\n // Filesystem entries only: includes resolve as filesystem paths bounded by\n // the owning source's content root. Unresolvable statements stay verbatim\n // and surface as error diagnostics here.\n const includeDiagnostics: Diagnostic[] = [];\n await Promise.all(\n loaded.flatMap(({ source, entries }) => {\n if (source.staged || !source.contentRoot) {\n return [];\n }\n return entries.map(async (entry) => {\n if (!entry.sourcePath || !hasIncludeStatements(entry.body.text)) {\n return;\n }\n const expansion = await expandIncludes(entry.body.text, {\n contentRoot: source.contentRoot,\n lineOffset: strippedLineOffset(entry.raw, entry.body.text),\n sourcePath: entry.sourcePath,\n });\n entry.expanded = expansion;\n includeDiagnostics.push(...expansion.errors);\n });\n })\n );\n\n // Folder meta contributed by the sources themselves (the OpenAPI source\n // labels each tag directory with the spec's own tag name). It applies to\n // every locale, so it merges into the shared map — beneath user-authored\n // entries, which are spread last and win.\n const sharedFolderMeta = new Map([\n ...loaded.flatMap(({ folderMeta: sourceMeta }) =>\n Object.entries(sourceMeta ?? {})\n ),\n ...folderMeta.shared,\n ]);\n\n const {\n diagnostics: contentDiagnostics,\n droppedPages,\n pages: allPages,\n } = normalizeLoadedEntries(loaded, config);\n\n // Drafts render in dev and in preview, but are excluded from production builds.\n const pages =\n mode === \"build\" && !preview\n ? allPages.filter((page) => !page.meta.draft)\n : allPages;\n\n // Resolve \"last updated\" dates before the graph is built so the manifest\n // (which shares these page objects) picks them up. Frontmatter always wins;\n // git applies to filesystem entries, other sources supply dates on the entry.\n const lastModified = resolveLastModifiedConfig(config.lastModified);\n const lastModifiedWarnings: Diagnostic[] = [];\n if (lastModified.enabled && lastModified.source === \"git\") {\n const fsPaths = pages\n .map((page) => page.sourcePath)\n .filter((path): path is string => path !== undefined);\n // The git pathspecs must cover where the pages actually live: each local\n // source's own on-disk root — a filesystem source's `root`, or a staged\n // local source's tree (an Obsidian vault) — which diverges from the global\n // `content.root`.\n const gitRoot = gitRepositoryRoot(context.root);\n const contentRoots = gitContentRoots(sources, gitRoot);\n const gitTimes = gitLastModifiedTimes(\n context.root,\n contentRoots,\n fsPaths,\n gitRoot\n );\n for (const page of pages) {\n if (!page.lastModified && page.sourcePath) {\n page.lastModified = gitTimes.get(page.sourcePath);\n }\n }\n // A shallow CI clone (Vercel, actions/checkout) silently drops most dates;\n // surface that instead of letting production diverge from local builds.\n // Only pages the log could have dated count — a page outside every covered\n // root stays undated no matter how deep the clone is, and the warning's\n // suggested fix cannot help it.\n const undated = pages.filter(\n (page) =>\n page.sourcePath &&\n !page.lastModified &&\n contentRoots.some((dir) => isWithin(dir, page.sourcePath ?? \"\"))\n ).length;\n lastModifiedWarnings.push(\n ...lastModifiedShallowWarning(context.root, undated)\n );\n }\n\n // Custom `.astro` pages and the generated changelog index aren't content\n // pages, so name them for navigation: a `/changelog` tab should open the\n // timeline, not the newest entry, and a tab or brand link to a custom page\n // must stay on its route in every locale.\n const customPages = context.pagesRoot\n ? await discoverPages(context.pagesRoot)\n : [];\n const graph = buildContentGraph(pages, {\n bannerHref: bannerLinkHref(config.banner),\n basePath: config.basePath,\n brandHref: logoHref(config.logo),\n extraRoutes: new Set([\n ...customStaticRoutes(customPages),\n ...(hasChangelogIndex(pages, config) ? [CHANGELOG_INDEX_ROUTE] : []),\n ]),\n folderMeta: folderMeta.meta,\n i18n: config.i18n,\n navigation: config.navigation,\n sharedFolderMeta,\n versions: config.versions,\n });\n const manifest = buildManifest({ config, context, graph });\n\n const i18nWarnings = config.i18n\n ? i18nDiagnostics(pages, config.i18n, config.versions)\n : [];\n const versionWarnings = config.versions\n ? versionsDiagnostics(pages, config.versions)\n : [];\n\n return {\n config,\n context,\n diagnostics: [\n ...contentDiagnostics,\n ...includeDiagnostics,\n ...folderMeta.diagnostics,\n ...entryIdDiagnostics(\n pages,\n resolveDocsCollection(config, context.root).base\n ),\n ...graph.diagnostics,\n ...i18nWarnings,\n ...versionWarnings,\n ...lastModifiedWarnings,\n ],\n droppedPages,\n graph,\n manifest,\n mode,\n sources,\n themeFontsConfigured: configResult.themeFontsConfigured,\n };\n};\n",
|
|
6
|
+
"import { isAbsolute, relative } from \"pathe\";\n\nimport { withBasePath } from \"./base-path.ts\";\nimport { CHANGELOG_INDEX_ROUTE, hasChangelogIndex } from \"./changelog-index.ts\";\nimport { loadConfig } from \"./config.ts\";\nimport { customStaticRoutes, discoverPages } from \"./custom-pages.ts\";\nimport { unknownDirectiveDiagnostics } from \"./directive-diagnostics.ts\";\nimport { buildContentGraph } from \"./graph.ts\";\nimport { i18nDiagnostics } from \"./i18n.ts\";\nimport { expandIncludes, hasIncludeStatements } from \"./includes.ts\";\nimport {\n gitLastModifiedTimes,\n gitRepositoryRoot,\n lastModifiedShallowWarning,\n realPath,\n resolveLastModifiedConfig,\n} from \"./last-modified.ts\";\nimport { buildManifest } from \"./manifest.ts\";\nimport { discoverFolderMeta } from \"./meta.ts\";\nimport type { FolderMetaSource } from \"./meta.ts\";\nimport { resolveProjectContext } from \"./project.ts\";\nimport { pathsUnderPattern } from \"./redirect-patterns.ts\";\nimport type { ResolvedConfig } from \"./schema.ts\";\nimport { normalizeEntry, strippedLineOffset } from \"./sources/normalize.ts\";\nimport { resolveDocsCollection, resolveSources } from \"./sources/resolve.ts\";\nimport type {\n ContentSource,\n SourceEntry,\n SourceLoadResult,\n} from \"./sources/types.ts\";\nimport type {\n BlumeManifest,\n ContentGraph,\n Diagnostic,\n ExampleLookup,\n PageRecord,\n ProjectContext,\n} from \"./types.ts\";\nimport {\n hasVariables,\n substituteVariables,\n undefinedVariables,\n} from \"./variables.ts\";\nimport type { ContentVariables } from \"./variables.ts\";\nimport { versionsDiagnostics } from \"./versions.ts\";\n\n/** Build mode: drafts are kept in `dev` and dropped in `build`. */\nexport type BuildMode = \"dev\" | \"build\";\n\n/** CLI-supplied overrides applied over the loaded config (see `scanProject`). */\nexport interface ConfigOverrides {\n /** Override `content.root` (`blume dev --content-dir`). */\n contentRoot?: string;\n}\n\n/**\n * Whether `path` sits at or under `dir`. A relative result that is itself\n * absolute means a different drive root on Windows, which is outside too.\n */\nexport const isWithin = (dir: string, path: string): boolean => {\n const rel = relative(dir, path);\n return !(rel.startsWith(\"..\") || isAbsolute(rel));\n};\n\n/** Apply CLI config overrides onto a resolved config (returns a new object). */\nconst applyConfigOverrides = (\n config: ResolvedConfig,\n overrides?: ConfigOverrides\n): ResolvedConfig => {\n if (!overrides) {\n return config;\n }\n // `--content-dir` re-roots every filesystem source: with one (the\n // zero-config case) it is exactly the old `content.root` override, and\n // several must share a root anyway (see `resolveDocsCollection`).\n const { contentRoot } = overrides;\n const sources = contentRoot\n ? config.content.sources.map((source) =>\n source.kind === \"filesystem\"\n ? { ...source, options: { ...source.options, root: contentRoot } }\n : source\n )\n : config.content.sources;\n return {\n ...config,\n content: { ...config.content, sources },\n };\n};\n\n/** Everything Blume knows about a project after a full scan. */\nexport interface BlumeProject {\n mode: BuildMode;\n context: ProjectContext;\n config: ResolvedConfig;\n graph: ContentGraph;\n manifest: BlumeManifest;\n diagnostics: Diagnostic[];\n /** Entries excluded from the graph because their frontmatter failed validation. */\n droppedPages: number;\n /** The instantiated content sources, for lazy entry reads (search/AI/raw). */\n sources: ContentSource[];\n /**\n * Whether the config file set `theme.fonts` itself (see\n * {@link ConfigLoadResult.themeFontsConfigured}); gates OG font derivation.\n */\n themeFontsConfigured: boolean;\n /**\n * Discovered `examples/` sources keyed by `<Component path>`, attached by the\n * runtime/eject layer after {@link scanProject} (example discovery is an Astro\n * concern, so core doesn't run it). Undefined until then; the agent-facing\n * Markdown downleveler reads it to turn `<Component path=\"…\" />` into the\n * example's source. Empty when the project has no examples.\n */\n examples?: ExampleLookup;\n}\n\n/**\n * Guard the invariant that ties a filesystem page to the `docs` collection:\n * Astro ids each collection entry by its path relative to the collection base,\n * so `getEntry(\"docs\", entryId)` only resolves when that entry id equals\n * `relative(base, file)`. A filesystem source ids entries relative to its own\n * root; when that root can't be the collection base (e.g. a second filesystem\n * source rooted elsewhere), the ids diverge and every one of that source's pages\n * would 404 in dev (a static build silently masks it). Emit a hard error naming\n * the mismatch so it can't ship, instead of a silent runtime failure. One\n * diagnostic per file (locale duplicates share a source path).\n */\nconst entryIdDiagnostics = (\n pages: PageRecord[],\n collectionBase: string\n): Diagnostic[] => {\n const diagnostics: Diagnostic[] = [];\n const seen = new Set<string>();\n for (const page of pages) {\n // Only filesystem entries render through the base-rooted `docs` collection;\n // staged sources carry their own id and collection.\n if (page.collection || !page.sourcePath || seen.has(page.sourcePath)) {\n continue;\n }\n seen.add(page.sourcePath);\n const expected = relative(collectionBase, page.sourcePath)\n .split(\"\\\\\")\n .join(\"/\");\n const entryId = page.entryId ?? page.source.ref;\n if (expected !== entryId) {\n diagnostics.push({\n code: \"BLUME_ENTRY_ID_MISMATCH\",\n file: page.sourcePath,\n message: `Content source \"${page.source.name}\" is rooted outside the docs collection base, so ${page.route} resolves entry id \"${entryId}\" but the collection would generate \"${expected}\" — the page would 404 at runtime.`,\n severity: \"error\",\n suggestion:\n \"Use a single filesystem() source (the docs collection roots at it), or give every filesystem() source the same root and partition them with include globs — a root at a subdirectory of the first source's root still mismatches.\",\n });\n }\n }\n return diagnostics;\n};\n\n/**\n * Funnel every loaded source's entries through the shared `normalizeEntry`,\n * collecting pages, diagnostics, and the count of entries dropped outright —\n * an entry that yields no pages but did yield diagnostics was rejected for\n * invalid frontmatter, and callers surface that count so a build with missing\n * pages can't read as clean.\n */\nconst normalizeLoadedEntries = (\n loaded: ({ source: ContentSource } & SourceLoadResult)[],\n config: ResolvedConfig\n) => {\n // Only thread `frontmatter.extend` / `content.types` through when a project\n // opts in, so the known-key split in `normalizeEntry` stays off the default\n // path.\n const frontmatterExtend =\n Object.keys(config.frontmatter.extend).length > 0\n ? config.frontmatter.extend\n : undefined;\n const declaredTypes = Object.entries(config.content.types).filter(\n ([, type]) => Object.keys(type.frontmatter).length > 0\n );\n const typeFrontmatter =\n declaredTypes.length > 0\n ? Object.fromEntries(\n declaredTypes.map(([name, type]) => [name, type.frontmatter])\n )\n : undefined;\n\n const pages: PageRecord[] = [];\n const allDiagnostics: Diagnostic[] = [];\n let droppedPages = 0;\n for (const { source, entries, diagnostics } of loaded) {\n allDiagnostics.push(...diagnostics);\n for (const entry of entries) {\n const normalized = normalizeEntry(entry, {\n basePath: config.basePath,\n defaultType: config.content.defaultType,\n frontmatterExtend,\n i18n: config.i18n,\n source: {\n monolingual: source.monolingual,\n name: source.name,\n orderedNames: source.orderedNames,\n prefix: source.prefix,\n staged: source.staged,\n },\n typeFrontmatter,\n versions: config.versions,\n });\n if (normalized.pages.length === 0 && normalized.diagnostics.length > 0) {\n droppedPages += 1;\n }\n pages.push(...normalized.pages);\n allDiagnostics.push(...normalized.diagnostics);\n if (normalized.pages.length > 0) {\n allDiagnostics.push(...unknownDirectiveDiagnostics(entry, source.name));\n }\n }\n }\n return { diagnostics: allDiagnostics, droppedPages, pages };\n};\n\n/**\n * The local sources' on-disk roots a `git log` pathspec can cover: those\n * inside the repository at `gitRoot`. A root outside it would fail the log\n * outright and can never yield dates. Compared by real path, since git spells\n * its toplevel with every symlink resolved (`/private/tmp/site` for a project\n * opened as `/tmp/site`); the roots themselves keep the project's spelling.\n */\nconst gitContentRoots = (\n sources: readonly ContentSource[],\n gitRoot: string | null\n): string[] => {\n if (gitRoot === null) {\n return [];\n }\n const top = realPath(gitRoot);\n return sources\n .flatMap((source) => (source.contentRoot ? [source.contentRoot] : []))\n .filter((dir) => isWithin(top, realPath(dir)));\n};\n\n/**\n * Run the full core pipeline for a project root: load config, resolve paths,\n * discover content and folder meta, build the graph, and assemble the manifest.\n * Collects all diagnostics without throwing on content-level problems so\n * callers can decide how strict to be.\n */\n/** Narrows the logo config's image shorthand from its object form. */\nconst isLogoShorthand = (\n logo: NonNullable<ResolvedConfig[\"logo\"]>\n): logo is string => typeof logo === \"string\";\n\n/** The configured brand link: `logo.href`, else the site root. */\nconst logoHref = (logo: ResolvedConfig[\"logo\"]): string =>\n logo === undefined || isLogoShorthand(logo) ? \"/\" : (logo.href ?? \"/\");\n\n/** Narrows the banner config's text shorthand from its object form. */\nconst isBannerShorthand = (\n banner: NonNullable<ResolvedConfig[\"banner\"]>\n): banner is string => typeof banner === \"string\";\n\n/**\n * Report an entry's undefined content variables at their source lines, then\n * replace the defined ones in the text the scan extracts from: the expanded\n * text when includes were spliced (its `origins` map lines back to the file\n * each came from), else the body.\n */\nconst substituteEntryVariables = (\n entry: SourceEntry,\n variables: ContentVariables\n): Diagnostic[] => {\n const { expanded } = entry;\n const text = expanded?.text ?? entry.body.text;\n const offset = expanded ? 0 : strippedLineOffset(entry.raw, entry.body.text);\n const diagnostics = undefinedVariables(text, variables).map(\n ({ line, name }): Diagnostic => {\n const origin = expanded?.origins[line - 1];\n return {\n code: \"BLUME_UNDEFINED_VARIABLE\",\n file: origin?.file ?? entry.sourcePath,\n line: origin?.line ?? line + offset,\n message: `{{${name}}} isn't a defined variable, so it would show as written.`,\n severity: \"error\",\n suggestion: `Define \"${name}\" under variables in blume.config.ts, or put it in inline code to show it as written.`,\n };\n }\n );\n if (expanded) {\n expanded.text = substituteVariables(expanded.text, variables);\n } else {\n entry.body.text = substituteVariables(entry.body.text, variables);\n }\n return diagnostics;\n};\n\n/** {@link substituteEntryVariables} over every loaded entry, when any are defined. */\nconst substituteLoadedVariables = (\n loaded: readonly SourceLoadResult[],\n variables: ContentVariables\n): Diagnostic[] =>\n hasVariables(variables)\n ? loaded.flatMap(({ entries }) =>\n entries.flatMap((entry) => substituteEntryVariables(entry, variables))\n )\n : [];\n\n/**\n * A pattern redirect that also matches a page. Hosts disagree on which\n * answers (Vercel and Cloudflare apply the rule ahead of the page, Netlify\n * and the Node server serve the page), so the pattern is rejected rather than\n * let the answer depend on the host. `pages` are the served page paths, which\n * carry `basePath`, as the based `from` does.\n */\nconst redirectPageDiagnostics = (\n config: ResolvedConfig,\n pages: readonly string[],\n configFile: string | null\n): Diagnostic[] =>\n config.redirects.flatMap((redirect) => {\n const matched = pathsUnderPattern(\n withBasePath(config.basePath, redirect.from),\n pages\n );\n const [first] = matched;\n if (first === undefined) {\n return [];\n }\n const more = matched.length > 1 ? ` and ${matched.length - 1} more` : \"\";\n return [\n {\n code: \"BLUME_REDIRECT_MATCHES_PAGE\",\n file: configFile ?? undefined,\n message: `The redirect from ${redirect.from} also matches the page ${first}${more}, which some hosts would redirect and others would serve.`,\n severity: \"error\",\n suggestion:\n \"Narrow the pattern to the paths that moved, or move the pages out from under it.\",\n } satisfies Diagnostic,\n ];\n });\n\n/** The configured banner link target, when the banner has a link. */\nconst bannerLinkHref = (\n banner: ResolvedConfig[\"banner\"]\n): string | undefined =>\n banner === undefined || isBannerShorthand(banner)\n ? undefined\n : banner.link?.href;\n\nexport const scanProject = async (\n root: string,\n options: {\n devServerUrl?: string;\n mode?: BuildMode;\n preview?: boolean;\n refresh?: boolean;\n /** CLI overrides applied over the loaded config (e.g. `--output`). */\n overrides?: ConfigOverrides;\n /** Relocate the generated runtime (e.g. `.blume-verify` for isolation). */\n runtimeDir?: string;\n } = {}\n): Promise<BlumeProject> => {\n const mode = options.mode ?? \"dev\";\n const preview = options.preview ?? false;\n const configResult = await loadConfig(root, {\n devServerUrl: options.devServerUrl,\n });\n const config = applyConfigOverrides(configResult.config, options.overrides);\n const context = resolveProjectContext(root, config, {\n runtimeDir: options.runtimeDir,\n });\n\n // Each source validates itself (e.g. the filesystem source checks its root\n // exists), replacing the single hard `contentRoot` check.\n const sources = resolveSources(config, context, {\n mode,\n preview,\n refresh: options.refresh,\n });\n for (const source of sources) {\n source.validate?.();\n }\n\n // Folder meta is discovered per filesystem source, under each source's own\n // root and keyed by its route prefix, so a prefixed/root-differing source's\n // `meta.ts` still lines up with its (prefixed) sidebar group path.\n const metaSources: FolderMetaSource[] = sources.flatMap((source) =>\n source.staged || !source.contentRoot\n ? []\n : [\n {\n exclude: source.exclude,\n include: source.include,\n prefix: source.prefix,\n root: source.contentRoot,\n },\n ]\n );\n\n // Run every source's `load()` in parallel, then funnel each entry through the\n // shared `normalizeEntry` so route mapping is identical regardless of origin.\n // Under the `dir` parser, non-default locales are top-level directories whose\n // meta keys must carry the locale in front of the source prefix (see\n // `discoverFolderMeta`).\n const localeDirs =\n config.i18n && config.i18n.parser === \"dir\"\n ? config.i18n.locales.flatMap((locale) =>\n locale.code === config.i18n?.defaultLocale ? [] : [locale.code]\n )\n : undefined;\n\n const [loaded, folderMeta] = await Promise.all([\n Promise.all(\n sources.map(async (source) => ({ source, ...(await source.load()) }))\n ),\n discoverFolderMeta(metaSources, {\n localeDirs,\n versionDirs: config.versions?.archived.map((version) => version.id),\n }),\n ]);\n\n // Expand `<include>` statements before normalization, so heading/link/\n // component extraction sees the spliced content every render surface shows.\n // Filesystem entries only: includes resolve as filesystem paths bounded by\n // the owning source's content root. Unresolvable statements stay verbatim\n // and surface as error diagnostics here.\n const includeDiagnostics: Diagnostic[] = [];\n await Promise.all(\n loaded.flatMap(({ source, entries }) => {\n if (source.staged || !source.contentRoot) {\n return [];\n }\n return entries.map(async (entry) => {\n if (!entry.sourcePath || !hasIncludeStatements(entry.body.text)) {\n return;\n }\n const expansion = await expandIncludes(entry.body.text, {\n contentRoot: source.contentRoot,\n lineOffset: strippedLineOffset(entry.raw, entry.body.text),\n sourcePath: entry.sourcePath,\n });\n entry.expanded = expansion;\n includeDiagnostics.push(...expansion.errors);\n });\n })\n );\n\n // Content variables: an undefined name in prose is an error at its source\n // line, and every defined one is replaced in the text headings, links, and\n // components are extracted from, so they match the rendered page.\n const variableDiagnostics = substituteLoadedVariables(\n loaded,\n config.variables\n );\n\n // Folder meta contributed by the sources themselves (the OpenAPI source\n // labels each tag directory with the spec's own tag name). It applies to\n // every locale, so it merges into the shared map — beneath user-authored\n // entries, which are spread last and win.\n const sharedFolderMeta = new Map([\n ...loaded.flatMap(({ folderMeta: sourceMeta }) =>\n Object.entries(sourceMeta ?? {})\n ),\n ...folderMeta.shared,\n ]);\n\n const {\n diagnostics: contentDiagnostics,\n droppedPages,\n pages: allPages,\n } = normalizeLoadedEntries(loaded, config);\n\n // Drafts render in dev and in preview, but are excluded from production builds.\n const pages =\n mode === \"build\" && !preview\n ? allPages.filter((page) => !page.meta.draft)\n : allPages;\n\n // Resolve \"last updated\" dates before the graph is built so the manifest\n // (which shares these page objects) picks them up. Frontmatter always wins;\n // git applies to filesystem entries, other sources supply dates on the entry.\n const lastModified = resolveLastModifiedConfig(config.lastModified);\n const lastModifiedWarnings: Diagnostic[] = [];\n if (lastModified.enabled && lastModified.source === \"git\") {\n const fsPaths = pages\n .map((page) => page.sourcePath)\n .filter((path): path is string => path !== undefined);\n // The git pathspecs must cover where the pages actually live: each local\n // source's own on-disk root — a filesystem source's `root`, or a staged\n // local source's tree (an Obsidian vault) — which diverges from the global\n // `content.root`.\n const gitRoot = gitRepositoryRoot(context.root);\n const contentRoots = gitContentRoots(sources, gitRoot);\n const gitTimes = gitLastModifiedTimes(\n context.root,\n contentRoots,\n fsPaths,\n gitRoot\n );\n for (const page of pages) {\n if (!page.lastModified && page.sourcePath) {\n page.lastModified = gitTimes.get(page.sourcePath);\n }\n }\n // A shallow CI clone (Vercel, actions/checkout) silently drops most dates;\n // surface that instead of letting production diverge from local builds.\n // Only pages the log could have dated count — a page outside every covered\n // root stays undated no matter how deep the clone is, and the warning's\n // suggested fix cannot help it.\n const undated = pages.filter(\n (page) =>\n page.sourcePath &&\n !page.lastModified &&\n contentRoots.some((dir) => isWithin(dir, page.sourcePath ?? \"\"))\n ).length;\n lastModifiedWarnings.push(\n ...lastModifiedShallowWarning(context.root, undated)\n );\n }\n\n // Custom `.astro` pages and the generated changelog index aren't content\n // pages, so name them for navigation: a `/changelog` tab should open the\n // timeline, not the newest entry, and a tab or brand link to a custom page\n // must stay on its route in every locale.\n const customPages = context.pagesRoot\n ? await discoverPages(context.pagesRoot)\n : [];\n const extraRoutes = new Set([\n ...customStaticRoutes(customPages),\n ...(hasChangelogIndex(pages, config) ? [CHANGELOG_INDEX_ROUTE] : []),\n ]);\n const graph = buildContentGraph(pages, {\n bannerHref: bannerLinkHref(config.banner),\n basePath: config.basePath,\n brandHref: logoHref(config.logo),\n extraRoutes,\n folderMeta: folderMeta.meta,\n i18n: config.i18n,\n navigation: config.navigation,\n sharedFolderMeta,\n versions: config.versions,\n });\n const manifest = buildManifest({ config, context, graph });\n\n const i18nWarnings = config.i18n\n ? i18nDiagnostics(pages, config.i18n, config.versions)\n : [];\n const versionWarnings = config.versions\n ? versionsDiagnostics(pages, config.versions)\n : [];\n\n return {\n config,\n context,\n diagnostics: [\n ...contentDiagnostics,\n ...includeDiagnostics,\n ...variableDiagnostics,\n ...folderMeta.diagnostics,\n ...entryIdDiagnostics(\n pages,\n resolveDocsCollection(config, context.root).base\n ),\n ...graph.diagnostics,\n ...i18nWarnings,\n ...versionWarnings,\n ...lastModifiedWarnings,\n ...redirectPageDiagnostics(\n config,\n [...manifest.routes.map((route) => route.path), ...extraRoutes],\n context.configFile\n ),\n ],\n droppedPages,\n graph,\n manifest,\n mode,\n sources,\n themeFontsConfigured: configResult.themeFontsConfigured,\n };\n};\n",
|
|
7
7
|
"import type { Nodes } from \"mdast\";\nimport { mdxToMdast } from \"satteri\";\n\nimport {\n CALLOUT_ALIASES,\n CALLOUT_TYPES,\n calloutTypeFor,\n} from \"../markdown/directives.ts\";\nimport { MDX_BODY_FEATURES } from \"../markdown/features.ts\";\nimport { strippedLineOffset } from \"./sources/normalize.ts\";\nimport type { SourceEntry } from \"./sources/types.ts\";\nimport type { Diagnostic } from \"./types.ts\";\n\n// A line that may open a container directive: a colon fence and a name, after\n// any quote or list indentation. A page is parsed only when one of these\n// names something other than a callout, so pages without one cost a scan.\nconst CONTAINER_OPENING = /^[\\t >]*:{3,}(?<name>[a-z][\\w-]*)/gimu;\n\nconst codeList = (names: Iterable<string>): string =>\n [...names].map((name) => `\\`${name}\\``).join(\", \");\n\nconst CALLOUT_NAMES = `${codeList(CALLOUT_TYPES)} (or the aliases ${codeList(Object.keys(CALLOUT_ALIASES))})`;\n\n/** A container directive that isn't a callout, and its line in `text`. */\ninterface UnknownContainer {\n line: number;\n name: string;\n}\n\n/**\n * Every container directive in an `.mdx` body whose name isn't a callout, in\n * source order. The body is parsed as the renderer reads it, so a fence in a\n * code block or a `::: name` that isn't a directive at all never counts. A\n * body MDX can't parse fails to render anyway, with its own error.\n */\nconst unknownContainers = (text: string): UnknownContainer[] => {\n const named = [...text.matchAll(CONTAINER_OPENING)].some(\n (match) => calloutTypeFor(match.groups?.name ?? \"\") === null\n );\n if (!named) {\n return [];\n }\n let tree: Nodes;\n try {\n tree = mdxToMdast(text, { features: MDX_BODY_FEATURES });\n } catch {\n return [];\n }\n const found: UnknownContainer[] = [];\n const walk = (node: Nodes): void => {\n if (\n node.type === \"containerDirective\" &&\n calloutTypeFor(node.name) === null\n ) {\n found.push({ line: node.position?.start.line ?? 1, name: node.name });\n }\n if (\"children\" in node) {\n for (const child of node.children) {\n walk(child);\n }\n }\n };\n walk(tree);\n return found;\n};\n\n/**\n * Warn about each `:::name` container in an `.mdx` entry that isn't a callout.\n * The page keeps its content — the body renders between the literal `:::`\n * lines (see `markdown/directives.ts`) — but a typo like `:::warnig`, or a\n * `:::details` carried over from another docs tool, should read as the\n * mistake it is rather than as a finished page. Lines point into the file\n * the author wrote, a partial's own file for a container an `<include>`\n * brought in.\n */\nexport const unknownDirectiveDiagnostics = (\n entry: SourceEntry,\n sourceName: string\n): Diagnostic[] => {\n if (entry.body.format !== \"mdx\") {\n return [];\n }\n const page = entry.sourcePath ?? `${sourceName}:${entry.ref}`;\n const offset =\n entry.bodyLineOffset ?? strippedLineOffset(entry.raw, entry.body.text);\n return unknownContainers(entry.expanded?.text ?? entry.body.text).map(\n ({ line, name }) => {\n const origin = entry.expanded?.origins[line - 1];\n return {\n code: \"BLUME_UNKNOWN_DIRECTIVE\",\n file: origin?.file ?? page,\n line: origin?.line ?? line + offset,\n message: `\\`:::${name}\\` isn't a callout type, so the page shows its \\`:::\\` lines as written around its content.`,\n severity: \"warning\",\n suggestion: `Use a callout type — ${CALLOUT_NAMES} — or remove the \\`:::\\` lines to keep the content as plain prose.`,\n };\n }\n );\n};\n",
|
|
8
8
|
"import { toString as mdastToString } from \"mdast-util-to-string\";\n\nimport { jsxAttribute, jsxFlowElement } from \"./mdast.ts\";\nimport type { MdastNode, MdastVisitorContext } from \"./mdast.ts\";\n\nexport interface DirectiveNode extends MdastNode {\n attributes?: Record<string, string | null | undefined> | null;\n // Satteri gives an empty container directive (`:::note\\n:::`) `children: null`.\n children?: MdastNode[] | null;\n name: string;\n position?: {\n start?: { offset?: number };\n end?: { offset?: number };\n };\n}\n\n/**\n * The visitor-context slice the directive visitors use. `source` is the page\n * the directive offsets index into; without it the literal fallback rebuilds\n * a directive from its node instead. `parent` walks up to an enclosing\n * container directive, which renders the directives inside it itself.\n */\ninterface DirectiveVisitorContext extends MdastVisitorContext {\n parent?: (node: MdastNode) => MdastNode | undefined;\n source?: string;\n}\n\n/** Directive names that map directly onto a Callout type. */\nexport const CALLOUT_TYPES: ReadonlySet<string> = new Set([\n \"danger\",\n \"info\",\n \"note\",\n \"success\",\n \"tip\",\n \"warning\",\n]);\n\n/** Friendly aliases for the canonical Callout types. */\ninterface CalloutAliases {\n [alias: string]: string;\n}\n\nexport const CALLOUT_ALIASES: Readonly<CalloutAliases> = {\n caution: \"warning\",\n error: \"danger\",\n important: \"note\",\n warn: \"warning\",\n};\n\n/** Resolve a directive name to a Callout type, or `null` if it is not one. */\nexport const calloutTypeFor = (name: string): string | null => {\n const lower = name.toLowerCase();\n if (CALLOUT_TYPES.has(lower)) {\n return lower;\n }\n return CALLOUT_ALIASES[lower] ?? null;\n};\n\n/** The markers that open a text (`:name`) and a leaf (`::name`) directive. */\nconst LITERAL_MARKERS = new Map([\n [\"leafDirective\", \"::\"],\n [\"textDirective\", \":\"],\n]);\n\n/** A directive's `[label]` rebuilt from its label's text, or nothing. */\nconst labelSource = (label: MdastNode[]): string =>\n label.length > 0\n ? `[${mdastToString(label, { includeImageAlt: false })}]`\n : \"\";\n\n/** A directive's `{attributes}` rebuilt from its node, or nothing. */\nconst attributeSource = (node: DirectiveNode): string => {\n const attributes = Object.entries(node.attributes ?? {}).map(\n ([key, value]) => (value ? `${key}=\"${value}\"` : key)\n );\n return attributes.length > 0 ? `{${attributes.join(\" \")}}` : \"\";\n};\n\n/** The source a directive node spans, when its offsets point into `source`. */\nconst spannedSource = (node: DirectiveNode, source: string): string | null => {\n const start = node.position?.start?.offset;\n const end = node.position?.end?.offset;\n return start !== undefined && end !== undefined\n ? source.slice(start, end)\n : null;\n};\n\n/**\n * A text or leaf directive exactly as the author wrote it. The slice by\n * offsets is the exact text — `[label]` and `{attrs}` included — and is\n * trusted only when it opens with the directive's own marker and name;\n * content an `<include>` spliced in carries no offsets into this page, so it\n * is rebuilt from the node instead.\n */\nexport const directiveSource = (\n node: DirectiveNode,\n marker: string,\n source: string\n): string => {\n const opening = `${marker}${node.name}`;\n const slice = spannedSource(node, source);\n if (slice?.startsWith(opening)) {\n return slice;\n }\n return `${opening}${labelSource(node.children ?? [])}${attributeSource(node)}`;\n};\n\n/**\n * The node a text or leaf directive renders as: its literal source, as text\n * in place of a text directive and as a paragraph in place of a leaf one.\n */\nconst literalDirective = (\n node: DirectiveNode,\n marker: string,\n source: string\n): MdastNode => {\n const text = { type: \"text\", value: directiveSource(node, marker, source) };\n return marker === \":\" ? text : { children: [text], type: \"paragraph\" };\n};\n\nconst FENCE = /^:{3,}/u;\n\n// The line that closes a container: a colon fence, after whatever quote or\n// list indentation the container sits in.\nconst CLOSING_FENCE = /\\n[\\t >]*(?<fence>:{3,})\\s*$/u;\n\n/** A paragraph holding one line of literal text. */\nconst literalLine = (value: string): MdastNode => ({\n children: [{ type: \"text\", value }],\n type: \"paragraph\",\n});\n\n/**\n * The fence lines of a container directive as the author wrote them — the\n * opening one with its `[label]` and `{attrs}` — or, without offsets into\n * this page (an `<include>`), rebuilt from the node. A container left\n * unclosed runs to the end of its parent and has no closing line.\n */\nconst containerFences = (\n node: DirectiveNode,\n label: MdastNode | undefined,\n source: string\n): string[] => {\n const slice = spannedSource(node, source) ?? \"\";\n const fence = FENCE.exec(slice)?.[0];\n if (fence === undefined || !slice.startsWith(node.name, fence.length)) {\n const labelText = labelSource(label ? [label] : []);\n return [`:::${node.name}${labelText}${attributeSource(node)}`, \":::\"];\n }\n const [opening = \"\"] = slice.split(\"\\n\", 1);\n const closing = CLOSING_FENCE.exec(slice.slice(opening.length))?.groups\n ?.fence;\n // A shorter fence can't close the container; it is the body's last line.\n return closing !== undefined && closing.length >= fence.length\n ? [opening.trimEnd(), closing]\n : [opening.trimEnd()];\n};\n\n/**\n * What a container directive renders as. A callout name becomes a\n * `<Callout>`: the title comes from a `[label]` or a `{title=\"…\"}` attribute,\n * and the body becomes the callout content. Blume has no other container, and\n * dropping one would drop its body with it, so any other name — `:::details`,\n * a `:::warnig` typo — renders its body between its fence lines, as written.\n * The directives inside render here too, since Satteri reaches them only\n * after this replacement has taken their original.\n */\nconst renderContainer = (\n node: DirectiveNode,\n source: string\n): MdastNode | MdastNode[] => {\n const children = (node.children ?? []).flatMap((child) =>\n // oxlint-disable-next-line no-use-before-define -- mutual recursion: a container's body holds directives, containers included\n literalize(child, source)\n );\n\n // A leading `:::name[Label]` parses to a paragraph flagged `directiveLabel`.\n // SAFETY: Satteri stamps `directiveLabel` on that paragraph's `data`; any\n // other node reads undefined and fails the check.\n const labelIndex = children.findIndex(\n (child) =>\n child.type === \"paragraph\" &&\n (child.data as { directiveLabel?: boolean } | undefined)?.directiveLabel\n );\n const [label] = labelIndex === -1 ? [] : children.splice(labelIndex, 1);\n\n const type = calloutTypeFor(node.name);\n if (type === null) {\n const [opening = \"\", closing] = containerFences(node, label, source);\n return [\n literalLine(opening),\n ...children,\n ...(closing === undefined ? [] : [literalLine(closing)]),\n ];\n }\n\n // Flatten the label's phrasing children so `:::note[Read **this**]` yields\n // `Read this`; image alt is excluded (an image is not label text), matching\n // the historical child-values-only behavior.\n const title =\n node.attributes?.title ??\n (label ? mdastToString(label, { includeImageAlt: false }) : undefined);\n const attributes = [jsxAttribute(\"type\", type)];\n if (title) {\n attributes.push(jsxAttribute(\"title\", title));\n }\n return jsxFlowElement(\"Callout\", attributes, children);\n};\n\n/**\n * `node` with every directive in it rendered: text and leaf directives as\n * their literal source, containers as {@link renderContainer}.\n */\nconst literalize = (node: MdastNode, source: string): MdastNode[] => {\n if (node.type === \"containerDirective\") {\n // SAFETY: a `containerDirective` carries a `name` plus optional\n // attributes, children, and position — the `DirectiveNode` shape.\n return [renderContainer(node as DirectiveNode, source)].flat();\n }\n const marker = LITERAL_MARKERS.get(node.type);\n if (marker) {\n // SAFETY: only Satteri's `textDirective`/`leafDirective` nodes have a\n // marker, and they carry a `name` plus optional attributes, children,\n // and position — the `DirectiveNode` shape.\n return [literalDirective(node as DirectiveNode, marker, source)];\n }\n // SAFETY: a parent's `children` is always a node list; leaves carry none.\n const children = node.children as MdastNode[] | null | undefined;\n if (!children) {\n return [node];\n }\n return [\n {\n ...node,\n children: children.flatMap((child) => literalize(child, source)),\n },\n ];\n};\n\n/** Whether a container directive (already rendered, body and all) holds `node`. */\nconst insideContainer = (node: MdastNode, ctx: DirectiveVisitorContext) => {\n for (\n let parent = ctx.parent?.(node);\n parent !== undefined;\n parent = ctx.parent?.(parent)\n ) {\n if (parent.type === \"containerDirective\") {\n return true;\n }\n }\n return false;\n};\n\n/** The text and leaf visitor: render the directive as its literal source. */\nconst renderLiteral =\n (marker: string) => (node: DirectiveNode, ctx: DirectiveVisitorContext) => {\n // A container's body was already rendered into its replacement; a\n // transform queued on the replaced original would be dropped with a\n // warning.\n if (insideContainer(node, ctx)) {\n return;\n }\n ctx.replaceNode(node, literalDirective(node, marker, ctx.source ?? \"\"));\n };\n\n/**\n * Satteri MDAST plugin for directives. Container directives (`:::note`,\n * `:::warning`, `:::tip`, …) map onto Blume's `<Callout>` component, and any\n * other container renders its body between its literal fence lines (see\n * {@link renderContainer}).\n *\n * Blume handles no text (`:name`) or leaf (`::name`) directives, and prose is\n * full of text that parses as one — `16:9`, `10:30am`, `og:image`,\n * `pets:read` — so both render as the literal source the author wrote instead\n * of vanishing.\n */\nexport const directiveToCalloutPlugin = () => ({\n containerDirective(node: DirectiveNode, ctx: DirectiveVisitorContext) {\n // A container inside another was rendered with its enclosing one.\n if (insideContainer(node, ctx)) {\n return;\n }\n ctx.replaceNode(node, renderContainer(node, ctx.source ?? \"\"));\n },\n leafDirective: renderLiteral(\"::\"),\n name: \"blume-directive-callout\",\n // Positions are opt-in since satteri 0.10; the literal fallback slices\n // directives out of the source by offset.\n options: { position: true },\n textDirective: renderLiteral(\":\"),\n});\n",
|
|
9
|
+
"import type { LocalizableLabel } from \"./schema.ts\";\n\n/** A label is either one string for every locale or a per-locale map. */\nconst isSingleLabel = (label: LocalizableLabel): label is string =>\n typeof label === \"string\";\n\n/**\n * Resolve a possibly-per-locale label to the string a locale renders: the\n * active locale's entry, else the default locale's, else the map's first\n * entry (which is also what a single-locale site gets).\n */\nexport const resolveLocalizable = (\n label: LocalizableLabel,\n locale?: string,\n defaultLocale?: string\n): string => {\n if (isSingleLabel(label)) {\n return label;\n }\n return (\n (locale === undefined ? undefined : label[locale]) ??\n (defaultLocale === undefined ? undefined : label[defaultLocale]) ??\n Object.values(label)[0] ??\n \"\"\n );\n};\n",
|
|
9
10
|
"/**\n * Classify author-supplied icon strings — built-in Lucide names vs image\n * paths/URLs vs inline SVG. Shared by nav diagnostics, `<Icon>`, and the\n * Cmd+K popular-icon resolver so the three shapes stay in sync.\n */\n\nconst IMAGE_ICON =\n /^(?:https?:\\/\\/|data:image\\/|\\/|\\.{1,2}\\/)|\\.(?:avif|gif|jpe?g|png|svg|webp)$/iu;\n\nconst INLINE_SVG = /^\\s*<svg[\\s\\S]*<\\/svg>\\s*$/u;\n\n/** Image path, remote URL, or data URI — not a Lucide name or inline SVG. */\nexport const isImageIcon = (value: string): boolean => IMAGE_ICON.test(value);\n\n/** Full `<svg>…</svg>` markup (whitespace-tolerant). */\nexport const isInlineSvg = (value: string): boolean => INLINE_SVG.test(value);\n\n/** Image or inline SVG — anything that is not a built-in icon name. */\nexport const isAssetIcon = (value: string): boolean =>\n isInlineSvg(value) || isImageIcon(value);\n",
|
|
10
11
|
"/**\n * Icon resolution backed by the open Iconify Lucide set. Resolution runs at\n * **build time, server-side**, and returns ready-to-inline SVG, so icons stay\n * zero-JS and fully self-contained (no runtime CDN fetch).\n *\n * Because the Iconify set data is large, this module must only be imported from\n * server contexts (`.astro` frontmatter, the CLI). Client scripts use the tiny\n * hand-inlined set in `./chrome-icons.ts` instead.\n */\nimport { createRequire } from \"node:module\";\n\nimport type { IconifyJSON } from \"@iconify/types\";\nimport { getIconData, iconToSVG } from \"@iconify/utils\";\n\n// Load the icon-set JSON with a CJS `require` rather than an `import ... with\n// { type: \"json\" }`: the bundled Node CLI drops the import attribute (Bun.build\n// strips it when externalizing) and then rejects the module, whereas `require`\n// of a JSON file needs no attribute and works under both Node and Bun.\nconst requireJson = createRequire(import.meta.url);\n// SAFETY: the required file is the Iconify-published icon-set JSON, whose\n// shape is exactly `IconifyJSON`.\nconst loadSet = (pkg: string): IconifyJSON => requireJson(pkg) as IconifyJSON;\n\nconst SETS = {\n lucide: loadSet(\"@iconify-json/lucide/icons.json\"),\n};\n\n/** Blume's only icon library. */\nconst DEFAULT_SET = \"lucide\";\n\n/** Explicit `prefix:name` prefixes. Lucide is the only bundled set. */\nconst PREFIX_SETS = {\n lucide: \"lucide\",\n};\n\n/**\n * Own-property map lookup. Icon names come from content and config, so a value\n * like `constructor:x` would otherwise resolve an Object.prototype member (a\n * function) and crash resolution deep in the build with no pointer to the\n * offending page.\n */\nconst ownEntry = <T>(map: Record<string, T>, key: string): T | undefined =>\n Object.hasOwn(map, key) ? map[key] : undefined;\n\nexport interface ResolvedIcon {\n /** Inner SVG markup (self-styled: carries its own fill/stroke). */\n body: string;\n /** The resolved icon name. */\n name: string;\n /** The icon's viewBox (Lucide is 24×24). */\n viewBox: string;\n}\n\nconst normalize = (name: string): string =>\n name\n .trim()\n .toLowerCase()\n .replaceAll(/[\\s_]+/gu, \"-\");\n\nconst fromSet = (setName: string, iconName: string): ResolvedIcon | null => {\n const set = ownEntry(SETS, setName);\n const data = set && getIconData(set, iconName);\n if (!data) {\n return null;\n }\n const { attributes, body } = iconToSVG(data, { height: \"auto\" });\n return { body, name: iconName, viewBox: attributes.viewBox };\n};\n\n/**\n * Resolve an icon name to inline SVG. Honors an explicit `lucide:name` prefix;\n * a bare name resolves against Lucide.\n */\nexport const resolveIcon = (name: string): ResolvedIcon | null => {\n const normalized = normalize(name);\n const colon = normalized.indexOf(\":\");\n if (colon > 0) {\n const setName = ownEntry(PREFIX_SETS, normalized.slice(0, colon));\n return setName ? fromSet(setName, normalized.slice(colon + 1)) : null;\n }\n return fromSet(DEFAULT_SET, normalized);\n};\n\n/**\n * Whether a name resolves to a renderable icon. Exactly mirrors\n * {@link resolveIcon}: a laxer check (e.g. matching the bare name under an\n * unknown prefix) would let callers suppress their fallback and diagnostics\n * for a name `<Icon>` then renders as nothing.\n */\nexport const hasIcon = (name: string): boolean => resolveIcon(name) !== null;\n",
|
|
11
12
|
"import { isAssetIcon } from \"../theme/icon-kind.ts\";\nimport { hasIcon } from \"../theme/icons.ts\";\nimport { isInternalPath } from \"./base-path.ts\";\nimport { isPageRef, normalizeRef } from \"./navigation.ts\";\nimport type { SidebarItemConfig } from \"./schema.ts\";\nimport type { Diagnostic, NavNode, Navigation, PageRecord } from \"./types.ts\";\n\n/**\n * Navigation diagnostics: catch icon typos and structural mistakes (missing\n * pages, duplicate labels) that otherwise fail silently — a wrong icon just\n * doesn't render, a bad tab path just 404s. Run over the built navigation so it\n * covers every source (config, folder meta, frontmatter) at once.\n */\n\nconst ICON_FORMAT_HINT =\n \"Use a built-in icon name, an image path/URL, or inline SVG markup.\";\n\n/** Flatten a sidebar tree to every node, descending into groups. */\nconst flattenNodes = (nodes: NavNode[]): NavNode[] =>\n nodes.flatMap((node) =>\n node.kind === \"group\" ? [node, ...flattenNodes(node.children)] : [node]\n );\n\n/** Every icon string referenced anywhere in the navigation, with a label. */\nconst collectIcons = (\n navigation: Navigation\n): { icon: string; where: string }[] => {\n const icons: { icon: string; where: string }[] = [];\n const push = (icon: string | undefined, where: string): void => {\n if (icon) {\n icons.push({ icon, where });\n }\n };\n for (const tab of navigation.tabs) {\n push(tab.icon, `tab \"${tab.label}\"`);\n for (const item of tab.items ?? []) {\n push(item.icon, `tab item \"${item.label}\"`);\n }\n }\n for (const selector of navigation.selectors) {\n for (const item of selector.items) {\n push(item.icon, `selector \"${item.label}\"`);\n }\n }\n for (const link of navigation.featured) {\n push(link.icon, `featured link \"${link.label}\"`);\n }\n const sidebars = [navigation.sidebar];\n for (const sidebar of sidebars) {\n for (const node of flattenNodes(sidebar)) {\n push(node.icon, `\"${node.label}\"`);\n }\n }\n return icons;\n};\n\n/** Warn about icon names that aren't in Blume's set (skipping image/SVG icons). */\nconst unknownIconDiagnostics = (\n icons: { icon: string; where: string }[],\n suggestion: string\n): Diagnostic[] => {\n const seen = new Set<string>();\n const diagnostics: Diagnostic[] = [];\n for (const { icon, where } of icons) {\n if (isAssetIcon(icon) || hasIcon(icon) || seen.has(icon)) {\n continue;\n }\n seen.add(icon);\n // Markup that isn't a complete <svg> element (an <img> tag, a truncated\n // svg) is a shape problem, not a set-name typo — say so.\n const message = icon.trimStart().startsWith(\"<\")\n ? `Icon markup \"${icon}\" (${where}) isn't a complete inline <svg> element, so it won't render.`\n : `Unknown icon \"${icon}\" (${where}) — it isn't in Blume's icon set.`;\n diagnostics.push({\n code: \"BLUME_UNKNOWN_ICON\",\n message,\n severity: \"warning\",\n suggestion,\n });\n }\n return diagnostics;\n};\n\n/** Warn about icon names that aren't in Blume's set (skipping image/SVG icons). */\nexport const validateNavIcons = (navigation: Navigation): Diagnostic[] =>\n unknownIconDiagnostics(collectIcons(navigation), ICON_FORMAT_HINT);\n\n/**\n * Warn about unknown icons on curated `search.popular` links. Same accepted\n * input shapes as nav icons — resolved to markup on the server for the island.\n */\nexport const validateSearchPopularIcons = (\n popular: { icon?: string; label: string }[]\n): Diagnostic[] => {\n const icons = popular.flatMap((link) =>\n link.icon\n ? [{ icon: link.icon, where: `popular link \"${link.label}\"` }]\n : []\n );\n return unknownIconDiagnostics(icons, ICON_FORMAT_HINT);\n};\n\n/** Whether an internal path resolves to a page or a section that has pages. */\nconst resolvesToPages = (routes: Set<string>, path: string): boolean =>\n routes.has(path) || [...routes].some((route) => route.startsWith(`${path}/`));\n\n/**\n * Warn when a config-linked tab/selector target has no matching page. `routes`\n * must be the full set of servable routes — content, custom `.astro` pages, and\n * generated routes — so this runs where all three are known (`generateRuntime`),\n * not in the content-only graph build.\n */\nexport const validateNavTargets = (\n navigation: Navigation,\n routes: Set<string>\n): Diagnostic[] => {\n const targets: { label: string; path: string }[] = [\n ...navigation.tabs.map((tab) => ({ label: tab.label, path: tab.path })),\n ...navigation.selectors.flatMap((selector) =>\n selector.items.map((item) => ({ label: item.label, path: item.path }))\n ),\n ...navigation.featured.map((link) => ({\n label: link.label,\n path: link.href,\n })),\n ...(navigation.actions ?? []).map((action) => ({\n label: action.label,\n path: action.href,\n })),\n ...(navigation.cta\n ? [{ label: navigation.cta.label, path: navigation.cta.href }]\n : []),\n ];\n const diagnostics: Diagnostic[] = [];\n const seen = new Set<string>();\n for (const { label, path } of targets) {\n // Only internal, non-anchor paths can be checked against routes. A\n // protocol-relative `//host/path` is external despite its leading slash.\n if (!isInternalPath(path) || path.startsWith(\"/#\") || seen.has(path)) {\n continue;\n }\n // A query or fragment (`/guides?tab=cli`) rides on the route; only the\n // path names a page.\n if (!resolvesToPages(routes, path.split(/[?#]/u)[0] ?? path)) {\n seen.add(path);\n diagnostics.push({\n code: \"BLUME_NAV_MISSING_PAGE\",\n message: `Navigation entry \"${label}\" points to ${path}, but no page matches it.`,\n severity: \"warning\",\n suggestion: \"Fix the path, or add a page at that route.\",\n });\n }\n }\n return diagnostics;\n};\n\n/**\n * Warn about explicit `navigation.sidebar` items that can't render as written,\n * instead of dropping them without a word: a page ref that matches no page\n * (left out of the sidebar), a `root` that matches no page (its link leads\n * nowhere), and an item with no page, `href`, `root`, or `items` (left out).\n * `resolves` answers whether a normalized ref (`/guides`) names a page — in\n * any locale — or a route served outside the content tree.\n */\nexport const validateSidebarItems = (\n items: SidebarItemConfig[],\n resolves: (route: string) => boolean\n): Diagnostic[] => {\n const diagnostics: Diagnostic[] = [];\n const walk = (list: SidebarItemConfig[]): void => {\n for (const item of list) {\n if (isPageRef(item)) {\n if (!resolves(normalizeRef(item))) {\n diagnostics.push({\n code: \"BLUME_NAV_MISSING_PAGE\",\n message: `Sidebar entry \"${item}\" matches no page, so it's left out of the sidebar.`,\n severity: \"warning\",\n suggestion: \"Fix the route, or add a page at it.\",\n });\n }\n continue;\n }\n if (item.root && !resolves(normalizeRef(item.root))) {\n diagnostics.push({\n code: \"BLUME_NAV_MISSING_PAGE\",\n message: `Sidebar entry \"${item.label}\" has root \"${item.root}\", but no page matches it, so its link leads nowhere.`,\n severity: \"warning\",\n suggestion: \"Fix the root, or add a page at that route.\",\n });\n }\n if (item.items) {\n walk(item.items);\n } else if (!(item.root || item.href)) {\n diagnostics.push({\n code: \"BLUME_NAV_EMPTY_ITEM\",\n message: `Sidebar entry \"${item.label}\" has no page, href, root, or items, so it's left out of the sidebar.`,\n severity: \"warning\",\n suggestion:\n \"Give it an href or a root to link somewhere, or items to make it a group.\",\n });\n }\n }\n };\n walk(items);\n return diagnostics;\n};\n\n/** Warn about two nav items sharing a label at the same sidebar level. */\nconst duplicateLabelDiagnostics = (navigation: Navigation): Diagnostic[] => {\n const diagnostics: Diagnostic[] = [];\n const checkLevel = (nodes: NavNode[], where: string): void => {\n const counts = new Map<string, number>();\n for (const node of nodes) {\n counts.set(node.label, (counts.get(node.label) ?? 0) + 1);\n }\n for (const [label, count] of counts) {\n if (count > 1) {\n diagnostics.push({\n code: \"BLUME_NAV_DUPLICATE_LABEL\",\n message: `Duplicate sidebar label \"${label}\" appears ${count} times ${where}.`,\n severity: \"warning\",\n suggestion: \"Give the entries distinct titles.\",\n });\n }\n }\n for (const node of nodes) {\n if (node.kind === \"group\") {\n checkLevel(node.children, `under \"${node.label}\"`);\n }\n }\n };\n const sidebars: { nodes: NavNode[]; where: string }[] = [\n { nodes: navigation.sidebar, where: \"at the top level\" },\n ];\n for (const { nodes, where } of sidebars) {\n checkLevel(nodes, where);\n }\n return diagnostics;\n};\n\n/** Warn when a page shown in the sidebar is marked hidden (so pagination hits it). */\nconst hiddenInSidebarDiagnostics = (\n navigation: Navigation,\n pages: PageRecord[]\n): Diagnostic[] => {\n const hidden = new Set(\n pages.flatMap((page) => (page.meta.sidebar.hidden ? [page.id] : []))\n );\n if (hidden.size === 0) {\n return [];\n }\n const sidebars = [navigation.sidebar];\n const diagnostics: Diagnostic[] = [];\n const seen = new Set<string>();\n for (const sidebar of sidebars) {\n for (const node of flattenNodes(sidebar)) {\n if (\n node.kind === \"page\" &&\n hidden.has(node.pageId) &&\n !seen.has(node.pageId)\n ) {\n seen.add(node.pageId);\n diagnostics.push({\n code: \"BLUME_NAV_HIDDEN_IN_SIDEBAR\",\n message: `Page \"${node.label}\" is marked hidden but appears in the sidebar (and its pagination).`,\n severity: \"warning\",\n suggestion:\n \"Remove it from the navigation config, or unset sidebar.hidden.\",\n });\n }\n }\n }\n return diagnostics;\n};\n\n/**\n * Structural navigation diagnostics that need only the built navigation +\n * content pages: duplicate sidebar labels at a level, and hidden pages that\n * still surface in the sidebar (so pagination lands on them). Target existence\n * is checked separately by {@link validateNavTargets}, which needs the full\n * route set.\n */\nexport const validateNavStructure = (\n navigation: Navigation,\n pages: PageRecord[]\n): Diagnostic[] => [\n ...duplicateLabelDiagnostics(navigation),\n ...hiddenInSidebarDiagnostics(navigation, pages),\n];\n",
|
|
12
|
-
"import { mountBasePath, withBasePath } from \"./base-path.ts\";\nimport {\n localizeInternalPath,\n localizeRoute,\n resolveFallbackLocale,\n} from \"./i18n.ts\";\nimport {\n validateNavIcons,\n validateNavStructure,\n validateSidebarItems,\n} from \"./nav-diagnostics.ts\";\nimport { buildNavigation, isPageRef, pagesByRef } from \"./navigation.ts\";\nimport type {\n FolderMeta,\n LocalizableLabel,\n ResolvedConfig,\n ResolvedI18nConfig,\n ResolvedVersionsConfig,\n SidebarItemConfig,\n} from \"./schema.ts\";\nimport type {\n ContentGraph,\n Diagnostic,\n Navigation,\n NavTab,\n PageRecord,\n} from \"./types.ts\";\nimport { versionizeRoute } from \"./versions.ts\";\n\ninterface BuildContentGraphOptions {\n /** The banner's link target as configured (`banner.link.href`), if any. */\n bannerHref?: string;\n /** Site-wide route mount point (`\"\"` or `/seg`); invisible to the nav tree. */\n basePath?: string;\n /** The header brand link as configured (`logo.href`, default `/`). */\n brandHref?: string;\n /** Routes served outside the content tree that tabs may link to directly. */\n extraRoutes?: ReadonlySet<string>;\n folderMeta: Map<string, FolderMeta>;\n sharedFolderMeta?: Map<string, FolderMeta>;\n navigation: ResolvedConfig[\"navigation\"];\n i18n?: ResolvedI18nConfig;\n versions?: ResolvedVersionsConfig;\n}\n\ntype FallbackLocale = ReturnType<typeof resolveFallbackLocale>;\n\n/** Build the route → page-id map, flagging any duplicate-route collisions. */\nconst collectRoutes = (pages: PageRecord[]) => {\n const routes = new Map<string, string>();\n const diagnostics: Diagnostic[] = [];\n for (const page of pages) {\n const existing = routes.get(page.route);\n if (existing) {\n diagnostics.push({\n code: \"BLUME_DUPLICATE_ROUTE\",\n file: page.sourcePath ?? page.id,\n message: `Two files resolve to ${page.route}: ${existing} and ${page.id}`,\n severity: \"error\",\n suggestion: \"Rename or move one of the files so each route is unique.\",\n });\n continue;\n }\n routes.set(page.route, page.id);\n }\n return { diagnostics, routes };\n};\n\n/**\n * A locale's pages, padded with fallback-locale entries for any translation it\n * hasn't authored yet, so navigation mirrors the default structure instead of\n * showing an empty (or partial) tree.\n */\nconst localePagesFor = (\n code: string,\n real: PageRecord[],\n fallback: FallbackLocale,\n fallbackByKey: Map<string, PageRecord>,\n i18n: ResolvedI18nConfig,\n basePath: string\n): PageRecord[] => {\n if (!(fallback && code !== fallback)) {\n return real;\n }\n const present = new Set(real.map((page) => page.translationKey));\n const filled: PageRecord[] = [];\n for (const [key, source] of fallbackByKey) {\n if (!present.has(key)) {\n filled.push({\n ...source,\n fallback: true,\n locale: code,\n route: mountBasePath(basePath, localizeRoute(key, code, i18n)),\n });\n }\n }\n return [...real, ...filled];\n};\n\n/**\n * Resolve a possibly-per-locale header label to the string a locale renders:\n * the active locale's entry, else the default locale's, else the map's first\n * entry (which is also what a single-locale site gets).\n */\n/** A label is either one string for every locale or a per-locale map. */\nconst isSingleLabel = (label: LocalizableLabel): label is string =>\n typeof label === \"string\";\n\nconst resolveLabel = (\n label: LocalizableLabel,\n locale: string,\n defaultLocale?: string\n): string => {\n if (isSingleLabel(label)) {\n return label;\n }\n return (\n label[locale] ??\n (defaultLocale === undefined ? undefined : label[defaultLocale]) ??\n Object.values(label)[0] ??\n \"\"\n );\n};\n\n/**\n * An explicit sidebar with every item's `href` passed through `localize` (page\n * refs and `root`s resolve against each locale's own pages already).\n */\nconst localizeSidebarHrefs = (\n items: SidebarItemConfig[],\n localize: (href: string) => string\n): SidebarItemConfig[] =>\n items.map((item) => {\n if (isPageRef(item)) {\n return item;\n }\n const localized = { ...item };\n if (item.href !== undefined) {\n localized.href = localize(item.href);\n }\n if (item.items) {\n localized.items = localizeSidebarHrefs(item.items, localize);\n }\n return localized;\n });\n\n/** Resolve every localizable label in the configured tabs for one locale. */\nconst resolveTabLabels = (\n tabs: BuildContentGraphOptions[\"navigation\"][\"tabs\"],\n locale: string,\n defaultLocale?: string\n): NavTab[] =>\n (tabs ?? []).map((tab) => ({\n ...tab,\n items: tab.items?.map((item) => ({\n ...item,\n label: resolveLabel(item.label, locale, defaultLocale),\n })),\n label: resolveLabel(tab.label, locale, defaultLocale),\n }));\n\n/**\n * Mount a configured link authored as if the site were served at root (the\n * banner's): under `basePath`, except a route served outside the content tree\n * — a custom page, the generated changelog index — which answers only at its\n * own path.\n */\nconst mountConfiguredLink = (\n path: string,\n basePath: string,\n extraRoutes: ReadonlySet<string>\n): string => (extraRoutes.has(path) ? path : withBasePath(basePath, path));\n\n/**\n * Build one locale's navigation tree from its own pages and folder meta.\n * `version` is the archived version id when building a snapshot's tree\n * (`\"\"` for the current docs): it shifts the folder-meta lookups into the\n * snapshot's key space and roots the tree at the localized version root.\n */\nconst buildLocaleNavigation = (\n code: string,\n pages: PageRecord[],\n fallback: FallbackLocale,\n fallbackByKey: Map<string, PageRecord>,\n options: BuildContentGraphOptions,\n i18n: ResolvedI18nConfig,\n diagnostics: Diagnostic[],\n version = \"\"\n): Navigation => {\n const basePath = options.basePath ?? \"\";\n const real = pages.filter((page) => page.locale === code);\n const localePages = localePagesFor(\n code,\n real,\n fallback,\n fallbackByKey,\n i18n,\n basePath\n );\n // Every route the build serves: each locale's pages (this locale's fallback\n // copies included) plus the routes outside the content tree — custom pages\n // and the generated changelog index, which mount outside `basePath`.\n const pageRoutes = [\n ...new Set([...pages, ...localePages].map((page) => page.route)),\n ];\n const extraRoutes = options.extraRoutes ?? new Set<string>();\n // Whether `path` (authored at root, like a tab path) is served — exactly, or\n // with `section`, as the prefix of a served page (a tab resolves to its\n // section's first page, a plain link doesn't).\n const serves = (path: string, section: boolean): boolean => {\n if (extraRoutes.has(path)) {\n return true;\n }\n const based = withBasePath(basePath, path);\n const prefix = based === \"/\" ? \"/\" : `${based}/`;\n return pageRoutes.some(\n (route) => route === based || (section && route.startsWith(prefix))\n );\n };\n // Localize an internal link so it points to its in-locale route (e.g. `/docs`\n // -> `/fr/docs`); external paths pass through. A route this locale doesn't\n // serve while the default one does — a custom page, the generated changelog\n // index — exists only at its own path, so the link stays there instead of\n // 404ing. Tab paths (and their dropdown items') resolve to a section's first\n // page, so a translated section counts; hrefs must be served exactly.\n // Selectors are left alone: a language selector's items intentionally target\n // specific locales. The header's brand link resolves the same way, so the\n // logo and the tabs beside it always agree on the reader's locale.\n const localizeServed = (path: string, section: boolean): string => {\n const localized = localizeInternalPath(path, code, i18n);\n return localized === path ||\n serves(localized, section) ||\n !serves(path, section)\n ? localized\n : path;\n };\n const localizePath = (path: string): string => localizeServed(path, true);\n const tabs = resolveTabLabels(\n options.navigation.tabs,\n code,\n i18n.defaultLocale\n ).map((tab) => {\n const localized = {\n ...tab,\n items: tab.items?.map((item) => ({\n ...item,\n path: localizePath(item.path),\n })),\n path: localizePath(tab.path),\n };\n if (localized.href) {\n localized.href = localizeServed(localized.href, false);\n }\n return localized;\n });\n // Meta files live in locale directories only under the `dir` parser\n // (`fr/guides/meta.ts` -> key `fr/guides`). Under `dot`, translations sit\n // next to the originals and `guides/meta.ts` applies to every locale —\n // prefixing would look up keys that can never exist. Inside a snapshot the\n // version dir is hoisted in front (`v1.0/fr`), matching `discoverFolderMeta`.\n const localeDirOf = (locale: string): string =>\n i18n.parser === \"dir\" && locale !== i18n.defaultLocale ? locale : \"\";\n const localeDir = localeDirOf(code);\n // A locale padded from the fallback locale mirrors that locale's folder meta\n // for any folder it has no meta of its own for.\n const fallbackMetaPrefix =\n fallback && code !== fallback\n ? [version, localeDirOf(fallback)].filter(Boolean).join(\"/\")\n : undefined;\n // Internal featured and header hrefs are localized like tab paths — a pinned\n // `/changelog` link rendered on `/fr/…` pages must stay inside the reader's\n // locale, not kick them back to the default one.\n const localizeHref = <T extends { href: string }>(item: T): T => ({\n ...item,\n href: localizeServed(item.href, false),\n });\n const { actions, cta, featured } = options.navigation;\n const sidebarItems = options.navigation.sidebar.items;\n\n const navigation = buildNavigation(localePages, {\n actions: actions?.map(localizeHref),\n basePath,\n cta: cta ? localizeHref(cta) : null,\n diagnostics,\n display: options.navigation.sidebar.display,\n extraRoutes: options.extraRoutes,\n fallbackMetaPrefix,\n featured: featured?.map(localizeHref),\n folderMeta: options.folderMeta,\n // The localized tree root (\"/\" for the hidden default, \"/fr\" otherwise;\n // \"/fr/v1.0\" inside a snapshot): the tab pointing here spans the whole\n // tree and must not be treated as a tab section.\n localizedRoot: localizeRoute(versionizeRoute(\"/\", version), code, i18n),\n metaPrefix: [version, localeDir].filter(Boolean).join(\"/\"),\n refByLogical: true,\n selectors: options.navigation.selectors,\n sharedFolderMeta: options.sharedFolderMeta,\n // Shared `meta.$.*` files are locale-agnostic but version-specific: a\n // snapshot's shared meta keys under its version dir.\n sharedMetaPrefix: version,\n // A configured explicit sidebar describes the current docs; a frozen\n // snapshot's structure comes from the snapshot itself, so archived trees\n // always build from the filesystem. Its `href` links are localized like\n // featured links.\n sidebar:\n version || !sidebarItems\n ? undefined\n : localizeSidebarHrefs(sidebarItems, (href) =>\n localizeServed(href, false)\n ),\n // Tab paths are written against the current docs' root, which a\n // snapshot's versionized `localizedRoot` no longer is.\n tabRoot: localizeRoute(\"/\", code, i18n),\n tabs,\n });\n // `serves` checked the localized brand link against based routes, and\n // unlike tab and header links it isn't rebased later, so a localized one\n // takes the base here (`/fr` is served at `/docs/fr`).\n const localizedBrand = (href: string): string => {\n const localized = localizeServed(href, false);\n return localized === href ? localized : withBasePath(basePath, localized);\n };\n const branded =\n options.brandHref === undefined\n ? navigation\n : { ...navigation, brandHref: localizedBrand(options.brandHref) };\n // The banner link is authored like a featured href — in the default\n // locale's path space, as if mounted at root — so it is localized the same\n // way before it is mounted.\n return options.bannerHref === undefined\n ? branded\n : {\n ...branded,\n bannerHref: mountConfiguredLink(\n localizeServed(options.bannerHref, false),\n basePath,\n extraRoutes\n ),\n };\n};\n\n/**\n * Per-locale navigation trees plus the default-locale tree for i18n sites.\n * Called once for the current docs and once per archived version (with that\n * version's pages and its id as `version`).\n */\nconst buildI18nNavigation = (\n pages: PageRecord[],\n options: BuildContentGraphOptions,\n i18n: ResolvedI18nConfig,\n diagnostics: Diagnostic[],\n version = \"\"\n) => {\n // Pages of the fallback locale, by translation key — used to fill in a\n // locale's sidebar for pages it hasn't translated yet.\n const fallback = resolveFallbackLocale(i18n);\n // Monolingual pages (GitHub releases) are left out: they aren't served at the\n // other locales' URLs (see the route manifest), so no sidebar may link there.\n const fallbackByKey = new Map<string, PageRecord>();\n if (fallback) {\n for (const page of pages) {\n if (page.locale === fallback && !page.monolingual) {\n fallbackByKey.set(page.translationKey, page);\n }\n }\n }\n\n // Each locale gets an independent tree, so navigation may diverge per language.\n // Untranslated pages are padded into every locale from the fallback, so a tie\n // in shared content would otherwise be re-reported once per locale — dedupe on\n // code + file + message, which are all locale-stable for padded pages. A\n // locale-specific tie names its own translated files/labels and survives.\n const navigationByLocale: Record<string, Navigation> = {};\n const seen = new Set<string>();\n for (const { code } of i18n.locales) {\n const localeDiagnostics: Diagnostic[] = [];\n navigationByLocale[code] = buildLocaleNavigation(\n code,\n pages,\n fallback,\n fallbackByKey,\n options,\n i18n,\n localeDiagnostics,\n version\n );\n for (const diagnostic of localeDiagnostics) {\n const key = `${diagnostic.code}\\n${diagnostic.file ?? \"\"}\\n${diagnostic.message}`;\n if (!seen.has(key)) {\n seen.add(key);\n diagnostics.push(diagnostic);\n }\n }\n }\n const navigation: Navigation = navigationByLocale[i18n.defaultLocale] ?? {\n featured: [],\n selectors: [],\n sidebar: [],\n tabs: [],\n };\n return { navigation, navigationByLocale };\n};\n\n/** One archived version's navigation trees, keyed by locale (`\"\"` sans i18n). */\nconst buildVersionNavigation = (\n id: string,\n versionPages: PageRecord[],\n options: BuildContentGraphOptions,\n diagnostics: Diagnostic[]\n) => {\n const { i18n } = options;\n if (i18n) {\n return buildI18nNavigation(versionPages, options, i18n, diagnostics, id)\n .navigationByLocale;\n }\n return {\n \"\": buildNavigation(versionPages, {\n actions: options.navigation.actions,\n basePath: options.basePath ?? \"\",\n cta: options.navigation.cta,\n diagnostics,\n display: options.navigation.sidebar.display,\n extraRoutes: options.extraRoutes,\n featured: options.navigation.featured,\n folderMeta: options.folderMeta,\n localizedRoot: versionizeRoute(\"/\", id),\n metaPrefix: id,\n selectors: options.navigation.selectors,\n sharedFolderMeta: options.sharedFolderMeta,\n sharedMetaPrefix: id,\n // Tab paths are written against the current docs' root.\n tabRoot: \"/\",\n // A configured explicit sidebar describes the current docs; a snapshot's\n // structure comes from the snapshot itself.\n tabs: resolveTabLabels(options.navigation.tabs, \"\"),\n }),\n };\n};\n\n/** Assemble the content graph: routes map, nav, and duplicate diagnostics. */\nexport const buildContentGraph = (\n pages: PageRecord[],\n options: BuildContentGraphOptions\n): ContentGraph => {\n const { diagnostics, routes } = collectRoutes(pages);\n const { i18n } = options;\n\n // Under versioning, each version gets independent trees: navPath is\n // version-stripped, so mixing versions into one build would collide the\n // same logical page once per version.\n const currentPages = options.versions\n ? pages.filter((page) => page.version === \"\")\n : pages;\n\n // A single-locale site has no per-locale trees; the empty map is its\n // navigationByLocale.\n let navigationByLocale: Record<string, Navigation> = {};\n let navigation: Navigation;\n if (i18n) {\n ({ navigation, navigationByLocale } = buildI18nNavigation(\n currentPages,\n options,\n i18n,\n diagnostics\n ));\n } else {\n navigation = buildNavigation(currentPages, {\n actions: options.navigation.actions,\n basePath: options.basePath ?? \"\",\n cta: options.navigation.cta,\n diagnostics,\n display: options.navigation.sidebar.display,\n extraRoutes: options.extraRoutes,\n featured: options.navigation.featured,\n folderMeta: options.folderMeta,\n selectors: options.navigation.selectors,\n sharedFolderMeta: options.sharedFolderMeta,\n sidebar: options.navigation.sidebar.items,\n // No locale to prefer: a per-locale label map resolves to its first\n // entry on a single-locale site.\n tabs: resolveTabLabels(options.navigation.tabs, \"\"),\n });\n if (options.bannerHref !== undefined) {\n navigation = {\n ...navigation,\n bannerHref: mountConfiguredLink(\n options.bannerHref,\n options.basePath ?? \"\",\n options.extraRoutes ?? new Set<string>()\n ),\n };\n }\n }\n\n const navigationByVersion: Record<string, Record<string, Navigation>> = {};\n for (const { id } of options.versions?.archived ?? []) {\n navigationByVersion[id] = buildVersionNavigation(\n id,\n pages.filter((page) => page.version === id),\n options,\n diagnostics\n );\n }\n\n // Icon typos, duplicate labels, and hidden-page-in-sidebar are validated on\n // the built navigation. Missing-target detection needs the full route set\n // (incl. custom + generated pages), so it runs later in generateRuntime.\n diagnostics.push(\n ...validateNavIcons(navigation),\n ...validateNavStructure(navigation, currentPages)\n );\n // Checked once against every locale's pages, not per locale tree: a page\n // missing from one locale's sidebar is an untranslated page, not a typo.\n const sidebarItems = options.navigation.sidebar.items;\n if (sidebarItems) {\n const byRef = pagesByRef(\n currentPages,\n options.basePath ?? \"\",\n Boolean(i18n)\n );\n const extraRoutes = options.extraRoutes ?? new Set<string>();\n diagnostics.push(\n ...validateSidebarItems(\n sidebarItems,\n (route) => byRef.has(route) || extraRoutes.has(route)\n )\n );\n }\n\n return {\n diagnostics,\n navigation,\n navigationByLocale,\n navigationByVersion,\n pages,\n routes,\n };\n};\n",
|
|
13
|
+
"import { mountBasePath, withBasePath } from \"./base-path.ts\";\nimport {\n localizeInternalPath,\n localizeRoute,\n resolveFallbackLocale,\n} from \"./i18n.ts\";\nimport { resolveLocalizable } from \"./localizable.ts\";\nimport {\n validateNavIcons,\n validateNavStructure,\n validateSidebarItems,\n} from \"./nav-diagnostics.ts\";\nimport { buildNavigation, isPageRef, pagesByRef } from \"./navigation.ts\";\nimport type {\n FolderMeta,\n LocalizableLabel,\n ResolvedConfig,\n ResolvedI18nConfig,\n ResolvedVersionsConfig,\n SidebarItemConfig,\n} from \"./schema.ts\";\nimport type {\n ContentGraph,\n Diagnostic,\n Navigation,\n NavTab,\n PageRecord,\n} from \"./types.ts\";\nimport { versionizeRoute } from \"./versions.ts\";\n\ninterface BuildContentGraphOptions {\n /** The banner's link target as configured (`banner.link.href`), if any. */\n bannerHref?: string;\n /** Site-wide route mount point (`\"\"` or `/seg`); invisible to the nav tree. */\n basePath?: string;\n /** The header brand link as configured (`logo.href`, default `/`). */\n brandHref?: string;\n /** Routes served outside the content tree that tabs may link to directly. */\n extraRoutes?: ReadonlySet<string>;\n folderMeta: Map<string, FolderMeta>;\n sharedFolderMeta?: Map<string, FolderMeta>;\n navigation: ResolvedConfig[\"navigation\"];\n i18n?: ResolvedI18nConfig;\n versions?: ResolvedVersionsConfig;\n}\n\ntype FallbackLocale = ReturnType<typeof resolveFallbackLocale>;\n\n/** Build the route → page-id map, flagging any duplicate-route collisions. */\nconst collectRoutes = (pages: PageRecord[]) => {\n const routes = new Map<string, string>();\n const diagnostics: Diagnostic[] = [];\n for (const page of pages) {\n const existing = routes.get(page.route);\n if (existing) {\n diagnostics.push({\n code: \"BLUME_DUPLICATE_ROUTE\",\n file: page.sourcePath ?? page.id,\n message: `Two files resolve to ${page.route}: ${existing} and ${page.id}`,\n severity: \"error\",\n suggestion: \"Rename or move one of the files so each route is unique.\",\n });\n continue;\n }\n routes.set(page.route, page.id);\n }\n return { diagnostics, routes };\n};\n\n/**\n * A locale's pages, padded with fallback-locale entries for any translation it\n * hasn't authored yet, so navigation mirrors the default structure instead of\n * showing an empty (or partial) tree.\n */\nconst localePagesFor = (\n code: string,\n real: PageRecord[],\n fallback: FallbackLocale,\n fallbackByKey: Map<string, PageRecord>,\n i18n: ResolvedI18nConfig,\n basePath: string\n): PageRecord[] => {\n if (!(fallback && code !== fallback)) {\n return real;\n }\n const present = new Set(real.map((page) => page.translationKey));\n const filled: PageRecord[] = [];\n for (const [key, source] of fallbackByKey) {\n if (!present.has(key)) {\n filled.push({\n ...source,\n fallback: true,\n locale: code,\n route: mountBasePath(basePath, localizeRoute(key, code, i18n)),\n });\n }\n }\n return [...real, ...filled];\n};\n\n/**\n * An explicit sidebar with every item's `href` passed through `localize` (page\n * refs and `root`s resolve against each locale's own pages already).\n */\nconst localizeSidebarHrefs = (\n items: SidebarItemConfig[],\n localize: (href: string) => string\n): SidebarItemConfig[] =>\n items.map((item) => {\n if (isPageRef(item)) {\n return item;\n }\n const localized = { ...item };\n if (item.href !== undefined) {\n localized.href = localize(item.href);\n }\n if (item.items) {\n localized.items = localizeSidebarHrefs(item.items, localize);\n }\n return localized;\n });\n\n/** Resolve every localizable label in the configured tabs for one locale. */\nconst resolveTabLabels = (\n tabs: BuildContentGraphOptions[\"navigation\"][\"tabs\"],\n locale: string,\n defaultLocale?: string\n): NavTab[] =>\n (tabs ?? []).map((tab) => ({\n ...tab,\n items: tab.items?.map((item) => ({\n ...item,\n label: resolveLocalizable(item.label, locale, defaultLocale),\n })),\n label: resolveLocalizable(tab.label, locale, defaultLocale),\n }));\n\n/** A configured header or footer link with its label resolved for a locale. */\nconst withLabel = <T extends { label: LocalizableLabel }>(\n link: T,\n locale: string,\n defaultLocale?: string\n): Omit<T, \"label\"> & { label: string } => ({\n ...link,\n label: resolveLocalizable(link.label, locale, defaultLocale),\n});\n\n/** The configured header links (plain, call to action, featured) in `locale`. */\nconst resolveHeaderLinks = (\n navigation: BuildContentGraphOptions[\"navigation\"],\n locale: string,\n defaultLocale?: string\n) => ({\n actions: navigation.actions.map((link) =>\n withLabel(link, locale, defaultLocale)\n ),\n cta: navigation.cta ? withLabel(navigation.cta, locale, defaultLocale) : null,\n featured: navigation.featured.map((link) =>\n withLabel(link, locale, defaultLocale)\n ),\n});\n\n/**\n * Mount a configured link authored as if the site were served at root (the\n * banner's): under `basePath`, except a route served outside the content tree\n * — a custom page, the generated changelog index — which answers only at its\n * own path.\n */\nconst mountConfiguredLink = (\n path: string,\n basePath: string,\n extraRoutes: ReadonlySet<string>\n): string => (extraRoutes.has(path) ? path : withBasePath(basePath, path));\n\n/**\n * Build one locale's navigation tree from its own pages and folder meta.\n * `version` is the archived version id when building a snapshot's tree\n * (`\"\"` for the current docs): it shifts the folder-meta lookups into the\n * snapshot's key space and roots the tree at the localized version root.\n */\nconst buildLocaleNavigation = (\n code: string,\n pages: PageRecord[],\n fallback: FallbackLocale,\n fallbackByKey: Map<string, PageRecord>,\n options: BuildContentGraphOptions,\n i18n: ResolvedI18nConfig,\n diagnostics: Diagnostic[],\n version = \"\"\n): Navigation => {\n const basePath = options.basePath ?? \"\";\n const real = pages.filter((page) => page.locale === code);\n const localePages = localePagesFor(\n code,\n real,\n fallback,\n fallbackByKey,\n i18n,\n basePath\n );\n // Every route the build serves: each locale's pages (this locale's fallback\n // copies included) plus the routes outside the content tree — custom pages\n // and the generated changelog index, which mount outside `basePath`.\n const pageRoutes = [\n ...new Set([...pages, ...localePages].map((page) => page.route)),\n ];\n const extraRoutes = options.extraRoutes ?? new Set<string>();\n // Whether `path` (authored at root, like a tab path) is served — exactly, or\n // with `section`, as the prefix of a served page (a tab resolves to its\n // section's first page, a plain link doesn't).\n const serves = (path: string, section: boolean): boolean => {\n if (extraRoutes.has(path)) {\n return true;\n }\n const based = withBasePath(basePath, path);\n const prefix = based === \"/\" ? \"/\" : `${based}/`;\n return pageRoutes.some(\n (route) => route === based || (section && route.startsWith(prefix))\n );\n };\n // Localize an internal link so it points to its in-locale route (e.g. `/docs`\n // -> `/fr/docs`); external paths pass through. A route this locale doesn't\n // serve while the default one does — a custom page, the generated changelog\n // index — exists only at its own path, so the link stays there instead of\n // 404ing. Tab paths (and their dropdown items') resolve to a section's first\n // page, so a translated section counts; hrefs must be served exactly.\n // Selectors are left alone: a language selector's items intentionally target\n // specific locales. The header's brand link resolves the same way, so the\n // logo and the tabs beside it always agree on the reader's locale.\n const localizeServed = (path: string, section: boolean): string => {\n const localized = localizeInternalPath(path, code, i18n);\n return localized === path ||\n serves(localized, section) ||\n !serves(path, section)\n ? localized\n : path;\n };\n const localizePath = (path: string): string => localizeServed(path, true);\n const tabs = resolveTabLabels(\n options.navigation.tabs,\n code,\n i18n.defaultLocale\n ).map((tab) => {\n const localized = {\n ...tab,\n items: tab.items?.map((item) => ({\n ...item,\n path: localizePath(item.path),\n })),\n path: localizePath(tab.path),\n };\n if (localized.href) {\n localized.href = localizeServed(localized.href, false);\n }\n return localized;\n });\n // Meta files live in locale directories only under the `dir` parser\n // (`fr/guides/meta.ts` -> key `fr/guides`). Under `dot`, translations sit\n // next to the originals and `guides/meta.ts` applies to every locale —\n // prefixing would look up keys that can never exist. Inside a snapshot the\n // version dir is hoisted in front (`v1.0/fr`), matching `discoverFolderMeta`.\n const localeDirOf = (locale: string): string =>\n i18n.parser === \"dir\" && locale !== i18n.defaultLocale ? locale : \"\";\n const localeDir = localeDirOf(code);\n // A locale padded from the fallback locale mirrors that locale's folder meta\n // for any folder it has no meta of its own for.\n const fallbackMetaPrefix =\n fallback && code !== fallback\n ? [version, localeDirOf(fallback)].filter(Boolean).join(\"/\")\n : undefined;\n // Internal featured and header hrefs are localized like tab paths — a pinned\n // `/changelog` link rendered on `/fr/…` pages must stay inside the reader's\n // locale, not kick them back to the default one.\n const localizeHref = <T extends { href: string }>(item: T): T => ({\n ...item,\n href: localizeServed(item.href, false),\n });\n const { actions, cta, featured } = resolveHeaderLinks(\n options.navigation,\n code,\n i18n.defaultLocale\n );\n const sidebarItems = options.navigation.sidebar.items;\n\n const navigation = buildNavigation(localePages, {\n actions: actions.map(localizeHref),\n basePath,\n cta: cta ? localizeHref(cta) : null,\n diagnostics,\n display: options.navigation.sidebar.display,\n extraRoutes: options.extraRoutes,\n fallbackMetaPrefix,\n featured: featured.map(localizeHref),\n folderMeta: options.folderMeta,\n // The localized tree root (\"/\" for the hidden default, \"/fr\" otherwise;\n // \"/fr/v1.0\" inside a snapshot): the tab pointing here spans the whole\n // tree and must not be treated as a tab section.\n localizedRoot: localizeRoute(versionizeRoute(\"/\", version), code, i18n),\n metaPrefix: [version, localeDir].filter(Boolean).join(\"/\"),\n refByLogical: true,\n selectors: options.navigation.selectors,\n sharedFolderMeta: options.sharedFolderMeta,\n // Shared `meta.$.*` files are locale-agnostic but version-specific: a\n // snapshot's shared meta keys under its version dir.\n sharedMetaPrefix: version,\n // A configured explicit sidebar describes the current docs; a frozen\n // snapshot's structure comes from the snapshot itself, so archived trees\n // always build from the filesystem. Its `href` links are localized like\n // featured links.\n sidebar:\n version || !sidebarItems\n ? undefined\n : localizeSidebarHrefs(sidebarItems, (href) =>\n localizeServed(href, false)\n ),\n // Tab paths are written against the current docs' root, which a\n // snapshot's versionized `localizedRoot` no longer is.\n tabRoot: localizeRoute(\"/\", code, i18n),\n tabs,\n });\n // `serves` checked the localized brand link against based routes, and\n // unlike tab and header links it isn't rebased later, so a localized one\n // takes the base here (`/fr` is served at `/docs/fr`).\n const localizedBrand = (href: string): string => {\n const localized = localizeServed(href, false);\n return localized === href ? localized : withBasePath(basePath, localized);\n };\n const branded =\n options.brandHref === undefined\n ? navigation\n : { ...navigation, brandHref: localizedBrand(options.brandHref) };\n // The banner link is authored like a featured href — in the default\n // locale's path space, as if mounted at root — so it is localized the same\n // way before it is mounted.\n return options.bannerHref === undefined\n ? branded\n : {\n ...branded,\n bannerHref: mountConfiguredLink(\n localizeServed(options.bannerHref, false),\n basePath,\n extraRoutes\n ),\n };\n};\n\n/**\n * Per-locale navigation trees plus the default-locale tree for i18n sites.\n * Called once for the current docs and once per archived version (with that\n * version's pages and its id as `version`).\n */\nconst buildI18nNavigation = (\n pages: PageRecord[],\n options: BuildContentGraphOptions,\n i18n: ResolvedI18nConfig,\n diagnostics: Diagnostic[],\n version = \"\"\n) => {\n // Pages of the fallback locale, by translation key — used to fill in a\n // locale's sidebar for pages it hasn't translated yet.\n const fallback = resolveFallbackLocale(i18n);\n // Monolingual pages (GitHub releases) are left out: they aren't served at the\n // other locales' URLs (see the route manifest), so no sidebar may link there.\n const fallbackByKey = new Map<string, PageRecord>();\n if (fallback) {\n for (const page of pages) {\n if (page.locale === fallback && !page.monolingual) {\n fallbackByKey.set(page.translationKey, page);\n }\n }\n }\n\n // Each locale gets an independent tree, so navigation may diverge per language.\n // Untranslated pages are padded into every locale from the fallback, so a tie\n // in shared content would otherwise be re-reported once per locale — dedupe on\n // code + file + message, which are all locale-stable for padded pages. A\n // locale-specific tie names its own translated files/labels and survives.\n const navigationByLocale: Record<string, Navigation> = {};\n const seen = new Set<string>();\n for (const { code } of i18n.locales) {\n const localeDiagnostics: Diagnostic[] = [];\n navigationByLocale[code] = buildLocaleNavigation(\n code,\n pages,\n fallback,\n fallbackByKey,\n options,\n i18n,\n localeDiagnostics,\n version\n );\n for (const diagnostic of localeDiagnostics) {\n const key = `${diagnostic.code}\\n${diagnostic.file ?? \"\"}\\n${diagnostic.message}`;\n if (!seen.has(key)) {\n seen.add(key);\n diagnostics.push(diagnostic);\n }\n }\n }\n const navigation: Navigation = navigationByLocale[i18n.defaultLocale] ?? {\n featured: [],\n selectors: [],\n sidebar: [],\n tabs: [],\n };\n return { navigation, navigationByLocale };\n};\n\n/** One archived version's navigation trees, keyed by locale (`\"\"` sans i18n). */\nconst buildVersionNavigation = (\n id: string,\n versionPages: PageRecord[],\n options: BuildContentGraphOptions,\n diagnostics: Diagnostic[]\n) => {\n const { i18n } = options;\n if (i18n) {\n return buildI18nNavigation(versionPages, options, i18n, diagnostics, id)\n .navigationByLocale;\n }\n return {\n \"\": buildNavigation(versionPages, {\n ...resolveHeaderLinks(options.navigation, \"\"),\n basePath: options.basePath ?? \"\",\n diagnostics,\n display: options.navigation.sidebar.display,\n extraRoutes: options.extraRoutes,\n folderMeta: options.folderMeta,\n localizedRoot: versionizeRoute(\"/\", id),\n metaPrefix: id,\n selectors: options.navigation.selectors,\n sharedFolderMeta: options.sharedFolderMeta,\n sharedMetaPrefix: id,\n // Tab paths are written against the current docs' root.\n tabRoot: \"/\",\n // A configured explicit sidebar describes the current docs; a snapshot's\n // structure comes from the snapshot itself.\n tabs: resolveTabLabels(options.navigation.tabs, \"\"),\n }),\n };\n};\n\n/** Assemble the content graph: routes map, nav, and duplicate diagnostics. */\nexport const buildContentGraph = (\n pages: PageRecord[],\n options: BuildContentGraphOptions\n): ContentGraph => {\n const { diagnostics, routes } = collectRoutes(pages);\n const { i18n } = options;\n\n // Under versioning, each version gets independent trees: navPath is\n // version-stripped, so mixing versions into one build would collide the\n // same logical page once per version.\n const currentPages = options.versions\n ? pages.filter((page) => page.version === \"\")\n : pages;\n\n // A single-locale site has no per-locale trees; the empty map is its\n // navigationByLocale.\n let navigationByLocale: Record<string, Navigation> = {};\n let navigation: Navigation;\n if (i18n) {\n ({ navigation, navigationByLocale } = buildI18nNavigation(\n currentPages,\n options,\n i18n,\n diagnostics\n ));\n } else {\n navigation = buildNavigation(currentPages, {\n // No locale to prefer: a per-locale label map resolves to its first\n // entry on a single-locale site.\n ...resolveHeaderLinks(options.navigation, \"\"),\n basePath: options.basePath ?? \"\",\n diagnostics,\n display: options.navigation.sidebar.display,\n extraRoutes: options.extraRoutes,\n folderMeta: options.folderMeta,\n selectors: options.navigation.selectors,\n sharedFolderMeta: options.sharedFolderMeta,\n sidebar: options.navigation.sidebar.items,\n // No locale to prefer: a per-locale label map resolves to its first\n // entry on a single-locale site.\n tabs: resolveTabLabels(options.navigation.tabs, \"\"),\n });\n if (options.bannerHref !== undefined) {\n navigation = {\n ...navigation,\n bannerHref: mountConfiguredLink(\n options.bannerHref,\n options.basePath ?? \"\",\n options.extraRoutes ?? new Set<string>()\n ),\n };\n }\n }\n\n const navigationByVersion: Record<string, Record<string, Navigation>> = {};\n for (const { id } of options.versions?.archived ?? []) {\n navigationByVersion[id] = buildVersionNavigation(\n id,\n pages.filter((page) => page.version === id),\n options,\n diagnostics\n );\n }\n\n // Icon typos, duplicate labels, and hidden-page-in-sidebar are validated on\n // the built navigation. Missing-target detection needs the full route set\n // (incl. custom + generated pages), so it runs later in generateRuntime.\n diagnostics.push(\n ...validateNavIcons(navigation),\n ...validateNavStructure(navigation, currentPages)\n );\n // Checked once against every locale's pages, not per locale tree: a page\n // missing from one locale's sidebar is an untranslated page, not a typo.\n const sidebarItems = options.navigation.sidebar.items;\n if (sidebarItems) {\n const byRef = pagesByRef(\n currentPages,\n options.basePath ?? \"\",\n Boolean(i18n)\n );\n const extraRoutes = options.extraRoutes ?? new Set<string>();\n diagnostics.push(\n ...validateSidebarItems(\n sidebarItems,\n (route) => byRef.has(route) || extraRoutes.has(route)\n )\n );\n }\n\n return {\n diagnostics,\n navigation,\n navigationByLocale,\n navigationByVersion,\n pages,\n routes,\n };\n};\n",
|
|
13
14
|
"import { execFileSync } from \"node:child_process\";\nimport { realpathSync } from \"node:fs\";\n\nimport { normalize, relative } from \"pathe\";\n\nimport type { Diagnostic } from \"./types.ts\";\n\n/** Normalized form of the `lastModified` config. */\nexport interface ResolvedLastModified {\n enabled: boolean;\n source: \"git\" | \"frontmatter\";\n}\n\n/**\n * Env for git invocations, with the repo-locating GIT_* variables stripped. A\n * parent git process exports an absolute GIT_DIR (and friends) to its hooks —\n * husky pre-commit in a linked worktree, post-merge, CI wrappers — and an\n * inherited GIT_DIR overrides `-C` discovery, silently pointing every call at\n * the parent's repository instead of the project's.\n */\nconst GIT_LOCATION_VARS = new Set([\n \"GIT_COMMON_DIR\",\n \"GIT_DIR\",\n \"GIT_INDEX_FILE\",\n \"GIT_OBJECT_DIRECTORY\",\n \"GIT_PREFIX\",\n \"GIT_WORK_TREE\",\n]);\n\nconst gitEnv = (): NodeJS.ProcessEnv =>\n Object.fromEntries(\n Object.entries(process.env).filter(([key]) => !GIT_LOCATION_VARS.has(key))\n );\n\n/** Normalize the `lastModified` config (`false | \"git\" | \"frontmatter\"`) into `{ enabled, source }`. */\nexport const resolveLastModifiedConfig = (\n value: false | \"git\" | \"frontmatter\"\n): ResolvedLastModified =>\n value === false\n ? { enabled: false, source: \"git\" }\n : { enabled: true, source: value };\n\n/**\n * Parse `git log --format=%x00%cI --name-only` output into a map of\n * repo-root-relative path → most recent committer ISO date. Each commit emits a\n * NUL-prefixed date line followed by the paths it touched; since git logs\n * newest-first, the first date seen for a path wins. Blank lines are ignored.\n */\nexport const parseGitLog = (output: string): Map<string, string> => {\n const times = new Map<string, string>();\n let current: string | null = null;\n for (const line of output.split(\"\\n\")) {\n if (line.startsWith(\"\\0\")) {\n current = line.slice(1);\n } else if (line && current && !times.has(line)) {\n times.set(line, current);\n }\n }\n return times;\n};\n\n/**\n * `path` with every symlink resolved, the spelling git prints paths in: a\n * project opened through a link (`/tmp/site` on macOS, where `/tmp` links to\n * `/private/tmp`) gets `/private/tmp/site` from `rev-parse --show-toplevel`,\n * so the project's own spelling would compare as outside the repository and\n * every page would go undated. The native realpath also expands a Windows\n * 8.3 short name (`RUNNER~1`), which git does too. A path that doesn't exist\n * stays as written.\n */\nexport const realPath = (path: string): string => {\n try {\n return normalize(realpathSync.native(path));\n } catch {\n return path;\n }\n};\n\n/**\n * The toplevel of the repository containing `root`, or null when git is\n * unavailable or the project isn't a repo. Callers use it to decide which\n * content roots a `git log` pathspec can cover at all — a root outside the\n * repository would fail the log outright and can never yield dates.\n */\nexport const gitRepositoryRoot = (root: string): string | null => {\n try {\n return execFileSync(\n // oxlint-disable-next-line sonarjs/no-os-command-from-path -- git is a required dev-tool dependency resolved from PATH\n \"git\",\n [\"-C\", root, \"rev-parse\", \"--show-toplevel\"],\n // stderr silenced: outside a repository the probe fails by design.\n { encoding: \"utf-8\", env: gitEnv(), stdio: [\"ignore\", \"pipe\", \"ignore\"] }\n ).trim();\n } catch {\n return null;\n }\n};\n\n/**\n * Resolve each source file's last-modified date from git history, keyed by\n * absolute source path. Runs a single `git log` over the given content roots\n * (each local source's own root, which may diverge from `content.root`)\n * and maps repo-root-relative paths back to the given absolute paths\n * (monorepo-safe via `rev-parse --show-toplevel`). Returns an empty map if git\n * is unavailable or the project isn't a repo — the feature then simply shows\n * no dates.\n */\nexport const gitLastModifiedTimes = (\n root: string,\n contentRoots: string[],\n sourcePaths: string[],\n repositoryRoot?: string | null\n): Map<string, string> => {\n // Nothing to date, or nowhere bounded to look — either way, don't pay for a\n // git scan. Both guards matter: `git log -- ` with no pathspec logs the\n // entire repository, which is what an all-staged project produces (a staged\n // source contributes no content root, yet its entries can still carry a\n // `sourcePath`).\n if (sourcePaths.length === 0 || contentRoots.length === 0) {\n return new Map();\n }\n // The caller that bounded `contentRoots` already resolved the repo root;\n // reuse it rather than spawning `rev-parse` a second time per scan.\n const gitRoot =\n repositoryRoot === undefined ? gitRepositoryRoot(root) : repositoryRoot;\n if (gitRoot === null) {\n return new Map();\n }\n // Git names paths by their real location, so the pathspecs and the paths\n // read back against the log are compared in that spelling too (see\n // `realPath`).\n const top = realPath(gitRoot);\n try {\n const output = execFileSync(\n // oxlint-disable-next-line sonarjs/no-os-command-from-path -- git is a required dev-tool dependency resolved from PATH\n \"git\",\n [\n \"-C\",\n root,\n \"-c\",\n \"core.quotePath=false\",\n \"log\",\n \"--format=%x00%cI\",\n \"--name-only\",\n \"--\",\n ...contentRoots.map(realPath),\n ],\n { encoding: \"utf-8\", env: gitEnv(), maxBuffer: 256 * 1024 * 1024 }\n );\n const byRepoPath = parseGitLog(output);\n const result = new Map<string, string>();\n for (const sourcePath of sourcePaths) {\n const iso = byRepoPath.get(relative(top, realPath(sourcePath)));\n if (iso) {\n result.set(sourcePath, iso);\n }\n }\n return result;\n } catch {\n return new Map();\n }\n};\n\n/**\n * Whether the repository containing `root` is a shallow clone. Returns false\n * when git is unavailable or the project isn't a repo — those cases already\n * yield no dates at all, and the shallow warning would only mislead.\n */\nexport const isShallowGitRepository = (root: string): boolean => {\n try {\n return (\n execFileSync(\n // oxlint-disable-next-line sonarjs/no-os-command-from-path -- git is a required dev-tool dependency resolved from PATH\n \"git\",\n [\"-C\", root, \"rev-parse\", \"--is-shallow-repository\"],\n // stderr silenced: outside a repository the probe fails by design.\n {\n encoding: \"utf-8\",\n env: gitEnv(),\n stdio: [\"ignore\", \"pipe\", \"ignore\"],\n }\n ).trim() === \"true\"\n );\n } catch {\n return false;\n }\n};\n\n/**\n * A warning for git-derived dates silently missing because the build ran in a\n * shallow clone — the default on Vercel and `actions/checkout`, where `git log`\n * only sees the last few commits, so most pages get no date and the sitemap's\n * `<lastmod>` / \"Last updated\" stamps quietly disappear in production while\n * working locally. Empty when every page got a date or the clone isn't\n * shallow.\n */\nexport const lastModifiedShallowWarning = (\n root: string,\n undatedCount: number\n): Diagnostic[] => {\n if (undatedCount === 0 || !isShallowGitRepository(root)) {\n return [];\n }\n return [\n {\n code: \"BLUME_SHALLOW_GIT_HISTORY\",\n message: `lastModified is on, but this build runs in a shallow git clone, so ${undatedCount} page(s) have no git-derived date — their sitemap <lastmod> and \"Last updated\" stamps are omitted.`,\n severity: \"warning\",\n suggestion:\n \"Fetch full history in CI: set the VERCEL_DEEP_CLONE=true environment variable on Vercel, or fetch-depth: 0 for actions/checkout.\",\n },\n ];\n};\n",
|
|
14
15
|
"import { basename, dirname, relative } from \"pathe\";\nimport { glob, isDynamicPattern } from \"tinyglobby\";\n\nimport { diagnosticsFromZod } from \"./diagnostics.ts\";\nimport { createModuleLoader } from \"./load-module.ts\";\nimport { folderMetaSchema } from \"./schema.ts\";\nimport type { FolderMeta } from \"./schema.ts\";\nimport { trimChar } from \"./trim.ts\";\nimport type { Diagnostic } from \"./types.ts\";\n\nconst META_FILES = [\n \"**/meta.ts\",\n \"**/meta.js\",\n \"**/meta.mjs\",\n // Shared, locale-agnostic folder meta (applies to every locale).\n \"**/meta.$.ts\",\n \"**/meta.$.js\",\n \"**/meta.$.mjs\",\n];\n\n/**\n * A meta module's default export before validation: `folderMetaSchema` parses\n * it only after any factory is resolved, so it carries the loader's raw type.\n */\ntype MetaModuleExport = Awaited<\n ReturnType<ReturnType<typeof createModuleLoader>>\n>;\n\n/** A factory-style meta module default-exports a function returning the meta. */\nconst isMetaFactory = (\n mod: MetaModuleExport\n): mod is () => MetaModuleExport | Promise<MetaModuleExport> =>\n typeof mod === \"function\";\n\n/** Resolve a meta module's default export, calling it if it is a factory. */\nconst resolveMeta = async (mod: MetaModuleExport) =>\n isMetaFactory(mod) ? await mod() : mod;\n\n/** A filesystem content source to scan for folder meta: its on-disk root and\n * optional route prefix. The prefix is folded into every key so meta lines up\n * with the sidebar group path, which carries the same prefix. `include` and\n * `exclude` are the source's content globs, which scope the scan to the\n * folders the source reads. */\nexport interface FolderMetaSource {\n root: string;\n prefix?: string;\n include?: readonly string[];\n exclude?: readonly string[];\n}\n\n/**\n * The literal directory a glob starts from (`docs/**\\/*.md` → `docs`, `\"\"`\n * when it matches from the root): its leading segments up to the first one\n * with glob syntax, the file-name segment excluded.\n */\nconst globBase = (pattern: string): string => {\n const literal: string[] = [];\n for (const segment of pattern.split(\"/\").slice(0, -1)) {\n if (isDynamicPattern(segment)) {\n break;\n }\n if (segment !== \"\" && segment !== \".\") {\n literal.push(segment);\n }\n }\n return literal.join(\"/\");\n};\n\n/** Whether `dir` is `base`, or nested beneath or above it (`\"\"` is the root). */\nconst onPathOf = (dir: string, base: string): boolean =>\n dir === base ||\n base === \"\" ||\n dir === \"\" ||\n dir.startsWith(`${base}/`) ||\n base.startsWith(`${dir}/`);\n\n/**\n * Whether a meta file's directory can configure a sidebar group of the\n * source: it lies on the path of some `include` glob's base — the folders\n * that glob reads, or the ancestors whose groups hold them. Negated globs\n * only narrow what a source reads, so they never qualify a folder.\n */\nconst withinInclude = (\n dir: string,\n include: readonly string[] | undefined\n): boolean =>\n include === undefined ||\n include.some(\n (pattern) => !pattern.startsWith(\"!\") && onPathOf(dir, globBase(pattern))\n );\n\n/**\n * The folder-meta files a filesystem source contributes: `patterns` (every\n * meta module name, shared `meta.$.*` included, by default) under the source's\n * root, minus its `exclude` globs, dependencies, and build output, and only in\n * folders its `include` globs reach. `blume translate` finds the meta files it\n * translates through this too, so it covers exactly the ones the scan reads.\n */\nexport const findFolderMetaFiles = async (\n source: FolderMetaSource,\n patterns: readonly string[] = META_FILES\n): Promise<string[]> => {\n const found = await glob([...patterns], {\n absolute: true,\n cwd: source.root,\n // Never descend into dependencies or build output — relevant when the\n // root is the project root (e.g. a `.`-rooted or all-staged project).\n // The source's own `exclude` applies too: a `meta.ts` under an excluded\n // folder (`src/lib/meta.ts` beside `exclude: [\"src/**\"]`) is application\n // code, not folder meta, and importing it would fail.\n ignore: [\n ...(source.exclude ?? []),\n \"**/node_modules/**\",\n \"**/.blume/**\",\n \"**/dist/**\",\n ],\n onlyFiles: true,\n });\n return found.filter((file) =>\n withinInclude(relative(source.root, dirname(file)), source.include)\n );\n};\n\n/**\n * The folder-meta key for a directory. Mirrors the sidebar group path: the\n * source's route prefix (`docs`) followed by the directory relative to the\n * source root (`provider`) — so `docs/provider/meta.ts` under a `prefix: \"docs\"`\n * source keys to `docs/provider`, exactly the group path navigation builds.\n */\nconst metaKeyFor = (prefix: string | undefined, dir: string): string => {\n const clean = prefix ? trimChar(prefix, \"/\") : \"\";\n if (!clean) {\n return dir;\n }\n return dir ? `${clean}/${dir}` : clean;\n};\n\n/**\n * Discover `meta.{ts,js,mjs}` files across the given filesystem sources. Keys are\n * the source's route prefix joined with the directory relative to that source's\n * root (`\"\"`/the prefix itself for a source's root directory), so meta matches\n * the prefixed sidebar group path. A bare string is shorthand for a single,\n * unprefixed source (the default project layout). `meta.$.*` files are returned\n * in `shared` — folder meta that applies to that directory in every locale (a\n * locale-specific `meta.*` overrides it). Each file default-exports an object or\n * a (sync/async) function returning one.\n *\n * `localeDirs` names the top-level locale directories of a `dir`-parser i18n\n * project. Navigation looks locale meta up as `locale/<group path>` where the\n * group path starts with the source prefix, so a locale directory found at a\n * source root is hoisted in front of the prefix (`docs/fr/guides/meta.ts` keys\n * to `fr/docs/guides`, not `docs/fr/guides`).\n *\n * `versionDirs` names the archived-version snapshot directories, which sit\n * outermost on disk — a locale directory inside a snapshot is one level deeper.\n * Both are hoisted, version first (`v1.0/fr/guides/meta.ts` keys to\n * `v1.0/fr/<prefix>/guides`), matching navigation's version-aware meta prefix.\n */\nexport const discoverFolderMeta = async (\n sources: string | FolderMetaSource[],\n options: {\n localeDirs?: readonly string[];\n versionDirs?: readonly string[];\n } = {}\n): Promise<{\n meta: Map<string, FolderMeta>;\n shared: Map<string, FolderMeta>;\n diagnostics: Diagnostic[];\n}> => {\n const list: FolderMetaSource[] = Array.isArray(sources)\n ? sources\n : [{ root: sources }];\n // Locale folders match case-insensitively, like content does (`pt-br/` for\n // a configured `pt-BR`), and key under the configured casing, which is what\n // navigation looks meta up by.\n const localeDirs = new Map(\n (options.localeDirs ?? []).map((code) => [code.toLowerCase(), code])\n );\n const versionDirs = new Set(options.versionDirs);\n\n const load = createModuleLoader();\n const meta = new Map<string, FolderMeta>();\n const shared = new Map<string, FolderMeta>();\n const diagnostics: Diagnostic[] = [];\n\n // Scan every source under its own root so a source rooted outside\n // `content.root` still contributes its folder meta.\n const perSource = await Promise.all(\n list.map(async (source) => {\n const files = await findFolderMetaFiles(source);\n const loaded = await Promise.all(\n files.map(\n async (\n file\n ): Promise<\n | { ok: true; file: string; value: unknown }\n | { ok: false; file: string; error: Error }\n > => {\n try {\n return {\n file,\n ok: true,\n value: await resolveMeta(await load(file)),\n };\n } catch (error) {\n // SAFETY: jiti surfaces load/evaluate failures as Error\n // instances, and only `message` is read downstream.\n return { error: error as Error, file, ok: false };\n }\n }\n )\n );\n return { loaded, source };\n })\n );\n\n for (const { loaded, source } of perSource) {\n for (const entry of loaded) {\n const dir = relative(source.root, dirname(entry.file));\n // A version snapshot dir is outermost, with a locale dir one level\n // deeper; both are hoisted in front of the (prefixed) group path, in\n // that order — the lookup key reads `version/locale/prefix/dir`.\n const [head, ...tail] = dir.split(\"/\");\n const version = head && versionDirs.has(head) ? head : \"\";\n const afterVersion = version ? tail : [head ?? \"\", ...tail];\n const [localeHead, ...localeTail] = afterVersion;\n const locale = localeHead\n ? (localeDirs.get(localeHead.toLowerCase()) ?? \"\")\n : \"\";\n const rest = (locale ? localeTail : afterVersion)\n .filter(Boolean)\n .join(\"/\");\n const key = [version, locale, metaKeyFor(source.prefix, rest)]\n .filter(Boolean)\n .join(\"/\");\n\n if (!entry.ok) {\n diagnostics.push({\n code: \"BLUME_META_LOAD_FAILED\",\n file: entry.file,\n message: `Could not load meta file: ${entry.error.message}`,\n severity: \"error\",\n });\n continue;\n }\n\n const result = folderMetaSchema.safeParse(entry.value);\n if (result.success) {\n const target = basename(entry.file).startsWith(\"meta.$.\")\n ? shared\n : meta;\n target.set(key, result.data);\n } else {\n diagnostics.push(\n ...diagnosticsFromZod(result.error, {\n code: \"BLUME_META_INVALID\",\n file: entry.file,\n })\n );\n }\n }\n }\n\n return { diagnostics, meta, shared };\n};\n",
|
|
15
16
|
"import { join } from \"pathe\";\n\nimport { blumeReferences } from \"../../openapi/references.ts\";\nimport { openApiSource } from \"../../openapi/source.ts\";\nimport type { ContentSourceAdapter } from \"../../sources/registry.ts\";\nimport type { ResolvedConfig } from \"../schema.ts\";\nimport { trimChar } from \"../trim.ts\";\nimport type { ProjectContext } from \"../types.ts\";\nimport { hashText } from \"./cache.ts\";\nimport { contentfulSource } from \"./contentful.ts\";\nimport { filesystemSource } from \"./filesystem.ts\";\nimport { githubReleasesSource } from \"./github-releases.ts\";\nimport { mdxRemoteSource } from \"./mdx-remote.ts\";\nimport { notionSource } from \"./notion.ts\";\nimport { obsidianSource } from \"./obsidian.ts\";\nimport { payloadSource } from \"./payload.ts\";\nimport { sanitySource } from \"./sanity.ts\";\nimport { strapiSource } from \"./strapi.ts\";\nimport type { ContentSource, SourceContext } from \"./types.ts\";\n\nexport {\n resolveDocsCollection,\n resolveSourceRoot,\n sourcesOfKind,\n} from \"./collection.ts\";\nexport type { DocsCollection } from \"./collection.ts\";\n\n/** Allocate a unique, stable source name from a base (prefix or kind). */\nconst uniqueNamer = (): ((base: string) => string) => {\n const used = new Set<string>();\n return (base) => {\n let name = base;\n let n = 2;\n while (used.has(name)) {\n name = `${base}-${n}`;\n n += 1;\n }\n used.add(name);\n return name;\n };\n};\n\n/** Runtime knobs for a scan: dev/build mode, preview, and cache refresh. */\nexport interface SourceRuntime {\n mode: \"dev\" | \"build\";\n preview?: boolean;\n refresh?: boolean;\n}\n\n/**\n * The directory under `.blume/cache/<source>/` a source keeps its snapshot in:\n * one per preview mode and set of adapter options. A preview snapshot holds\n * drafts, so a published load must never read it, neither as dev's cache-first\n * snapshot nor as a build's offline fallback; and a snapshot fetched with\n * another `query` or `fields` is another result, not a cached copy of this\n * one. `pollInterval` only paces dev re-fetches, so it is left out. A\n * `custom()` source is a live instance rather than options, so its snapshot\n * is keyed by preview mode alone.\n */\nexport const snapshotKey = (\n adapter: ContentSourceAdapter,\n runtime: SourceRuntime\n): string => {\n const mode = runtime.preview ? \"preview\" : \"published\";\n if (adapter.kind === \"custom\") {\n return mode;\n }\n const { pollInterval: _paced, ...fetched } = adapter.options;\n return `${mode}-${hashText(JSON.stringify(fetched))}`;\n};\n\nconst sourceContext = (\n context: ProjectContext,\n name: string,\n runtime: SourceRuntime,\n snapshot?: string\n): SourceContext => ({\n assetsBaseUrl: `/blume-assets/${name}`,\n assetsDir: join(context.outDir, \"public\", \"blume-assets\", name),\n cacheDir:\n snapshot === undefined\n ? join(context.outDir, \"cache\", name)\n : join(context.outDir, \"cache\", name, snapshot),\n mode: runtime.mode,\n preview: runtime.preview,\n projectRoot: context.root,\n refresh: runtime.refresh ?? runtime.mode === \"build\",\n});\n\n/**\n * The frontmatter keys each content type declares (`content.types[*].frontmatter`),\n * keyed by type — so a source that drops unknown keys keeps, per note, exactly\n * the ones `normalizeEntry` will accept for that note's type.\n */\nconst typeFrontmatterKeys = (\n config: ResolvedConfig\n): Record<string, string[]> =>\n Object.fromEntries(\n Object.entries(config.content.types).map(([type, def]) => [\n type,\n Object.keys(def.frontmatter),\n ])\n );\n\n/**\n * Instantiate the engine-side source for a descriptor. Each adapter's options\n * spread straight into its engine factory: the descriptor carries exactly the\n * fields the factory documents, plus the shared `prefix`/`pollInterval`.\n */\nconst buildSource = (\n adapter: ContentSourceAdapter,\n name: string,\n config: ResolvedConfig,\n context: ProjectContext,\n runtime: SourceRuntime\n): ContentSource => {\n const ctx = (): SourceContext =>\n sourceContext(context, name, runtime, snapshotKey(adapter, runtime));\n switch (adapter.kind) {\n case \"filesystem\": {\n const { pollInterval: _ignored, ...options } = adapter.options;\n return filesystemSource({ ...options, name, projectRoot: context.root });\n }\n case \"custom\": {\n // An instance built by one of Blume's engine factories rebuilds itself\n // on this scan's context, so `custom(sanitySource({…}))` reads drafts\n // under `--preview` and caches in the runtime directory like the\n // built-in adapter. Any other instance manages its own context and\n // caching. Either way its name is made unique across the project for\n // id namespacing.\n const source = adapter.options.withContext?.(ctx()) ?? adapter.options;\n return source.name === name ? source : { ...source, name };\n }\n case \"sanity\": {\n return sanitySource({ ...adapter.options, name }, ctx());\n }\n case \"notion\": {\n return notionSource({ ...adapter.options, name }, ctx());\n }\n case \"contentful\": {\n return contentfulSource({ ...adapter.options, name }, ctx());\n }\n case \"payload\": {\n return payloadSource({ ...adapter.options, name }, ctx());\n }\n case \"strapi\": {\n return strapiSource({ ...adapter.options, name }, ctx());\n }\n case \"obsidian\": {\n const { pollInterval: _ignored, ...options } = adapter.options;\n return obsidianSource(\n {\n ...options,\n defaultType: config.content.defaultType,\n frontmatterKeys: Object.keys(config.frontmatter.extend),\n i18n: config.i18n,\n name,\n typeFrontmatterKeys: typeFrontmatterKeys(config),\n versions: config.versions,\n },\n ctx()\n );\n }\n case \"github-releases\": {\n return githubReleasesSource(\n { ...adapter.options, name, site: config.deployment.options.site },\n ctx()\n );\n }\n default: {\n // Only `mdx-remote` is left, and TypeScript has narrowed `adapter` to it.\n // It returns after the switch rather than from a last case block: Bun\n // 1.4.0's line coverage never credits the closing brace of a switch's\n // final block, which would fail the 100% gate in CI.\n break;\n }\n }\n return mdxRemoteSource({ ...adapter.options, name }, ctx());\n};\n\n/** The base name to allocate for a descriptor (before deduplication). */\nconst baseName = (adapter: ContentSourceAdapter): string => {\n if (adapter.kind === \"custom\") {\n return adapter.options.name;\n }\n // The name is the prefix as a route spells it: `/guides` and `guides/`\n // route under `guides`, so the source's staged entry ids, cache directory,\n // and asset URLs must use `guides` too.\n return trimChar(adapter.options.prefix ?? \"\", \"/\") || adapter.kind;\n};\n\n/**\n * Build the ordered list of content sources for a project. The config schema\n * already desugared the zero-config shorthand into a single `filesystem()`\n * descriptor, so every project has at least one entry here. A Blume-rendered\n * OpenAPI reference contributes an internal staged source that lowers each\n * operation into a real content page (routing/nav/search/OG).\n */\nexport const resolveSources = (\n config: ResolvedConfig,\n context: ProjectContext,\n runtime: SourceRuntime\n): ContentSource[] => {\n const nameFor = uniqueNamer();\n const sources = config.content.sources.map((adapter) =>\n buildSource(adapter, nameFor(baseName(adapter)), config, context, runtime)\n );\n\n const references = blumeReferences(config);\n if (references.length > 0) {\n sources.push(\n openApiSource(references, sourceContext(context, \"openapi\", runtime))\n );\n }\n\n return sources;\n};\n",
|
|
16
|
-
"/**\n * The JSON a CMS API returns: arbitrary values a query or REST endpoint\n * hands back, typed as a closed union so a source narrows with predicates\n * instead of casting.\n */\nexport type JsonValue =\n | string\n | number\n | boolean\n | null\n | JsonValue[]\n | { [key: string]: JsonValue };\n\n/** A JSON object: a document, a node in a rich-text tree, an API envelope. */\nexport interface JsonObject {\n [key: string]: JsonValue;\n}\n\n/**\n * A node a dot path can descend into. Arrays pass too (matching their runtime\n * string-key indexing, e.g. `items.0`), so the predicate types them as the\n * keyed form both traverse through.\n */\nexport const isJsonObject = (\n value: JsonValue | undefined\n): value is JsonObject => typeof value === \"object\" && value !== null;\n\n/** Resolve a dot path (`slug.current`) against a document. */\nexport const getPath = (\n doc: JsonObject,\n path: string\n): JsonValue | undefined => {\n let current: JsonValue | undefined = doc;\n for (const key of path.split(\".\")) {\n if (isJsonObject(current)) {\n current = current[key];\n } else {\n return;\n }\n }\n return current;\n};\n\nexport const isStringValue = (value: JsonValue | undefined): value is string =>\n typeof value === \"string\";\n\nexport const asString = (value: JsonValue | undefined): string | undefined =>\n isStringValue(value) ? value : undefined;\n\n/** The elements of an array value, or none when the value is not an array. */\nexport const asArray = (value: JsonValue | undefined): JsonValue[] =>\n Array.isArray(value) ? value : [];\n\n/** The object form of a value, or none when it is a scalar, array, or absent. */\nexport const asObject = (\n value: JsonValue | undefined\n): JsonObject | undefined =>\n isJsonObject(value) && !Array.isArray(value) ? value : undefined;\n\nexport const isNumberValue = (value: JsonValue | undefined): value is number =>\n typeof value === \"number\";\n\nexport const asNumber = (value: JsonValue | undefined): number | undefined =>\n isNumberValue(value) ? value : undefined;\n\n/** The object elements of an array value; scalars and nested arrays are dropped. */\nexport const objectsIn = (value: JsonValue | undefined): JsonObject[] =>\n asArray(value).flatMap((item) => {\n const object = asObject(item);\n return object ? [object] : [];\n });\n",
|
|
17
17
|
"/**\n * Contentful rich text → Markdown. Covers the block, inline, and mark types\n * the Rich Text editor emits; embedded entries fall through to a serializer\n * keyed by content type or are noted in a comment. Links to assets and\n * entries arrive unresolved from the Delivery API (`data.target` is a\n * `sys` link), so the source hands in resolvers over the response's\n * `includes`; a document the SDK already resolved (with `fields` inline)\n * lowers the same way.\n */\nimport type { JsonObject } from \"./json.ts\";\nimport { asString, getPath, objectsIn } from \"./json.ts\";\nimport type { InlineMarks, InlinePart } from \"./lower.ts\";\nimport {\n absoluteUrl,\n blockquote,\n guardBlockStart,\n headingPrefix,\n image,\n joinBlocks,\n linkParts,\n listItem,\n markdownDocument,\n renderInline,\n unsupported,\n writesMdx,\n} from \"./lower.ts\";\n\n/** An asset's file as a Markdown image needs it. */\nexport interface ContentfulAsset {\n description?: string;\n title?: string;\n url: string;\n}\n\nexport interface ContentfulRichTextOptions {\n /** Resolve an asset link (`data.target.sys.id`) to its file. */\n resolveAsset?: (id: string) => ContentfulAsset | null;\n /** Resolve an entry link to the entry (`sys` plus `fields`). */\n resolveEntry?: (id: string) => JsonObject | null;\n /**\n * Serializers for embedded entries, keyed by content type id; return\n * Markdown or MDX. Setting any writes the source's entries as MDX.\n */\n serializers?: Record<string, (entry: JsonObject) => string>;\n}\n\nconst HEADING = /^heading-(?<level>[1-6])$/u;\nconst CELL_PIPE = /\\|/gu;\nconst CELL_BREAK = /\\n+/gu;\n\n/** The file behind an asset entry, or null when it carries none. */\nexport const assetFromEntry = (asset: JsonObject): ContentfulAsset | null => {\n const url = asString(getPath(asset, \"fields.file.url\"));\n if (!url) {\n return null;\n }\n return {\n description: asString(getPath(asset, \"fields.description\")),\n title: asString(getPath(asset, \"fields.title\")),\n url: absoluteUrl(url),\n };\n};\n\nconst children = (node: JsonObject): JsonObject[] => objectsIn(node.content);\n\nconst marksOf = (node: JsonObject): InlineMarks => {\n const marks: InlineMarks = {};\n for (const mark of objectsIn(node.marks)) {\n switch (asString(mark.type)) {\n case \"bold\": {\n marks.bold = true;\n break;\n }\n case \"italic\": {\n marks.italic = true;\n break;\n }\n case \"code\": {\n marks.code = true;\n break;\n }\n case \"strikethrough\": {\n marks.strike = true;\n break;\n }\n default:\n }\n }\n return marks;\n};\n\n/**\n * The linked object a node points at: inline when the document was resolved\n * (`data.target.fields`), else through the resolver by `data.target.sys.id`.\n */\nconst linkedTarget = (\n node: JsonObject,\n resolve?: (id: string) => JsonObject | null\n): JsonObject | null => {\n const target = getPath(node, \"data.target\");\n if (getPath(node, \"data.target.fields\") !== undefined) {\n // SAFETY: `data.target.fields` resolved through the object, so `target`\n // is that object.\n return target as JsonObject;\n }\n const id = asString(getPath(node, \"data.target.sys.id\"));\n return id ? (resolve?.(id) ?? null) : null;\n};\n\nconst linkedAsset = (\n node: JsonObject,\n options: ContentfulRichTextOptions\n): ContentfulAsset | null => {\n if (getPath(node, \"data.target.fields\") !== undefined) {\n const inline = linkedTarget(node);\n return inline ? assetFromEntry(inline) : null;\n }\n const id = asString(getPath(node, \"data.target.sys.id\"));\n return id ? (options.resolveAsset?.(id) ?? null) : null;\n};\n\nconst embeddedEntry = (\n node: JsonObject,\n options: ContentfulRichTextOptions\n): string => {\n const entry = linkedTarget(node, options.resolveEntry);\n const contentType = entry\n ? asString(getPath(entry, \"sys.contentType.sys.id\"))\n : undefined;\n const serializer = contentType\n ? options.serializers?.[contentType]\n : undefined;\n if (entry && serializer) {\n return serializer(entry);\n }\n return unsupported(\n `Contentful embedded entry${contentType ? `: ${contentType}` : \"\"}`,\n writesMdx(options.serializers)\n );\n};\n\nconst inlineParts = (\n nodes: JsonObject[],\n options: ContentfulRichTextOptions\n): InlinePart[] =>\n // oxlint-disable-next-line no-use-before-define -- mutual recursion: a link's label is itself inline content\n nodes.flatMap((node) => inlineNodeParts(node, options));\n\nconst inlineNodeParts = (\n node: JsonObject,\n options: ContentfulRichTextOptions\n): InlinePart[] => {\n switch (asString(node.nodeType)) {\n case \"text\": {\n return [{ marks: marksOf(node), text: asString(node.value) ?? \"\" }];\n }\n case \"hyperlink\": {\n return linkParts(\n inlineParts(children(node), options),\n asString(getPath(node, \"data.uri\"))\n );\n }\n case \"asset-hyperlink\": {\n return linkParts(\n inlineParts(children(node), options),\n linkedAsset(node, options)?.url\n );\n }\n case \"embedded-entry-inline\": {\n return [{ markdown: embeddedEntry(node, options) }];\n }\n default: {\n // entry-hyperlink (no route to point at) and anything unknown: the label.\n return inlineParts(children(node), options);\n }\n }\n};\n\n/** A block's inline children as Markdown, guarded as one block. */\nconst blockText = (\n node: JsonObject,\n options: ContentfulRichTextOptions\n): string =>\n guardBlockStart(renderInline(inlineParts(children(node), options)));\n\nconst renderList = (\n items: JsonObject[],\n marker: (index: number) => string,\n options: ContentfulRichTextOptions\n): string =>\n items\n .map((item, index) =>\n listItem(\n marker(index),\n // A single newline between an item's paragraph and its nested list\n // keeps the list tight.\n children(item)\n // oxlint-disable-next-line no-use-before-define -- mutual recursion: an item holds blocks, including nested lists\n .map((child) => renderBlock(child, options))\n .filter((block) => block !== \"\")\n .join(\"\\n\")\n )\n )\n .join(\"\\n\");\n\n// Each of a cell's paragraphs is a block as much as a page's is, so it goes\n// through the same guard: two struck runs in one still meet as `~~~~`.\nconst cellText = (\n cell: JsonObject,\n options: ContentfulRichTextOptions\n): string =>\n children(cell)\n .map((paragraph) => blockText(paragraph, options))\n .join(\" \")\n .replaceAll(CELL_BREAK, \" \")\n .replaceAll(CELL_PIPE, String.raw`\\|`);\n\nconst tableRow = (cells: string[]): string => `| ${cells.join(\" | \")} |`;\n\nconst renderTable = (\n node: JsonObject,\n options: ContentfulRichTextOptions\n): string => {\n const rows = children(node).map((row) =>\n children(row).map((cell) => cellText(cell, options))\n );\n const [head, ...body] = rows;\n if (!head) {\n return \"\";\n }\n return [\n tableRow(head),\n tableRow(head.map(() => \"---\")),\n ...body.map((cells) => tableRow(cells)),\n ].join(\"\\n\");\n};\n\nconst renderBlock = (\n node: JsonObject,\n options: ContentfulRichTextOptions\n): string => {\n const type = asString(node.nodeType) ?? \"\";\n const heading = HEADING.exec(type)?.groups?.level;\n if (heading) {\n return `${headingPrefix(Number(heading))}${blockText(node, options)}`;\n }\n switch (type) {\n case \"paragraph\": {\n return blockText(node, options);\n }\n case \"blockquote\": {\n return blockquote(\n joinBlocks(children(node).map((child) => renderBlock(child, options)))\n );\n }\n case \"unordered-list\": {\n return renderList(children(node), () => \"-\", options);\n }\n case \"ordered-list\": {\n return renderList(children(node), (index) => `${index + 1}.`, options);\n }\n case \"hr\": {\n return \"---\";\n }\n case \"embedded-asset-block\": {\n const asset = linkedAsset(node, options);\n // Contentful's own rich-text renderer uses the description as alt text\n // and the title only as a fallback.\n return asset\n ? image(asset.description ?? asset.title ?? \"\", asset.url)\n : \"\";\n }\n case \"embedded-entry-block\": {\n return embeddedEntry(node, options);\n }\n case \"table\": {\n return renderTable(node, options);\n }\n default: {\n return unsupported(\n `Contentful node: ${type}`,\n writesMdx(options.serializers)\n );\n }\n }\n};\n\n/** Serialize a rich text document (`nodeType: \"document\"`) to Markdown. */\nexport const contentfulRichTextToMarkdown = (\n doc: JsonObject,\n options: ContentfulRichTextOptions = {}\n): string =>\n markdownDocument(children(doc).map((node) => renderBlock(node, options)));\n",
|
|
18
18
|
"import { join } from \"pathe\";\n\nimport matter from \"../frontmatter.ts\";\nimport { neutralizeUnsafeLinks } from \"../safe-links.ts\";\nimport {\n hashText,\n loadWithCache,\n pollingWatch,\n snapshotCache,\n} from \"./cache.ts\";\nimport type { JsonObject, JsonValue } from \"./json.ts\";\nimport { asString, getPath, isStringValue } from \"./json.ts\";\nimport { slugify, slugifyPath } from \"./normalize.ts\";\nimport type {\n ContentSource,\n SourceContext,\n SourceEntry,\n SourceLoadResult,\n} from \"./types.ts\";\n\n/** What every REST-backed CMS source needs to be a staged, cached source. */\nexport interface RemoteSourceOptions {\n /**\n * Throw a `BlumeError` when the source cannot load as configured. Runs\n * before the cache is consulted: thrown from `fetchEntries` instead, a\n * misconfiguration would be served over by a stale snapshot with only an\n * offline warning.\n */\n assertConfigured?: () => void;\n /** Pull every entry from the API; called on refresh and on each poll. */\n fetchEntries: () => Promise<SourceEntry[]>;\n name: string;\n /** Opt-in dev polling interval (seconds); omit to freeze for the session. */\n pollInterval?: number;\n prefix?: string;\n /** The adapter rebuilt on another context (`ContentSource.withContext`). */\n withContext?: (ctx: SourceContext) => ContentSource;\n}\n\n/**\n * The staged-source scaffolding a CMS adapter shares: a snapshot cache under\n * `.blume/cache/<source>/` (or a name-derived dir when constructed directly\n * as a custom source, without a context), cache-first dev loads, offline\n * fallback, `read()` for raw export, and an opt-in polling `watch`.\n */\nexport const remoteSource = (\n options: RemoteSourceOptions,\n ctx?: SourceContext\n): ContentSource => {\n const cache = snapshotCache(\n ctx?.cacheDir ?? join(\".blume\", \"cache\", options.name)\n );\n let snapshot = new Map<string, SourceEntry>();\n\n const load = async (\n refresh = ctx?.refresh ?? true\n ): Promise<SourceLoadResult> => {\n options.assertConfigured?.();\n const result = await loadWithCache(\n options.name,\n cache,\n options.fetchEntries,\n refresh\n );\n snapshot = new Map(result.entries.map((entry) => [entry.ref, entry]));\n return result;\n };\n\n const read = async (ref: string): Promise<string> => {\n const cached = snapshot.get(ref);\n if (cached) {\n return cached.raw ?? cached.body.text;\n }\n const all = await cache.read();\n return all.find((entry) => entry.ref === ref)?.raw ?? \"\";\n };\n\n return {\n load,\n name: options.name,\n prefix: options.prefix,\n read,\n staged: true,\n watch: options.pollInterval\n ? pollingWatch(\n () => load(true),\n options.pollInterval,\n () => load()\n )\n : undefined,\n withContext: options.withContext,\n };\n};\n\n/** The frontmatter a CMS document maps to. */\nexport interface RemoteFrontmatter {\n description?: string;\n draft?: boolean;\n title?: string;\n}\n\n/**\n * A staged entry: Markdown body plus the frontmatter it was mapped from,\n * written as `.mdx` when the body carries serializer output (see\n * `writesMdx`).\n */\nexport const stagedEntry = (\n slug: string,\n data: RemoteFrontmatter,\n markdown: string,\n lastModified: string | undefined,\n format: \"md\" | \"mdx\" = \"md\"\n): SourceEntry => {\n const raw = matter.stringify(markdown, data);\n return {\n body: { format, text: markdown },\n // Spread into a fresh literal: `SourceEntry.data` wants an\n // index-signature type, which the named interface lacks.\n data: { ...data },\n hash: hashText(raw),\n lastModified,\n raw,\n ref: `${slug}.${format}`,\n };\n};\n\n/** How a source calls its CMS: the API's auth headers and an injectable fetch. */\nexport interface RestClient {\n /** Injected for tests; defaults to the global `fetch`. */\n fetchImpl?: typeof fetch;\n headers?: Record<string, string>;\n}\n\n/**\n * How long one CMS request may take before the source gives up on it. A\n * stalled CMS would otherwise hold `scanProject()` — and every `blume dev`\n * rescan — indefinitely, and the cache fallback can only kick in once the\n * request rejects.\n */\nexport const REMOTE_TIMEOUT_MS = 30_000;\n\n/**\n * GET a JSON endpoint. A non-2xx response is an error naming the status, so\n * the source's cache fallback reports why (`401 Unauthorized`) instead of a\n * parse failure on an error body; a request past {@link REMOTE_TIMEOUT_MS}\n * rejects with a `TimeoutError`.\n */\nexport const fetchJson = async (\n url: string,\n client: RestClient\n): Promise<JsonValue> => {\n const doFetch = client.fetchImpl ?? globalThis.fetch;\n const res = await doFetch(url, {\n headers: { accept: \"application/json\", ...client.headers },\n signal: AbortSignal.timeout(REMOTE_TIMEOUT_MS),\n });\n if (!res.ok) {\n throw new Error(`${url} responded ${res.status} ${res.statusText}`.trim());\n }\n // SAFETY: the endpoint answered 2xx with a JSON body; whatever shape it\n // holds is narrowed by the caller's predicates before use.\n return (await res.json()) as JsonValue;\n};\n\n/** A query string from the fixed params plus a user's extra ones. */\nexport const queryString = (\n params: Record<string, string | undefined>\n): string => {\n const search = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined) {\n search.set(key, value);\n }\n }\n return search.toString();\n};\n\n/** Field paths mapping a CMS document onto Blume meta + body. */\nexport interface RemoteFieldMap {\n /** Field holding the renderable body (rich text, or a Markdown string). */\n body?: string;\n /** Field holding the page description. */\n description?: string;\n /** Field holding the last-modified ISO date. */\n lastModified?: string;\n /** Field holding the route slug. */\n slug?: string;\n /** Field holding the page title. */\n title?: string;\n}\n\n/**\n * Map a document to a staged entry. The slug falls back to the document's id\n * when the slug field is missing or slugifies to nothing (pure punctuation),\n * so distinct documents never collapse onto one `untitled.md`; a slashed\n * slug keeps its segments. A string body is Markdown and passes through as\n * `.md`, its unsafe links reduced to their labels; any other shape goes to\n * the CMS's lowerer, and is written as `.mdx`\n * when `lowersToMdx` (the source has serializers, see `writesMdx`).\n */\nexport const documentEntry = (\n doc: JsonObject,\n fields: Required<RemoteFieldMap>,\n id: string,\n lower: (body: JsonValue) => string,\n draft = false,\n lowersToMdx = false\n): SourceEntry => {\n const slugValue = asString(getPath(doc, fields.slug)) ?? id;\n const slug = slugifyPath(slugValue) || slugify(id) || \"untitled\";\n const data: RemoteFrontmatter = {};\n const title = asString(getPath(doc, fields.title));\n const description = asString(getPath(doc, fields.description));\n if (title) {\n data.title = title;\n }\n if (description) {\n data.description = description;\n }\n if (draft) {\n data.draft = true;\n }\n const body = getPath(doc, fields.body);\n let markdown = \"\";\n let format: \"md\" | \"mdx\" = \"md\";\n if (isStringValue(body)) {\n // The CMS's Markdown is its editors', not the site author's: a link whose\n // destination isn't a web, mail, or relative address (`javascript:`)\n // keeps only its label, as release notes do (see `safe-links.ts`).\n markdown = neutralizeUnsafeLinks(`${body.trimEnd()}\\n`);\n } else if (body !== undefined) {\n markdown = lower(body);\n format = lowersToMdx ? \"mdx\" : \"md\";\n }\n return stagedEntry(\n slug,\n data,\n markdown,\n asString(getPath(doc, fields.lastModified)),\n format\n );\n};\n",
|
|
19
19
|
"import { BlumeError } from \"../diagnostics.ts\";\nimport {\n assetFromEntry,\n contentfulRichTextToMarkdown,\n} from \"./contentful-rich-text.ts\";\nimport type { JsonObject } from \"./json.ts\";\nimport {\n asNumber,\n asObject,\n asString,\n getPath,\n isJsonObject,\n objectsIn,\n} from \"./json.ts\";\nimport { writesMdx } from \"./lower.ts\";\nimport type { RemoteFieldMap, RestClient } from \"./remote.ts\";\nimport {\n documentEntry,\n fetchJson,\n queryString,\n remoteSource,\n} from \"./remote.ts\";\nimport type { ContentSource, SourceContext, SourceEntry } from \"./types.ts\";\n\nexport interface ContentfulSourceOptions {\n name: string;\n prefix?: string;\n /** Space id. */\n space: string;\n /** Environment id; default `master`. */\n environment?: string;\n /** The content type id whose entries become pages. */\n contentType: string;\n /** Locale code to fetch; omit for the space's default locale. */\n locale?: string;\n /**\n * Field ids mapping an entry onto Blume meta + body. Paths resolve against\n * the entry's `fields`, with `sys` reachable as `sys.<key>`. Defaults:\n * `title`, `description`, `slug`, `body`, `sys.updatedAt`.\n */\n fields?: RemoteFieldMap;\n /** Extra query parameters for the entries request (`fields.section: \"sdk\"`). */\n params?: Record<string, string>;\n /** Serializers for embedded entries, keyed by content type id. */\n serializers?: Record<string, (entry: JsonObject) => string>;\n /** Delivery API token; defaults to `CONTENTFUL_ACCESS_TOKEN`. */\n token?: string;\n /** Preview API token for `--preview`; defaults to `CONTENTFUL_PREVIEW_TOKEN`. */\n previewToken?: string;\n /** Opt-in dev polling interval (seconds); omit to freeze for the session. */\n pollInterval?: number;\n /** Injected for tests; defaults to the global `fetch`. */\n fetchImpl?: typeof fetch;\n}\n\nconst DELIVERY_HOST = \"https://cdn.contentful.com\";\nconst PREVIEW_HOST = \"https://preview.contentful.com\";\nconst PAGE_SIZE = 100;\n\nconst DEFAULT_FIELDS: Required<RemoteFieldMap> = {\n body: \"body\",\n description: \"description\",\n lastModified: \"sys.updatedAt\",\n slug: \"slug\",\n title: \"title\",\n};\n\n/** The included objects of a page, keyed by `sys.id`. */\nconst byId = (objects: JsonObject[]): Map<string, JsonObject> =>\n new Map(\n objects.map((object) => [asString(getPath(object, \"sys.id\")) ?? \"\", object])\n );\n\n/**\n * Contentful content source. Pages through the Delivery API (the Preview API\n * under `--preview`), maps each entry's fields to frontmatter, and lowers its\n * rich text body to Markdown with the page's `includes` resolving asset and\n * entry links.\n */\nexport const contentfulSource = (\n options: ContentfulSourceOptions,\n ctx?: SourceContext\n): ContentSource => {\n const fields = { ...DEFAULT_FIELDS, ...options.fields };\n\n const toEntry = (\n item: JsonObject,\n assets: Map<string, JsonObject>,\n linked: Map<string, JsonObject>\n ): SourceEntry => {\n const sys = asObject(item.sys) ?? {};\n const id = asString(sys.id) ?? \"\";\n // Field paths resolve against the entry's fields, with `sys` beside them.\n const view: JsonObject = { ...asObject(item.fields), sys };\n return documentEntry(\n view,\n fields,\n id,\n (body) =>\n isJsonObject(body)\n ? contentfulRichTextToMarkdown(body, {\n resolveAsset: (assetId) => {\n const asset = assets.get(assetId);\n return asset ? assetFromEntry(asset) : null;\n },\n resolveEntry: (entryId) => linked.get(entryId) ?? null,\n serializers: options.serializers,\n })\n : \"\",\n false,\n writesMdx(options.serializers)\n );\n };\n\n const preview = ctx?.preview ?? false;\n const previewToken = (): string | undefined =>\n options.previewToken ?? process.env.CONTENTFUL_PREVIEW_TOKEN;\n\n // The Preview API rejects delivery tokens, so falling back to one would\n // only trade a clear config error for a 401. Checked before the cache, so\n // a warm snapshot can't stand in for the drafts `--preview` asked for.\n const assertConfigured = (): void => {\n if (preview && !previewToken()) {\n throw new BlumeError({\n code: \"BLUME_SOURCE_MISCONFIGURED\",\n message: `Source \"${options.name}\": Contentful --preview needs a Preview API token.`,\n severity: \"error\",\n suggestion:\n \"Set previewToken on contentfulSource, or the CONTENTFUL_PREVIEW_TOKEN environment variable.\",\n });\n }\n };\n\n const fetchEntries = async (): Promise<SourceEntry[]> => {\n const token = preview\n ? previewToken()\n : (options.token ?? process.env.CONTENTFUL_ACCESS_TOKEN);\n const client: RestClient = {\n fetchImpl: options.fetchImpl,\n headers: token ? { authorization: `Bearer ${token}` } : {},\n };\n const host = preview ? PREVIEW_HOST : DELIVERY_HOST;\n const base = `${host}/spaces/${options.space}/environments/${options.environment ?? \"master\"}/entries`;\n const entries: SourceEntry[] = [];\n let skip = 0;\n let more = true;\n while (more) {\n // The user's params go first so the paging controls always win — a\n // `params` key that shadowed them would refetch the same page forever.\n const query = queryString({\n ...options.params,\n content_type: options.contentType,\n include: \"2\",\n limit: String(PAGE_SIZE),\n locale: options.locale,\n skip: String(skip),\n });\n // oxlint-disable-next-line no-await-in-loop -- pages are sequential: each response says whether another exists.\n const page = asObject(await fetchJson(`${base}?${query}`, client));\n if (!page) {\n throw new Error(\"Contentful returned a non-object response\");\n }\n const assets = byId(objectsIn(getPath(page, \"includes.Asset\")));\n const linked = byId(objectsIn(getPath(page, \"includes.Entry\")));\n const items = objectsIn(page.items);\n for (const item of items) {\n entries.push(toEntry(item, assets, linked));\n }\n skip += items.length;\n more = items.length > 0 && skip < (asNumber(page.total) ?? 0);\n }\n return entries;\n };\n\n return remoteSource(\n {\n assertConfigured,\n fetchEntries,\n name: options.name,\n pollInterval: options.pollInterval,\n prefix: options.prefix,\n withContext: (next) => contentfulSource(options, next),\n },\n ctx\n );\n};\n",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"/**\n * Strapi's Rich text (Blocks) field → Markdown. Covers every block the\n * editor emits: paragraphs, headings, lists (nested), quotes, code, images,\n * and links with the text modifiers.\n */\nimport type { JsonObject, JsonValue } from \"./json.ts\";\nimport { asNumber, asObject, asString, objectsIn } from \"./json.ts\";\nimport type { InlinePart } from \"./lower.ts\";\nimport {\n absoluteUrl,\n blockquote,\n codeFence,\n guardBlockStart,\n headingPrefix,\n image,\n linkParts,\n listItem,\n markdownDocument,\n renderInline,\n unsupported,\n} from \"./lower.ts\";\n\nexport interface StrapiBlocksOptions {\n /** The Strapi origin a relative upload URL (`/uploads/x.png`) resolves against. */\n baseUrl?: string;\n}\n\nconst children = (node: JsonObject): JsonObject[] => objectsIn(node.children);\n\nconst typeOf = (node: JsonObject): string => asString(node.type) ?? \"\";\n\nconst inlineParts = (nodes: JsonObject[]): InlinePart[] =>\n // oxlint-disable-next-line no-use-before-define -- mutual recursion: a link's label is itself inline content\n nodes.flatMap((node) => inlineNodeParts(node));\n\nconst inlineNodeParts = (node: JsonObject): InlinePart[] => {\n switch (typeOf(node)) {\n case \"text\": {\n return [\n {\n marks: {\n bold: node.bold === true,\n code: node.code === true,\n italic: node.italic === true,\n strike: node.strikethrough === true,\n },\n text: asString(node.text) ?? \"\",\n },\n ];\n }\n case \"link\": {\n return linkParts(inlineParts(children(node)), asString(node.url));\n }\n default: {\n return inlineParts(children(node));\n }\n }\n};\n\n/** A text block's inline nodes, joined and guarded as one block. */\nconst blockText = (nodes: JsonObject[]): string =>\n guardBlockStart(renderInline(inlineParts(nodes)));\n\nconst renderList = (node: JsonObject): string => {\n const ordered = asString(node.format) === \"ordered\";\n return children(node)\n .map((item, index) => {\n const kids = children(item);\n const line = blockText(kids.filter((kid) => typeOf(kid) !== \"list\"));\n const sub = kids\n .filter((kid) => typeOf(kid) === \"list\")\n .map((list) => renderList(list))\n .join(\"\\n\");\n const body = sub ? `${line}\\n${sub}` : line;\n return listItem(ordered ? `${index + 1}.` : \"-\", body);\n })\n .join(\"\\n\");\n};\n\nconst renderImage = (\n node: JsonObject,\n options: StrapiBlocksOptions\n): string => {\n const file = asObject(node.image);\n const url = file ? asString(file.url) : undefined;\n if (!(file && url)) {\n return \"\";\n }\n return image(\n asString(file.alternativeText) ?? asString(file.name) ?? \"\",\n absoluteUrl(url, options.baseUrl)\n );\n};\n\nconst renderBlock = (\n node: JsonObject,\n options: StrapiBlocksOptions\n): string => {\n switch (typeOf(node)) {\n case \"paragraph\": {\n return blockText(children(node));\n }\n case \"heading\": {\n return `${headingPrefix(asNumber(node.level) ?? 1)}${blockText(children(node))}`;\n }\n case \"quote\": {\n return blockquote(blockText(children(node)));\n }\n case \"list\": {\n return renderList(node);\n }\n case \"code\": {\n // Code children are plain text nodes; their text is literal.\n const code = children(node)\n .map((child) => asString(child.text) ?? \"\")\n .join(\"\");\n return codeFence(code, asString(node.language) ?? \"\");\n }\n case \"image\": {\n return renderImage(node, options);\n }\n default: {\n return unsupported(`Strapi block: ${typeOf(node)}`);\n }\n }\n};\n\n/** Serialize a Blocks field value (an array of block nodes) to Markdown. */\nexport const strapiBlocksToMarkdown = (\n blocks: JsonValue,\n options: StrapiBlocksOptions = {}\n): string =>\n markdownDocument(objectsIn(blocks).map((node) => renderBlock(node, options)));\n",
|
|
31
31
|
"import type { JsonObject } from \"./json.ts\";\nimport { asNumber, asObject, asString, getPath, objectsIn } from \"./json.ts\";\nimport type { RemoteFieldMap, RestClient } from \"./remote.ts\";\nimport {\n documentEntry,\n fetchJson,\n queryString,\n remoteSource,\n} from \"./remote.ts\";\nimport { strapiBlocksToMarkdown } from \"./strapi-blocks.ts\";\nimport type { ContentSource, SourceContext, SourceEntry } from \"./types.ts\";\n\nexport interface StrapiSourceOptions {\n name: string;\n prefix?: string;\n /** The Strapi origin (`https://cms.acme.dev`); its REST API is at `/api`. */\n url: string;\n /** The content type's plural API id (`articles`). */\n contentType: string;\n /** Locale code to fetch, for a localized content type. */\n locale?: string;\n /** The `populate` parameter; default `*`, which fills media and relations. */\n populate?: string;\n /**\n * Field paths mapping an entry onto Blume meta + body. Defaults:\n * `title`, `description`, `slug`, `content`, `updatedAt`.\n */\n fields?: RemoteFieldMap;\n /** Extra query parameters for the request (`filters[...]`, `sort`). */\n params?: Record<string, string>;\n /** API token; defaults to `STRAPI_API_TOKEN`. */\n token?: string;\n /** Opt-in dev polling interval (seconds); omit to freeze for the session. */\n pollInterval?: number;\n /** Injected for tests; defaults to the global `fetch`. */\n fetchImpl?: typeof fetch;\n}\n\nconst PAGE_SIZE = 100;\n\nconst DEFAULT_FIELDS: Required<RemoteFieldMap> = {\n body: \"content\",\n description: \"description\",\n lastModified: \"updatedAt\",\n slug: \"slug\",\n title: \"title\",\n};\n\n/**\n * The entry as a flat document. Strapi 5 returns fields at the top level\n * beside `documentId`; Strapi 4 wraps them in `attributes` under a numeric\n * `id`, and that envelope is flattened so the same field paths apply.\n */\nconst flatten = (item: JsonObject): JsonObject => {\n const attributes = asObject(item.attributes);\n return attributes ? { ...attributes, id: item.id ?? null } : item;\n};\n\nconst idOf = (doc: JsonObject): string => {\n const raw = doc.documentId ?? doc.id;\n return asString(raw) ?? String(asNumber(raw) ?? \"\");\n};\n\n/** Every entry one query returns, across its pages, flattened. */\ninterface StrapiListing {\n docs: JsonObject[];\n /** Whether any entry came in Strapi 4's `attributes` envelope. */\n v4: boolean;\n}\n\n/** Strapi 4 marks an unpublished entry with a null `publishedAt`. */\nconst unpublished = (doc: JsonObject): boolean => doc.publishedAt === null;\n\n/**\n * Strapi content source. Pages through a content type's REST endpoint, maps\n * each entry's fields to frontmatter, and lowers its Blocks body to\n * Markdown. Published entries only, unless `--preview` asks for drafts.\n */\nexport const strapiSource = (\n options: StrapiSourceOptions,\n ctx?: SourceContext\n): ContentSource => {\n const fields = { ...DEFAULT_FIELDS, ...options.fields };\n const origin = options.url.replace(/\\/+$/u, \"\");\n\n const fetchEntries = async (): Promise<SourceEntry[]> => {\n const token = options.token ?? process.env.STRAPI_API_TOKEN;\n const client: RestClient = {\n fetchImpl: options.fetchImpl,\n headers: token ? { authorization: `Bearer ${token}` } : {},\n };\n const base = `${origin}/api/${options.contentType}`;\n\n const list = async (\n publication: Record<string, string>\n ): Promise<StrapiListing> => {\n const listing: StrapiListing = { docs: [], v4: false };\n let page = 1;\n let more = true;\n while (more) {\n // The user's params go first so the paging controls always win — a\n // `params` key that shadowed them would refetch the same page forever.\n const query = queryString({\n ...options.params,\n locale: options.locale,\n \"pagination[pageSize]\": String(PAGE_SIZE),\n \"pagination[page]\": String(page),\n populate: options.populate ?? \"*\",\n ...publication,\n });\n // oxlint-disable-next-line no-await-in-loop -- pages are sequential: each response says whether another exists.\n const result = asObject(await fetchJson(`${base}?${query}`, client));\n if (!result) {\n throw new Error(\"Strapi returned a non-object response\");\n }\n const items = objectsIn(result.data);\n for (const item of items) {\n listing.v4 ||= asObject(item.attributes) !== undefined;\n listing.docs.push(flatten(item));\n }\n const pageCount =\n asNumber(getPath(result, \"meta.pagination.pageCount\")) ?? 1;\n more = items.length > 0 && page < pageCount;\n page += 1;\n }\n return listing;\n };\n\n const toEntries = (\n docs: JsonObject[],\n isDraft: (doc: JsonObject) => boolean\n ): SourceEntry[] =>\n docs.map((doc) =>\n documentEntry(\n doc,\n fields,\n idOf(doc),\n (body) => strapiBlocksToMarkdown(body, { baseUrl: origin }),\n isDraft(doc)\n )\n );\n\n // The default publication state is the published one in both Strapi 4\n // and 5, and its response shape says which version is answering.\n const published = await list({});\n if (!ctx?.preview) {\n return toEntries(published.docs, () => false);\n }\n // Strapi 4 previews with `publicationState=preview`, which returns drafts\n // and published entries together, a draft's `publishedAt` being null.\n if (published.v4) {\n const previewed = await list({ publicationState: \"preview\" });\n return toEntries(previewed.docs, unpublished);\n }\n // Strapi 5 answers `status=draft` with the draft version of every\n // document, `publishedAt` null even when a published version exists, so a\n // document is a draft only when it has no published version.\n const drafts = await list({ status: \"draft\" });\n if (drafts.docs.length === 0 && published.docs.length === 0) {\n // Strapi 4 ignores `status`, so a Strapi 4 content type holding only\n // drafts reads as empty on both requests. Ask with its own parameter;\n // Strapi 5 either ignores it or rejects it (`strictParams`), and in\n // both cases has nothing more to return.\n const previewed = await list({ publicationState: \"preview\" }).catch(\n () => null\n );\n return previewed ? toEntries(previewed.docs, unpublished) : [];\n }\n const publishedIds = new Set(published.docs.map(idOf));\n const draftIds = new Set(drafts.docs.map(idOf));\n // A published document with no draft version (a content type without\n // Draft & Publish) still belongs in the preview.\n return [\n ...toEntries(drafts.docs, (doc) => !publishedIds.has(idOf(doc))),\n ...toEntries(\n published.docs.filter((doc) => !draftIds.has(idOf(doc))),\n () => false\n ),\n ];\n };\n\n return remoteSource(\n {\n fetchEntries,\n name: options.name,\n pollInterval: options.pollInterval,\n prefix: options.prefix,\n withContext: (next) => strapiSource(options, next),\n },\n ctx\n );\n};\n"
|
|
32
32
|
],
|
|
33
|
-
"mappings": "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",
|
|
34
|
-
"debugId": "
|
|
33
|
+
"mappings": "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",
|
|
34
|
+
"debugId": "89E5C13A316C75D864756E2164756E21",
|
|
35
35
|
"names": []
|
|
36
36
|
}
|