blume 2.1.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +94 -0
- package/dist/cli/{chunk-5cg2rzgf.js → chunk-073rdvgb.js} +19 -48
- package/dist/cli/{chunk-5cg2rzgf.js.map → chunk-073rdvgb.js.map} +4 -5
- package/dist/cli/{chunk-ga0pf4aj.js → chunk-0n9xkp3d.js} +12 -3
- package/dist/cli/{chunk-ga0pf4aj.js.map → chunk-0n9xkp3d.js.map} +3 -3
- package/dist/cli/chunk-150jk7km.js +52 -0
- package/dist/cli/chunk-150jk7km.js.map +10 -0
- package/dist/cli/{chunk-rekqz4qg.js → chunk-313vnn40.js} +16 -15
- package/dist/cli/chunk-313vnn40.js.map +10 -0
- package/dist/cli/{chunk-gp84za0h.js → chunk-3v3ffbrj.js} +2 -2
- package/dist/cli/{chunk-9xr4dgee.js → chunk-3x6x3pph.js} +29 -16
- package/dist/cli/chunk-3x6x3pph.js.map +10 -0
- package/dist/cli/{chunk-0gz36akr.js → chunk-42t4jxdx.js} +21 -5
- package/dist/cli/chunk-42t4jxdx.js.map +12 -0
- package/dist/cli/{chunk-ta27feev.js → chunk-54ztw1nj.js} +21 -2
- package/dist/cli/chunk-54ztw1nj.js.map +10 -0
- package/dist/cli/{chunk-jnwj5kjj.js → chunk-5vjtgs6e.js} +20 -7
- package/dist/cli/{chunk-jnwj5kjj.js.map → chunk-5vjtgs6e.js.map} +3 -3
- package/dist/cli/chunk-66w9j7p6.js +322 -0
- package/dist/cli/chunk-66w9j7p6.js.map +14 -0
- package/dist/cli/{chunk-nd1821sk.js → chunk-7ppf1rva.js} +32 -18
- package/dist/cli/chunk-7ppf1rva.js.map +10 -0
- package/dist/cli/{chunk-p804f3pe.js → chunk-8y2kmjv8.js} +6 -6
- package/dist/cli/{chunk-2f7n4qzt.js → chunk-c1y538kd.js} +1 -1
- package/dist/cli/{chunk-1n228xqb.js → chunk-c887fj0s.js} +2 -2
- package/dist/cli/{chunk-y5h4r2y0.js → chunk-cfyg47zg.js} +15 -5
- package/dist/cli/chunk-cfyg47zg.js.map +10 -0
- package/dist/cli/{chunk-cmtcnh9f.js → chunk-dzwehpy7.js} +2 -2
- package/dist/cli/{chunk-h2a48yhd.js → chunk-e6atmn4h.js} +119 -15
- package/dist/cli/{chunk-h2a48yhd.js.map → chunk-e6atmn4h.js.map} +10 -10
- package/dist/cli/{chunk-5ffywsmb.js → chunk-e8xw9qkh.js} +8 -6
- package/dist/cli/{chunk-5ffywsmb.js.map → chunk-e8xw9qkh.js.map} +3 -3
- package/dist/cli/{chunk-ntv4qrt7.js → chunk-e9q7a2ak.js} +14 -14
- package/dist/cli/{chunk-xkz5xbtv.js → chunk-ehweg4fr.js} +2366 -1114
- package/dist/cli/chunk-ehweg4fr.js.map +218 -0
- package/dist/cli/{chunk-zf748avv.js → chunk-ep6nd0rn.js} +176 -281
- package/dist/cli/{chunk-zf748avv.js.map → chunk-ep6nd0rn.js.map} +11 -12
- package/dist/cli/{chunk-yxmk4pec.js → chunk-fdrkhpjy.js} +16 -15
- package/dist/cli/{chunk-yxmk4pec.js.map → chunk-fdrkhpjy.js.map} +3 -3
- package/dist/cli/{chunk-5wj2qwn2.js → chunk-ft9vfys6.js} +4 -4
- package/dist/cli/{chunk-4h8z9vv5.js → chunk-gb420vvz.js} +89 -46
- package/dist/cli/chunk-gb420vvz.js.map +17 -0
- package/dist/cli/{chunk-713mngdq.js → chunk-hebn0tpx.js} +76 -10
- package/dist/cli/chunk-hebn0tpx.js.map +14 -0
- package/dist/cli/{chunk-2n4ps1b3.js → chunk-htrwgabr.js} +40 -22
- package/dist/cli/chunk-htrwgabr.js.map +15 -0
- package/dist/cli/{chunk-zhvd6adm.js → chunk-hx3xqnk9.js} +13 -13
- package/dist/cli/chunk-j134vrp2.js +65 -0
- package/dist/cli/chunk-j134vrp2.js.map +10 -0
- package/dist/cli/{chunk-y4ykbark.js → chunk-kma9f6sf.js} +2 -2
- package/dist/cli/{chunk-py62fewh.js → chunk-mrcccgnh.js} +3 -3
- package/dist/cli/{chunk-2f3ndkpw.js → chunk-n0v7m8ry.js} +3 -3
- package/dist/cli/{chunk-43zcf4gz.js → chunk-ncj7w596.js} +522 -353
- package/dist/cli/chunk-ncj7w596.js.map +35 -0
- package/dist/cli/{chunk-9geymqns.js → chunk-nq1d20w2.js} +14 -14
- package/dist/cli/{chunk-g2z9x01v.js → chunk-nrns10mj.js} +3 -3
- package/dist/cli/{chunk-e7vvk5ya.js → chunk-sds923fa.js} +3 -3
- package/dist/cli/{chunk-cy5bm0j0.js → chunk-t2m5j4pr.js} +2 -2
- package/dist/cli/{chunk-cy5bm0j0.js.map → chunk-t2m5j4pr.js.map} +1 -1
- package/dist/cli/{chunk-yj17vs39.js → chunk-tdqhyxfz.js} +5 -5
- package/dist/cli/{chunk-q3wxxq39.js → chunk-tphac74f.js} +5 -5
- package/dist/cli/{chunk-6bm0xpgd.js → chunk-w1r4vase.js} +2 -2
- package/dist/cli/index.js +24 -19
- package/dist/cli/index.js.map +3 -3
- package/dist/types/ai/ask-context.d.ts +6 -2
- package/dist/types/ai/component-markdown.d.ts +2 -0
- package/dist/types/ai/openapi-components.d.ts +4 -1
- package/dist/types/astro/integration.d.ts +5 -4
- package/dist/types/astro/markdown-negotiation.d.ts +3 -0
- package/dist/types/astro/pages.d.ts +10 -0
- package/dist/types/cli/init/scaffold.d.ts +1 -1
- package/dist/types/components/content/api-field.d.ts +4 -1
- package/dist/types/components/content/api-page.d.ts +6 -1
- package/dist/types/components/openapi/code-samples.d.ts +29 -0
- package/dist/types/components/openapi/helpers.d.ts +22 -1
- package/dist/types/components/openapi/security.d.ts +10 -0
- package/dist/types/components/openapi/snippets.d.ts +60 -0
- package/dist/types/core/changelog-index.d.ts +8 -0
- package/dist/types/core/config-input.d.ts +30 -3
- package/dist/types/core/data.d.ts +4 -0
- package/dist/types/core/i18n-ui.d.ts +2 -0
- package/dist/types/core/links.d.ts +8 -0
- package/dist/types/core/probe.d.ts +2 -0
- package/dist/types/core/project-graph.d.ts +6 -0
- package/dist/types/core/redirect-patterns.d.ts +11 -3
- package/dist/types/core/schema.d.ts +119 -0
- package/dist/types/core/sources/cache.d.ts +3 -0
- package/dist/types/core/sources/contentful-rich-text.d.ts +11 -2
- package/dist/types/core/sources/contentful.d.ts +17 -1
- package/dist/types/core/sources/lexical.d.ts +5 -0
- package/dist/types/core/sources/normalize.d.ts +20 -1
- package/dist/types/core/sources/remote.d.ts +37 -10
- package/dist/types/core/sources/sanity.d.ts +1 -1
- package/dist/types/core/types.d.ts +17 -0
- package/dist/types/deploy/adapter-output.d.ts +2 -1
- package/dist/types/deploy/adapters/cloudflare.d.ts +7 -5
- package/dist/types/deploy/adapters/node.d.ts +58 -23
- package/dist/types/deploy/adapters/registry.d.ts +10 -0
- package/dist/types/deploy/adapters/types.d.ts +3 -2
- package/dist/types/deploy/platforms/cloudflare.d.ts +10 -7
- package/dist/types/deploy/platforms/node.d.ts +3 -1
- package/dist/types/deploy/platforms/types.d.ts +18 -7
- package/dist/types/deploy/platforms/vercel.d.ts +20 -1
- package/dist/types/deploy/redirects.d.ts +17 -1
- package/dist/types/deploy/sitemap.d.ts +2 -1
- package/dist/types/deploy/vercel-negotiation.d.ts +42 -21
- package/dist/types/openapi/checks.d.ts +27 -0
- package/dist/types/openapi/graphql.d.ts +6 -0
- package/dist/types/openapi/model.d.ts +15 -4
- package/dist/types/openapi/parse.d.ts +3 -0
- package/dist/types/openapi/references.d.ts +16 -0
- package/dist/types/ratelimit/index.d.ts +1 -1
- package/dist/types/ratelimit/schema.d.ts +8 -0
- package/dist/types/ratelimit/upstash.d.ts +39 -14
- package/dist/types/reference/graphql.d.ts +76 -1
- package/dist/types/reference/index.d.ts +1 -1
- package/dist/types/reference/openapi.d.ts +2 -2
- package/dist/types/reference/options.d.ts +37 -1
- package/dist/types/reference/schema.d.ts +84 -0
- package/dist/types/search/adapters/registry.d.ts +3 -0
- package/dist/types/search/adapters/typesense.d.ts +14 -4
- package/dist/types/search/build.d.ts +3 -1
- package/dist/types/search/orama-index.d.ts +9 -9
- package/dist/types/search/sync/algolia.d.ts +5 -2
- package/dist/types/search/sync/index.d.ts +3 -1
- package/dist/types/search/sync/typesense.d.ts +11 -7
- package/dist/types/sources/contentful.d.ts +16 -0
- package/dist/types/sources/github-releases.d.ts +8 -1
- package/dist/types/sources/payload.d.ts +2 -0
- package/dist/types/sources/registry.d.ts +54 -0
- package/dist/types/sources/shared.d.ts +3 -0
- package/dist/types/sources/strapi.d.ts +2 -0
- package/docs/01-quickstart.mdx +4 -2
- package/docs/02-deployment.mdx +31 -13
- package/docs/advanced/changelog.mdx +11 -0
- package/docs/advanced/skills.mdx +1 -1
- package/docs/cli/audit.mdx +30 -7
- package/docs/cli/doctor.mdx +5 -1
- package/docs/cli/evals.mdx +4 -4
- package/docs/cli/translate.mdx +1 -0
- package/docs/cli/validate.mdx +4 -3
- package/docs/configuration/analytics.mdx +1 -1
- package/docs/configuration/assistant.mdx +6 -2
- package/docs/configuration/customization.mdx +4 -2
- package/docs/configuration/export.mdx +5 -3
- package/docs/configuration/index.mdx +3 -2
- package/docs/configuration/rate-limiting.mdx +23 -2
- package/docs/configuration/search.mdx +37 -14
- package/docs/content/components.mdx +2 -2
- package/docs/content/frontmatter.mdx +5 -3
- package/docs/content/i18n.mdx +2 -2
- package/docs/content/includes.mdx +1 -1
- package/docs/content/navigation.mdx +4 -4
- package/docs/content/sources/contentful.mdx +7 -4
- package/docs/content/sources/custom.mdx +7 -3
- package/docs/content/sources/github-releases.mdx +10 -2
- package/docs/content/sources/index.mdx +3 -3
- package/docs/content/sources/notion.mdx +1 -1
- package/docs/content/sources/obsidian.mdx +1 -1
- package/docs/content/sources/payload.mdx +3 -2
- package/docs/content/sources/remote-mdx.mdx +4 -0
- package/docs/content/sources/sanity.mdx +2 -2
- package/docs/content/sources/strapi.mdx +3 -2
- package/docs/content/syntax.mdx +2 -2
- package/docs/discoverability/agent-discovery.mdx +1 -1
- package/docs/discoverability/index.mdx +1 -1
- package/docs/discoverability/json-api.mdx +2 -0
- package/docs/discoverability/llms-txt.mdx +1 -1
- package/docs/discoverability/markdown.mdx +3 -1
- package/docs/discoverability/mcp.mdx +4 -0
- package/docs/discoverability/sitemap-and-robots.mdx +1 -1
- package/docs/references/api-pages.mdx +1 -1
- package/docs/references/asyncapi.mdx +3 -1
- package/docs/references/graphql.mdx +13 -1
- package/docs/references/openapi.mdx +50 -8
- package/package.json +9 -9
- package/skills/blume-migrate/SKILL.md +1 -1
- package/skills/blume-migrate/references/docusaurus.md +4 -4
- package/skills/blume-migrate/references/fumadocs.md +17 -13
- package/skills/blume-migrate/references/nextra.md +8 -5
- package/skills/blume-migrate/references/starlight.md +9 -7
- package/src/ai/ask-context.ts +33 -3
- package/src/ai/ask-limits.ts +13 -0
- package/src/ai/changelog-markdown.ts +11 -6
- package/src/ai/component-markdown.ts +1 -1
- package/src/ai/cors.ts +12 -3
- package/src/ai/mcp/query.ts +14 -6
- package/src/ai/openapi-components.ts +28 -4
- package/src/ai/relative-links.ts +4 -38
- package/src/astro/generate.ts +78 -48
- package/src/astro/integration.ts +16 -13
- package/src/astro/markdown-negotiation.ts +3 -0
- package/src/astro/module-types.ts +3 -1
- package/src/astro/pages.ts +23 -0
- package/src/astro/templates.ts +125 -80
- package/src/audit/catalog.ts +19 -3
- package/src/audit/checks/links.ts +14 -1
- package/src/audit/checks/network.ts +110 -6
- package/src/audit/checks/redirects.ts +6 -4
- package/src/audit/checks/robots.ts +58 -2
- package/src/audit/run.ts +3 -0
- package/src/audit/types.ts +2 -0
- package/src/audit/url.ts +14 -5
- package/src/blume-modules.d.ts +5 -1
- package/src/cli/args.ts +51 -0
- package/src/cli/build-failure.ts +23 -0
- package/src/cli/commands/audit.ts +10 -1
- package/src/cli/commands/dev.ts +18 -2
- package/src/cli/commands/doctor.ts +45 -12
- package/src/cli/commands/eval.ts +36 -4
- package/src/cli/commands/init.ts +6 -4
- package/src/cli/commands/validate.ts +10 -1
- package/src/cli/init/scaffold.ts +3 -3
- package/src/cli/prepare.ts +6 -3
- package/src/cli/required-secrets.ts +1 -1
- package/src/components/content/ApiPlayground.astro +6 -2
- package/src/components/content/api-field.ts +4 -1
- package/src/components/content/api-page.ts +31 -7
- package/src/components/content/mermaid-element.ts +15 -1
- package/src/components/islands/hooks.ts +27 -1
- package/src/components/layout/PageActions.astro +139 -24
- package/src/components/layout/RootLayout.astro +10 -2
- package/src/components/layout/Search.astro +17 -3
- package/src/components/layout/TableOfContents.astro +24 -17
- package/src/components/layout/head-scripts.ts +6 -1
- package/src/components/layout/search/algolia.ts +10 -1
- package/src/components/layout/search/analytics.ts +42 -14
- package/src/components/layout/search/endpoint.ts +48 -5
- package/src/components/layout/search/pagefind.ts +114 -5
- package/src/components/layout/search/types.ts +12 -0
- package/src/components/layout/search/typesense.ts +18 -6
- package/src/components/openapi/AsyncApiOperation.astro +14 -7
- package/src/components/openapi/Authorization.astro +10 -0
- package/src/components/openapi/GraphqlOperation.astro +5 -0
- package/src/components/openapi/Operation.astro +24 -1
- package/src/components/openapi/ParametersTable.astro +8 -4
- package/src/components/openapi/Playground.astro +7 -1
- package/src/components/openapi/RequestBody.astro +19 -2
- package/src/components/openapi/Responses.astro +1 -0
- package/src/components/openapi/SchemaTable.astro +15 -3
- package/src/components/openapi/async-snippets.ts +61 -5
- package/src/components/openapi/async.ts +123 -29
- package/src/components/openapi/graphql-helpers.ts +35 -12
- package/src/components/openapi/helpers.ts +36 -2
- package/src/components/openapi/message-model.ts +54 -11
- package/src/components/openapi/message.ts +14 -4
- package/src/components/openapi/operation-model.ts +16 -7
- package/src/components/openapi/playground-client.ts +24 -5
- package/src/components/openapi/playground-schema.ts +1 -1
- package/src/components/openapi/schema-tree.ts +44 -14
- package/src/components/openapi/security.ts +10 -0
- package/src/components/openapi/snippets.ts +5 -3
- package/src/components/openapi/validate-json.ts +4 -3
- package/src/core/changelog-index.ts +31 -1
- package/src/core/component-diagnostics.ts +53 -0
- package/src/core/component-overrides.ts +32 -0
- package/src/core/config-input.ts +31 -3
- package/src/core/data.ts +2 -0
- package/src/core/diagnostics.ts +5 -0
- package/src/core/i18n-ui.ts +2 -0
- package/src/core/includes.ts +1 -1
- package/src/core/links.ts +47 -17
- package/src/core/probe.ts +26 -6
- package/src/core/project-graph.ts +59 -18
- package/src/core/redirect-patterns.ts +36 -7
- package/src/core/schema.ts +21 -2
- package/src/core/sources/cache.ts +6 -0
- package/src/core/sources/contentful-rich-text.ts +29 -6
- package/src/core/sources/contentful.ts +135 -25
- package/src/core/sources/filesystem.ts +26 -4
- package/src/core/sources/github-releases.ts +12 -1
- package/src/core/sources/lexical.ts +15 -10
- package/src/core/sources/mdx-remote.ts +62 -10
- package/src/core/sources/normalize.ts +227 -41
- package/src/core/sources/notion.ts +7 -1
- package/src/core/sources/obsidian.ts +16 -3
- package/src/core/sources/payload.ts +38 -15
- package/src/core/sources/remote.ts +72 -15
- package/src/core/sources/resolve.ts +11 -1
- package/src/core/sources/sanity.ts +43 -25
- package/src/core/sources/strapi.ts +2 -2
- package/src/core/types.ts +18 -0
- package/src/core/ui-packs/ar.ts +1 -0
- package/src/core/ui-packs/bg.ts +1 -0
- package/src/core/ui-packs/bn.ts +1 -0
- package/src/core/ui-packs/ca.ts +1 -0
- package/src/core/ui-packs/cs.ts +1 -0
- package/src/core/ui-packs/da.ts +1 -0
- package/src/core/ui-packs/de.ts +1 -0
- package/src/core/ui-packs/el.ts +1 -0
- package/src/core/ui-packs/es.ts +1 -0
- package/src/core/ui-packs/fa.ts +1 -0
- package/src/core/ui-packs/fi.ts +1 -0
- package/src/core/ui-packs/fr.ts +1 -0
- package/src/core/ui-packs/he.ts +1 -0
- package/src/core/ui-packs/hi.ts +1 -0
- package/src/core/ui-packs/hr.ts +1 -0
- package/src/core/ui-packs/hu.ts +1 -0
- package/src/core/ui-packs/id.ts +1 -0
- package/src/core/ui-packs/it.ts +1 -0
- package/src/core/ui-packs/ja.ts +1 -0
- package/src/core/ui-packs/ko.ts +1 -0
- package/src/core/ui-packs/nl.ts +1 -0
- package/src/core/ui-packs/no.ts +1 -0
- package/src/core/ui-packs/pl.ts +1 -0
- package/src/core/ui-packs/pt-br.ts +1 -0
- package/src/core/ui-packs/pt.ts +1 -0
- package/src/core/ui-packs/ro.ts +1 -0
- package/src/core/ui-packs/ru.ts +1 -0
- package/src/core/ui-packs/sk.ts +1 -0
- package/src/core/ui-packs/sr.ts +1 -0
- package/src/core/ui-packs/sv.ts +1 -0
- package/src/core/ui-packs/th.ts +1 -0
- package/src/core/ui-packs/tr.ts +1 -0
- package/src/core/ui-packs/uk.ts +1 -0
- package/src/core/ui-packs/vi.ts +1 -0
- package/src/core/ui-packs/zh-tw.ts +1 -0
- package/src/core/ui-packs/zh.ts +1 -0
- package/src/deploy/adapter-output.ts +7 -2
- package/src/deploy/adapters/cloudflare.ts +7 -5
- package/src/deploy/adapters/node.ts +47 -9
- package/src/deploy/adapters/types.ts +7 -3
- package/src/deploy/artifacts.ts +2 -1
- package/src/deploy/platforms/cloudflare.ts +13 -9
- package/src/deploy/platforms/netlify.ts +2 -1
- package/src/deploy/platforms/node.ts +12 -2
- package/src/deploy/platforms/types.ts +21 -7
- package/src/deploy/platforms/vercel.ts +113 -16
- package/src/deploy/redirects.ts +66 -6
- package/src/deploy/rss.ts +3 -1
- package/src/deploy/sitemap.ts +39 -5
- package/src/deploy/vercel-negotiation.ts +290 -102
- package/src/eval/agents.ts +18 -1
- package/src/eval/prompts.ts +6 -3
- package/src/eval/report.ts +34 -13
- package/src/eval/run.ts +5 -0
- package/src/markdown/relative-links.ts +3 -2
- package/src/openapi/checks.ts +273 -0
- package/src/openapi/graphql-build.ts +21 -0
- package/src/openapi/graphql.ts +11 -0
- package/src/openapi/model.ts +15 -3
- package/src/openapi/parse.ts +127 -2
- package/src/openapi/references.ts +43 -3
- package/src/openapi/source.ts +39 -14
- package/src/ratelimit/index.ts +1 -1
- package/src/ratelimit/runtime.ts +37 -19
- package/src/ratelimit/upstash.ts +40 -10
- package/src/reference/graphql.ts +15 -1
- package/src/reference/index.ts +1 -0
- package/src/reference/openapi.ts +2 -2
- package/src/reference/options.ts +29 -1
- package/src/registry/eject.ts +3 -1
- package/src/search/adapters/locale-scope.ts +30 -0
- package/src/search/adapters/typesense.ts +14 -4
- package/src/search/build.ts +21 -3
- package/src/search/orama-index.ts +163 -31
- package/src/search/source-pages.ts +29 -0
- package/src/search/sync/algolia.ts +99 -9
- package/src/search/sync/index.ts +52 -13
- package/src/search/sync/typesense.ts +72 -27
- package/src/sources/contentful.ts +12 -0
- package/src/sources/github-releases.ts +7 -1
- package/src/sources/shared.ts +3 -0
- package/src/theme/entry.ts +29 -3
- package/src/translate/validate.ts +23 -1
- package/dist/cli/chunk-0gz36akr.js.map +0 -12
- package/dist/cli/chunk-2n4ps1b3.js.map +0 -15
- package/dist/cli/chunk-43zcf4gz.js.map +0 -36
- package/dist/cli/chunk-4ejxbzee.js +0 -39
- package/dist/cli/chunk-4ejxbzee.js.map +0 -10
- package/dist/cli/chunk-4h8z9vv5.js.map +0 -16
- package/dist/cli/chunk-713mngdq.js.map +0 -14
- package/dist/cli/chunk-9xr4dgee.js.map +0 -10
- package/dist/cli/chunk-amrb6hgh.js +0 -145
- package/dist/cli/chunk-amrb6hgh.js.map +0 -11
- package/dist/cli/chunk-nd1821sk.js.map +0 -10
- package/dist/cli/chunk-rekqz4qg.js.map +0 -10
- package/dist/cli/chunk-ta27feev.js.map +0 -10
- package/dist/cli/chunk-xkz5xbtv.js.map +0 -213
- package/dist/cli/chunk-y5h4r2y0.js.map +0 -10
- /package/dist/cli/{chunk-gp84za0h.js.map → chunk-3v3ffbrj.js.map} +0 -0
- /package/dist/cli/{chunk-p804f3pe.js.map → chunk-8y2kmjv8.js.map} +0 -0
- /package/dist/cli/{chunk-2f7n4qzt.js.map → chunk-c1y538kd.js.map} +0 -0
- /package/dist/cli/{chunk-1n228xqb.js.map → chunk-c887fj0s.js.map} +0 -0
- /package/dist/cli/{chunk-cmtcnh9f.js.map → chunk-dzwehpy7.js.map} +0 -0
- /package/dist/cli/{chunk-ntv4qrt7.js.map → chunk-e9q7a2ak.js.map} +0 -0
- /package/dist/cli/{chunk-5wj2qwn2.js.map → chunk-ft9vfys6.js.map} +0 -0
- /package/dist/cli/{chunk-zhvd6adm.js.map → chunk-hx3xqnk9.js.map} +0 -0
- /package/dist/cli/{chunk-y4ykbark.js.map → chunk-kma9f6sf.js.map} +0 -0
- /package/dist/cli/{chunk-py62fewh.js.map → chunk-mrcccgnh.js.map} +0 -0
- /package/dist/cli/{chunk-2f3ndkpw.js.map → chunk-n0v7m8ry.js.map} +0 -0
- /package/dist/cli/{chunk-9geymqns.js.map → chunk-nq1d20w2.js.map} +0 -0
- /package/dist/cli/{chunk-g2z9x01v.js.map → chunk-nrns10mj.js.map} +0 -0
- /package/dist/cli/{chunk-e7vvk5ya.js.map → chunk-sds923fa.js.map} +0 -0
- /package/dist/cli/{chunk-yj17vs39.js.map → chunk-tdqhyxfz.js.map} +0 -0
- /package/dist/cli/{chunk-q3wxxq39.js.map → chunk-tphac74f.js.map} +0 -0
- /package/dist/cli/{chunk-6bm0xpgd.js.map → chunk-w1r4vase.js.map} +0 -0
|
@@ -15,6 +15,22 @@ var emptyComponentOverrides = () => ({
|
|
|
15
15
|
var GROUPS = ["mdx", "layout"];
|
|
16
16
|
var GROUP_SET = new Set(GROUPS);
|
|
17
17
|
var isGroup = (name) => GROUP_SET.has(name);
|
|
18
|
+
var LAYOUT_SLOTS = [
|
|
19
|
+
"Layout",
|
|
20
|
+
"Header",
|
|
21
|
+
"Logo",
|
|
22
|
+
"Search",
|
|
23
|
+
"Sidebar",
|
|
24
|
+
"MobileNav",
|
|
25
|
+
"Breadcrumbs",
|
|
26
|
+
"TableOfContents",
|
|
27
|
+
"Pagination",
|
|
28
|
+
"Feedback",
|
|
29
|
+
"PageHeader",
|
|
30
|
+
"PageFooter",
|
|
31
|
+
"Footer"
|
|
32
|
+
];
|
|
33
|
+
var LAYOUT_SLOT_SET = new Set(LAYOUT_SLOTS);
|
|
18
34
|
var ACCEPTED_OVERRIDE_FORMS = "Each override must be an imported identifier, a path string, or a `{ component, client, media }` object literal whose `component` is an imported identifier or a path string.";
|
|
19
35
|
var FRAMEWORK_BY_EXT = new Map([
|
|
20
36
|
["jsx", "react"],
|
|
@@ -295,6 +311,9 @@ var collectGroupOverrides = (property, context, result) => {
|
|
|
295
311
|
if (normalized) {
|
|
296
312
|
result[name].push(normalized);
|
|
297
313
|
}
|
|
314
|
+
if (name === "layout" && normalized && !LAYOUT_SLOT_SET.has(normalized.key)) {
|
|
315
|
+
context.warnings.push(`Layout override "${normalized.key}" isn't a layout slot, so nothing renders it. Use one of: ${LAYOUT_SLOTS.join(", ")}.`);
|
|
316
|
+
}
|
|
298
317
|
}
|
|
299
318
|
};
|
|
300
319
|
|
|
@@ -370,5 +389,5 @@ var analyzeComponentOverrides = (source, filePath) => {
|
|
|
370
389
|
|
|
371
390
|
export { emptyComponentOverrides, ComponentOverridesError, analyzeComponentOverrides };
|
|
372
391
|
|
|
373
|
-
//# debugId=
|
|
374
|
-
//# sourceMappingURL=chunk-
|
|
392
|
+
//# debugId=59653B23465A56F364756E2164756E21
|
|
393
|
+
//# sourceMappingURL=chunk-54ztw1nj.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/core/component-overrides.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import { existsSync } from \"node:fs\";\n\nimport { basename, dirname, extname, isAbsolute, join, resolve } from \"pathe\";\nimport ts from \"typescript\";\n\nimport { BlumeError } from \"./diagnostics.ts\";\nimport type { HydrationMode } from \"./schema.ts\";\nimport type { Diagnostic } from \"./types.ts\";\n\n/**\n * Static analysis of a user `components.ts`/`.tsx`.\n *\n * Astro can only hydrate a component it imports *statically by path*, so to honor\n * hydration on overrides Blume needs each override's source path and client mode\n * at generate time — before Vite compiles anything. We read that here by parsing\n * the file with the TypeScript compiler API (never executing it, so `.astro`/React\n * imports don't need a Node loader).\n *\n * Only statically-analyzable authoring is accepted: a default export that is an\n * object literal or a `defineComponents({ ... })` call, whose `mdx`/`layout`\n * groups are object literals with entries that are imported identifiers, path\n * strings, or `{ component, client, media }` object literals, and a relative\n * or absolute path must name a file that exists. Anything else is a config\n * error ({@link ComponentOverridesError}, `BLUME_COMPONENTS_INVALID`) naming the\n * entry, its line, and the accepted forms — there is no runtime fallback, so an\n * override that can't be planned never silently renders without hydration, and\n * a missing file never surfaces as a bundler error inside the generated runtime.\n */\n\nexport type OverrideFramework = \"react\" | \"svelte\" | \"vue\";\n\n/** How a wrapper should import an override's component. */\nexport interface OverrideImport {\n /** Framework inferred from the file extension, or null (e.g. `.astro`). */\n framework: OverrideFramework | null;\n /** Exported name to import: `\"default\"` or a named export. */\n name: string;\n /** Absolute path (for relative/absolute specifiers) or a bare specifier. */\n path: string;\n}\n\n/** A normalized override entry, keyed by its MDX tag / layout-slot name. */\nexport interface NormalizedOverride {\n /** Present when the override should hydrate; drives the `client:*` directive. */\n client?: HydrationMode;\n key: string;\n /** Media query for `client: \"media\"`. */\n media?: string;\n /** How to obtain the component. */\n source: OverrideImport;\n}\n\nexport interface ComponentOverrideAnalysis {\n layout: NormalizedOverride[];\n mdx: NormalizedOverride[];\n warnings: string[];\n}\n\n/** The analysis of a project with no `components.ts`. */\nexport const emptyComponentOverrides = (): ComponentOverrideAnalysis => ({\n layout: [],\n mdx: [],\n warnings: [],\n});\n\nconst GROUPS = [\"mdx\", \"layout\"] as const;\nconst GROUP_SET = new Set<string>(GROUPS);\ntype Group = (typeof GROUPS)[number];\n\nconst isGroup = (name: string): name is Group => GROUP_SET.has(name);\n\n/**\n * The `layout` keys the built-in chrome reads (`RootLayout.astro` and\n * `Header.astro`). Any other key is never rendered, so it's warned about\n * rather than silently dropped; a typo or wrong case would otherwise leave\n * the built-in in place with no sign why.\n */\nconst LAYOUT_SLOTS = [\n \"Layout\",\n \"Header\",\n \"Logo\",\n \"Search\",\n \"Sidebar\",\n \"MobileNav\",\n \"Breadcrumbs\",\n \"TableOfContents\",\n \"Pagination\",\n \"Feedback\",\n \"PageHeader\",\n \"PageFooter\",\n \"Footer\",\n];\nconst LAYOUT_SLOT_SET: ReadonlySet<string> = new Set(LAYOUT_SLOTS);\n\n/** The authoring forms an override accepts; the fix every rejection points at. */\nexport const ACCEPTED_OVERRIDE_FORMS =\n \"Each override must be an imported identifier, a path string, or a `{ component, client, media }` object literal whose `component` is an imported identifier or a path string.\";\n\nconst FRAMEWORK_BY_EXT = new Map<string, OverrideFramework>([\n [\"jsx\", \"react\"],\n [\"svelte\", \"svelte\"],\n [\"tsx\", \"react\"],\n [\"vue\", \"vue\"],\n]);\n\nconst FRAMEWORK_LABEL = {\n react: \"React\",\n svelte: \"Svelte\",\n vue: \"Vue\",\n} satisfies Record<OverrideFramework, string>;\n\n/** Extensions probed (in order) when a specifier omits one. */\nconst COMPONENT_EXTS = [\n \"astro\",\n \"tsx\",\n \"ts\",\n \"jsx\",\n \"js\",\n \"mjs\",\n \"vue\",\n \"svelte\",\n];\n\nconst HYDRATION_MODES: ReadonlySet<string> = new Set<HydrationMode>([\n \"idle\",\n \"load\",\n \"media\",\n \"only\",\n \"visible\",\n]);\n\nconst HYDRATION_MODE_LIST = '\"load\", \"idle\", \"visible\", \"media\", or \"only\"';\n\nconst isHydrationMode = (value: string): value is HydrationMode =>\n HYDRATION_MODES.has(value);\n\ninterface ImportBinding {\n /** Exported name: `\"default\"` or a named export. */\n imported: string;\n /** The import statement, where a missing file is reported. */\n node: ts.ImportDeclaration;\n specifier: string;\n}\n\n/** Why one entry was rejected, and the node it's about (for its line). */\ninterface Rejection {\n message: string;\n /** A path that names no file: the fix is the path, not the entry's form. */\n missingFile?: boolean;\n node?: ts.Node;\n}\n\n/** An override's declared component before framework/path resolution. */\ninterface RawDescriptor {\n client?: HydrationMode;\n media?: string;\n source: OverrideImport | null;\n}\n\n/** Everything one analysis pass needs to resolve and report an entry. */\ninterface AnalysisContext {\n dir: string;\n /** Rejections collected across the file; thrown together at the end. */\n errors: Rejection[];\n imports: Map<string, ImportBinding>;\n warnings: string[];\n}\n\nconst reject = (\n context: AnalysisContext,\n message: string,\n node?: ts.Node,\n missingFile?: boolean\n): void => {\n context.errors.push({ message, missingFile, node });\n};\n\nconst propName = (name: ts.PropertyName): string | undefined =>\n ts.isIdentifier(name) || ts.isStringLiteral(name) ? name.text : undefined;\n\n/** Record the bindings declared by one import statement into `map`. */\nconst addImportBindings = (\n map: Map<string, ImportBinding>,\n statement: ts.Statement\n): void => {\n if (\n !ts.isImportDeclaration(statement) ||\n !ts.isStringLiteral(statement.moduleSpecifier)\n ) {\n return;\n }\n const specifier = statement.moduleSpecifier.text;\n const clause = statement.importClause;\n if (!clause) {\n return;\n }\n if (clause.name) {\n map.set(clause.name.text, {\n imported: \"default\",\n node: statement,\n specifier,\n });\n }\n const named = clause.namedBindings;\n if (named && ts.isNamedImports(named)) {\n for (const element of named.elements) {\n map.set(element.name.text, {\n imported: (element.propertyName ?? element.name).text,\n node: statement,\n specifier,\n });\n }\n }\n};\n\n/** Map each local binding name to the module + exported name it came from. */\nconst collectImports = (\n sourceFile: ts.SourceFile\n): Map<string, ImportBinding> => {\n const map = new Map<string, ImportBinding>();\n for (const statement of sourceFile.statements) {\n addImportBindings(map, statement);\n }\n return map;\n};\n\n/** Unwrap `defineComponents({...})`, `({...})`, or `{...} as T` to the object. */\nconst unwrapObject = (\n expression: ts.Expression\n): ts.ObjectLiteralExpression | undefined => {\n if (ts.isObjectLiteralExpression(expression)) {\n return expression;\n }\n if (ts.isCallExpression(expression)) {\n const [arg] = expression.arguments;\n return arg && ts.isObjectLiteralExpression(arg) ? arg : undefined;\n }\n if (\n ts.isAsExpression(expression) ||\n ts.isParenthesizedExpression(expression)\n ) {\n return unwrapObject(expression.expression);\n }\n return undefined;\n};\n\nconst findDefaultExport = (\n sourceFile: ts.SourceFile\n): ts.ExportAssignment | undefined =>\n sourceFile.statements.find(\n (statement): statement is ts.ExportAssignment =>\n ts.isExportAssignment(statement) && !statement.isExportEquals\n );\n\nconst probeExtension = (base: string): string | null => {\n for (const extension of COMPONENT_EXTS) {\n const candidate = `${base}.${extension}`;\n if (existsSync(candidate)) {\n return candidate;\n }\n }\n return null;\n};\n\n// A `.js` specifier in a TypeScript file may name its `.ts`/`.tsx` source, as\n// Vite resolves it; the same holds for `.jsx` and `.mjs`.\nconst SCRIPT_EXT = /\\.(?:jsx?|mjs)$/u;\nconst TS_SOURCE_EXTS = [\"ts\", \"tsx\", \"mts\"];\n\n/**\n * Whether a local path names something the bundler can import: the file\n * itself, the file with a component extension added, a folder's `index`, or\n * the TypeScript source a `.js` specifier stands for.\n */\nconst resolvesLocally = (absolute: string): boolean => {\n if (existsSync(absolute) || probeExtension(absolute)) {\n return true;\n }\n if (probeExtension(join(absolute, \"index\"))) {\n return true;\n }\n const base = absolute.replace(SCRIPT_EXT, \"\");\n return (\n base !== absolute &&\n TS_SOURCE_EXTS.some((extension) => existsSync(`${base}.${extension}`))\n );\n};\n\n/** Resolve a module specifier to a wrapper-importable path + framework. */\nconst toImport = (\n specifier: string,\n imported: string,\n dir: string\n): OverrideImport => {\n const relative = specifier.startsWith(\".\") || isAbsolute(specifier);\n let path = specifier;\n let extension = extname(specifier).slice(1).toLowerCase();\n if (relative) {\n const absolute = isAbsolute(specifier)\n ? specifier\n : resolve(dir, specifier);\n if (extension) {\n path = absolute;\n } else {\n const probed = probeExtension(absolute);\n path = probed ?? absolute;\n extension = probed ? extname(probed).slice(1).toLowerCase() : \"\";\n }\n }\n return {\n framework: FRAMEWORK_BY_EXT.get(extension) ?? null,\n name: imported,\n path,\n };\n};\n\n/**\n * Resolve a specifier to its import, or record that the file it names doesn't\n * exist. A bare package specifier is left to the bundler.\n */\nconst sourceFor = (\n specifier: string,\n imported: string,\n label: string,\n node: ts.Node,\n context: AnalysisContext\n): OverrideImport | null => {\n const local = specifier.startsWith(\".\") || isAbsolute(specifier);\n if (local && !resolvesLocally(resolve(context.dir, specifier))) {\n reject(\n context,\n `${label} points at \"${specifier}\", but no file exists there; fix the path or restore the file.`,\n node,\n true\n );\n return null;\n }\n return toImport(specifier, imported, context.dir);\n};\n\n/**\n * Resolve an identifier to the import it names, or record why it can't be: a\n * local binding (a `const`, a function declared in the file) has no source path\n * a wrapper could import.\n */\nconst resolveIdentifier = (\n name: string,\n label: string,\n node: ts.Node,\n context: AnalysisContext\n): OverrideImport | null => {\n const binding = context.imports.get(name);\n if (binding) {\n return sourceFor(\n binding.specifier,\n binding.imported,\n label,\n binding.node,\n context\n );\n }\n reject(\n context,\n `${label} refers to \"${name}\", which isn't imported in this file; import the component from its file.`,\n node\n );\n return null;\n};\n\nconst ALLOWED_FIELDS =\n \"only `component`, `client`, and `media` are allowed in a descriptor.\";\n\n/** Fold one descriptor-object property into the accumulating descriptor. */\nconst applyDescriptorProperty = (\n descriptor: RawDescriptor,\n property: ts.ObjectLiteralElementLike,\n label: string,\n context: AnalysisContext\n): void => {\n if (ts.isShorthandPropertyAssignment(property)) {\n if (property.name.text === \"component\") {\n descriptor.source = resolveIdentifier(\n property.name.text,\n `${label}'s \\`component\\``,\n property,\n context\n );\n return;\n }\n const shorthand = property.name.text;\n if (shorthand === \"client\" || shorthand === \"media\") {\n reject(\n context,\n `${label} writes \\`${shorthand}\\` as a shorthand property; only \\`component\\` may be shorthand, \\`${shorthand}\\` must be a string literal.`,\n property\n );\n return;\n }\n reject(\n context,\n `${label} has a \\`${shorthand}\\` field; ${ALLOWED_FIELDS}`,\n property\n );\n return;\n }\n if (!ts.isPropertyAssignment(property)) {\n reject(\n context,\n `${label} contains a spread, method, or accessor; write it as a plain \\`{ component, client, media }\\` object literal.`,\n property\n );\n return;\n }\n const name = propName(property.name);\n const init = property.initializer;\n if (name === \"component\") {\n if (ts.isStringLiteral(init)) {\n descriptor.source = sourceFor(\n init.text,\n \"default\",\n `${label}'s \\`component\\``,\n init,\n context\n );\n } else if (ts.isIdentifier(init)) {\n descriptor.source = resolveIdentifier(\n init.text,\n `${label}'s \\`component\\``,\n init,\n context\n );\n } else {\n reject(\n context,\n `${label}'s \\`component\\` must be an imported identifier or a path string.`,\n init\n );\n }\n } else if (name === \"client\") {\n if (ts.isStringLiteral(init) && isHydrationMode(init.text)) {\n descriptor.client = init.text;\n } else {\n reject(\n context,\n `${label}'s \\`client\\` must be a string literal: ${HYDRATION_MODE_LIST}.`,\n init\n );\n }\n } else if (name === \"media\") {\n if (ts.isStringLiteral(init)) {\n descriptor.media = init.text;\n } else {\n reject(context, `${label}'s \\`media\\` must be a string literal.`, init);\n }\n } else {\n reject(\n context,\n `${label} has a \\`${name ?? property.name.getText()}\\` field; ${ALLOWED_FIELDS}`,\n property\n );\n }\n};\n\n/**\n * Read a `{ component, client, media }` descriptor. Returns null (after\n * recording the reason) when it can't be planned.\n */\nconst readDescriptor = (\n object: ts.ObjectLiteralExpression,\n label: string,\n context: AnalysisContext\n): RawDescriptor | null => {\n const descriptor: RawDescriptor = { source: null };\n const before = context.errors.length;\n let hadComponent = false;\n for (const property of object.properties) {\n if (property.name && propName(property.name) === \"component\") {\n hadComponent = true;\n }\n applyDescriptorProperty(descriptor, property, label, context);\n }\n if (!hadComponent) {\n reject(\n context,\n `${label} is an object literal without a \\`component\\` field.`,\n object\n );\n }\n return context.errors.length === before ? descriptor : null;\n};\n\n/** Apply cross-cutting validation and produce the final normalized override. */\nconst finalize = (\n key: string,\n descriptor: RawDescriptor,\n label: string,\n warnings: string[]\n): NormalizedOverride | null => {\n const { client, media, source } = descriptor;\n if (!source) {\n return null;\n }\n\n if (client === \"media\" && !media) {\n warnings.push(\n `Override \"${key}\" uses client: \"media\" but no \\`media\\` query was given; it will hydrate as if \\`client: \"load\"\\`.`\n );\n }\n\n if (client === \"only\" && !source.framework) {\n warnings.push(\n `Override \"${key}\" uses client: \"only\" but its framework couldn't be inferred; reference a .tsx/.jsx/.vue/.svelte file.`\n );\n }\n\n if (!client && source.framework) {\n warnings.push(\n `Override \"${key}\" points to a ${FRAMEWORK_LABEL[source.framework]} component (${label}) but has no hydration mode, so it renders as static HTML with no interactivity. Add one, e.g. \\`${key}: { component: ${JSON.stringify(label)}, client: \"load\" }\\`.`\n );\n }\n\n const normalized: NormalizedOverride = { key, source };\n if (client) {\n normalized.client = client;\n }\n if (media) {\n normalized.media = media;\n }\n return normalized;\n};\n\n/** Normalize one `key: value` entry of a group, or record why it's rejected. */\nconst normalizeEntry = (\n entry: ts.ObjectLiteralElementLike,\n group: Group,\n context: AnalysisContext\n): NormalizedOverride | null => {\n const { warnings } = context;\n\n if (ts.isShorthandPropertyAssignment(entry)) {\n const name = entry.name.text;\n return finalize(\n name,\n { source: resolveIdentifier(name, `${group}.${name}`, entry, context) },\n name,\n warnings\n );\n }\n\n if (ts.isSpreadAssignment(entry)) {\n reject(\n context,\n `${group} contains a spread (\\`...${entry.expression.getText()}\\`); list each override explicitly.`,\n entry\n );\n return null;\n }\n const key = propName(entry.name);\n if (!key) {\n reject(\n context,\n `${group} has an entry with a computed key (\\`${entry.name.getText()}\\`); keys must be plain names.`,\n entry\n );\n return null;\n }\n const label = `${group}.${key}`;\n if (!ts.isPropertyAssignment(entry)) {\n reject(\n context,\n `${label} is a method or accessor, which Blume can't analyze statically.`,\n entry\n );\n return null;\n }\n const value = entry.initializer;\n\n if (ts.isIdentifier(value)) {\n return finalize(\n key,\n { source: resolveIdentifier(value.text, label, entry, context) },\n value.text,\n warnings\n );\n }\n if (ts.isStringLiteral(value)) {\n return finalize(\n key,\n { source: sourceFor(value.text, \"default\", label, value, context) },\n value.text,\n warnings\n );\n }\n if (ts.isObjectLiteralExpression(value)) {\n const descriptor = readDescriptor(value, label, context);\n return descriptor ? finalize(key, descriptor, key, warnings) : null;\n }\n\n reject(\n context,\n `${label} is an inline expression, which Blume can't analyze statically.`,\n entry\n );\n return null;\n};\n\n/** Normalize one top-level `{ mdx | layout }` group into `result`. */\nconst collectGroupOverrides = (\n property: ts.ObjectLiteralElementLike,\n context: AnalysisContext,\n result: ComponentOverrideAnalysis\n): void => {\n if (ts.isSpreadAssignment(property)) {\n reject(\n context,\n `The top-level object contains a spread (\\`...${property.expression.getText()}\\`); list \\`mdx\\` and \\`layout\\` explicitly.`,\n property\n );\n return;\n }\n const name = propName(property.name);\n if (name === \"islands\") {\n reject(\n context,\n 'The `islands` group was folded into `mdx`: move each entry there and give it a `client` mode, e.g. `mdx: { Counter: { component: Counter, client: \"visible\" } }`.',\n property\n );\n return;\n }\n if (!(name && isGroup(name))) {\n reject(\n context,\n `\\`${name ?? property.name.getText()}\\` isn't an override group; use \\`mdx\\` or \\`layout\\`.`,\n property\n );\n return;\n }\n if (\n !ts.isPropertyAssignment(property) ||\n !ts.isObjectLiteralExpression(property.initializer)\n ) {\n reject(\n context,\n `\\`${name}\\` must be an object literal of overrides.`,\n property\n );\n return;\n }\n for (const entry of property.initializer.properties) {\n const normalized = normalizeEntry(entry, name, context);\n if (normalized) {\n result[name].push(normalized);\n }\n if (\n name === \"layout\" &&\n normalized &&\n !LAYOUT_SLOT_SET.has(normalized.key)\n ) {\n context.warnings.push(\n `Layout override \"${normalized.key}\" isn't a layout slot, so nothing renders it. Use one of: ${LAYOUT_SLOTS.join(\", \")}.`\n );\n }\n }\n};\n\n/**\n * A `components.ts` Blume can't plan. The diagnostic lists every rejected entry\n * at once (at the first one's line); `issues` holds each on its own, with its\n * line, for a caller that reports them one by one (`blume upgrade`).\n */\nexport class ComponentOverridesError extends BlumeError {\n readonly issues: Diagnostic[];\n\n constructor(diagnostic: Diagnostic, issues: Diagnostic[]) {\n super(diagnostic);\n this.name = \"ComponentOverridesError\";\n this.issues = issues;\n }\n}\n\n/** A rejection as a diagnostic, at its node's line when it has one. */\nconst rejectionDiagnostic = (\n filePath: string,\n sourceFile: ts.SourceFile,\n rejection: Rejection\n): Diagnostic => {\n const position = rejection.node\n ? sourceFile.getLineAndCharacterOfPosition(\n rejection.node.getStart(sourceFile)\n )\n : undefined;\n return {\n code: \"BLUME_COMPONENTS_INVALID\",\n column: position && position.character + 1,\n file: filePath,\n line: position && position.line + 1,\n message: rejection.message,\n severity: \"error\",\n suggestion: rejection.missingFile ? undefined : ACCEPTED_OVERRIDE_FORMS,\n };\n};\n\nconst invalidOverrides = (\n filePath: string,\n sourceFile: ts.SourceFile,\n rejections: Rejection[]\n): ComponentOverridesError => {\n const issues = rejections.map((rejection) =>\n rejectionDiagnostic(filePath, sourceFile, rejection)\n );\n const first = issues.find((issue) => issue.line !== undefined);\n return new ComponentOverridesError(\n {\n code: \"BLUME_COMPONENTS_INVALID\",\n column: first?.column,\n file: filePath,\n line: first?.line,\n message: `${basename(filePath)} has ${rejections.length} override(s) Blume can't plan:\\n${rejections.map((rejection) => ` - ${rejection.message}`).join(\"\\n\")}`,\n severity: \"error\",\n suggestion: rejections.every((rejection) => rejection.missingFile)\n ? undefined\n : ACCEPTED_OVERRIDE_FORMS,\n },\n issues\n );\n};\n\n/**\n * Parse a user `components.ts`/`.tsx` and return its normalized overrides. Never\n * executes the file. Throws a `BLUME_COMPONENTS_INVALID`\n * {@link ComponentOverridesError} listing every entry that isn't one of the\n * accepted forms or points at a file that doesn't exist.\n */\nexport const analyzeComponentOverrides = (\n source: string,\n filePath: string\n): ComponentOverrideAnalysis => {\n const result = emptyComponentOverrides();\n const sourceFile = ts.createSourceFile(\n filePath,\n source,\n ts.ScriptTarget.Latest,\n true,\n filePath.endsWith(\"tsx\") ? ts.ScriptKind.TSX : ts.ScriptKind.TS\n );\n\n const exported = findDefaultExport(sourceFile);\n if (!exported) {\n throw invalidOverrides(filePath, sourceFile, [\n {\n message:\n \"No default export was found; export `defineComponents({ mdx, layout })` (or a plain object literal) as the default.\",\n },\n ]);\n }\n const object = unwrapObject(exported.expression);\n if (!object) {\n throw invalidOverrides(filePath, sourceFile, [\n {\n message:\n \"The default export isn't an object literal or a `defineComponents({ ... })` call.\",\n node: exported,\n },\n ]);\n }\n\n const context: AnalysisContext = {\n dir: dirname(filePath),\n errors: [],\n imports: collectImports(sourceFile),\n warnings: result.warnings,\n };\n\n for (const property of object.properties) {\n collectGroupOverrides(property, context, result);\n }\n\n if (context.errors.length > 0) {\n throw invalidOverrides(filePath, sourceFile, context.errors);\n }\n return result;\n};\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "59653B23465A56F364756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
} from "./index.js";
|
|
10
10
|
import {
|
|
11
11
|
AGENTS
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-42t4jxdx.js";
|
|
13
13
|
import {
|
|
14
14
|
i18nEnabled,
|
|
15
15
|
localeCodes,
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
folderMetaSchema,
|
|
19
19
|
scanBody,
|
|
20
20
|
createModuleLoader
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-ehweg4fr.js";
|
|
22
22
|
import {
|
|
23
23
|
seconds,
|
|
24
24
|
money,
|
|
@@ -27,18 +27,18 @@ import {
|
|
|
27
27
|
runAgentHeadless,
|
|
28
28
|
CODEX_LOCKDOWN,
|
|
29
29
|
readAgentOutput
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-0n9xkp3d.js";
|
|
31
31
|
import {
|
|
32
32
|
writeTextAtomic
|
|
33
33
|
} from "./chunk-jq5n4avg.js";
|
|
34
34
|
import {
|
|
35
35
|
findFolderMetaFiles,
|
|
36
36
|
scanProject
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-ncj7w596.js";
|
|
38
38
|
import"./chunk-zccbjcj0.js";
|
|
39
39
|
import {
|
|
40
40
|
parseTimeoutSeconds
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-j134vrp2.js";
|
|
42
42
|
|
|
43
43
|
// src/cli/commands/translate.ts
|
|
44
44
|
import { defineCommand } from "citty";
|
|
@@ -574,6 +574,18 @@ var setPath = (data, path, value) => {
|
|
|
574
574
|
}
|
|
575
575
|
parent[path.at(-1)] = value;
|
|
576
576
|
};
|
|
577
|
+
var dropCanonical = (data) => {
|
|
578
|
+
const { seo } = data;
|
|
579
|
+
if (!isKeyedObject(seo) || !("canonical" in seo)) {
|
|
580
|
+
return;
|
|
581
|
+
}
|
|
582
|
+
const { canonical: _canonical, ...rest } = seo;
|
|
583
|
+
if (Object.keys(rest).length > 0) {
|
|
584
|
+
data.seo = rest;
|
|
585
|
+
} else {
|
|
586
|
+
delete data.seo;
|
|
587
|
+
}
|
|
588
|
+
};
|
|
577
589
|
var ensureTrailingNewline = (text) => text.endsWith(`
|
|
578
590
|
`) ? text : `${text}
|
|
579
591
|
`;
|
|
@@ -625,6 +637,7 @@ var validateTranslation = (sourceText, agentText) => {
|
|
|
625
637
|
setPath(data, path, translated);
|
|
626
638
|
}
|
|
627
639
|
}
|
|
640
|
+
dropCanonical(data);
|
|
628
641
|
return {
|
|
629
642
|
ok: true,
|
|
630
643
|
text: ensureTrailingNewline(frontmatter_default.stringify(body, data))
|
|
@@ -1198,5 +1211,5 @@ export {
|
|
|
1198
1211
|
translateCommand
|
|
1199
1212
|
};
|
|
1200
1213
|
|
|
1201
|
-
//# debugId=
|
|
1202
|
-
//# sourceMappingURL=chunk-
|
|
1214
|
+
//# debugId=7CBDF68DDB18B6AB64756E2164756E21
|
|
1215
|
+
//# sourceMappingURL=chunk-5vjtgs6e.js.map
|
|
@@ -10,10 +10,10 @@
|
|
|
10
10
|
"import { existsSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\n\nimport { dirname, join, relative } from \"pathe\";\n\nimport { localeTargetPath } from \"../core/i18n.ts\";\nimport { createModuleLoader } from \"../core/load-module.ts\";\nimport { findFolderMetaFiles } from \"../core/meta.ts\";\nimport type { BlumeProject } from \"../core/project-graph.ts\";\nimport { folderMetaSchema } from \"../core/schema.ts\";\nimport type { FolderMeta, ResolvedI18nConfig } from \"../core/schema.ts\";\nimport type { Diagnostic } from \"../core/types.ts\";\n\n/**\n * Folder-nav `meta.ts` titles are translatable under the `dir` parser ONLY:\n * per-locale meta is a whole-file replacement, not a merge (`applyFolderMeta`\n * looks up `<locale>/<group>` and falls back to shared meta, never to the\n * default locale's file), and the `dot` parser has no per-locale meta\n * mechanism at all. So the generated module must copy EVERY source key\n * (order/pages/icon/collapsed) with only the title translated — otherwise the\n * locale's navigation loses its ordering.\n */\n\n/** One default-locale meta file whose title can be translated. */\nexport interface TranslatableMeta {\n /** The parsed meta module; copied wholesale into the generated module. */\n data: FolderMeta;\n /** Directory relative to the owning source's content root (`\"\"` = root). */\n dir: string;\n /** Absolute path of the source meta file. */\n file: string;\n /** The owning source's content root (locale directories live under it). */\n contentRoot: string;\n /** Raw source text at discovery time — what the ledger hashes. */\n raw: string;\n /** POSIX root-relative path of the source meta file — the ledger key. */\n sourceRel: string;\n /** The source title to translate. */\n title: string;\n}\n\n/** A folder's meta module names, in the order a lookup prefers them. */\nconst META_NAMES = [\"meta.ts\", \"meta.js\", \"meta.mjs\"];\n\nconst META_FILES = META_NAMES.map((name) => `**/${name}`);\n\n/**\n * Whether a loaded meta module default-exports a factory function. Generic so\n * it can decode the loader's untyped module value at this boundary.\n */\nconst isFactoryModule = <T>(\n value: T\n): value is T & ((...args: never[]) => FolderMeta) =>\n typeof value === \"function\";\n\n/**\n * Where a locale's meta module lives. The locale folder is resolved the way\n * pages resolve it (`localeTargetPath`): `folders` are the content root's\n * existing top-level folders, and one naming the locale in another casing\n * (`pt-br/` for a configured `pt-BR`) is the locale's folder already. In that\n * folder, a `meta.js`/`meta.mjs` that already exists is the target — the\n * generated module is plain JavaScript, and writing a `meta.ts` beside it\n * would leave the folder with two meta files. Otherwise it's a new `meta.ts`.\n */\nexport const metaTargetPath = (\n meta: TranslatableMeta,\n locale: string,\n i18n: ResolvedI18nConfig,\n folders: readonly string[]\n): string => {\n const dir = join(\n meta.contentRoot,\n dirname(\n localeTargetPath(join(meta.dir, \"meta.ts\"), \".ts\", locale, i18n, folders)\n )\n );\n const existing = META_NAMES.find((name) => existsSync(join(dir, name)));\n return join(dir, existing ?? \"meta.ts\");\n};\n\n/**\n * Discover the default-locale `meta.{ts,js,mjs}` files whose titles a\n * translation run covers. Skips (in order): non-`dir` i18n projects entirely,\n * files the scan's own folder-meta discovery never reads either — those\n * matching the source's `exclude` globs (application code) or in folders its\n * `include` globs don't reach (see `findFolderMetaFiles`) — files inside a\n * configured locale directory (those ARE translations), files inside an\n * archived-version snapshot (frozen, with their own translations — the same\n * folders the navigation's meta lookup hoists as versions), modules that fail\n * to load (the scan already errors on those), factory-form modules (a warning\n * — the generator can't re-emit a function), modules that fail meta\n * validation (the scan already errors on those too), and modules with no\n * `title` (nothing to translate).\n */\nexport const discoverTranslatableMeta = async (\n project: BlumeProject\n): Promise<{ metas: TranslatableMeta[]; diagnostics: Diagnostic[] }> => {\n const { i18n } = project.config;\n if (!i18n || i18n.parser !== \"dir\") {\n return { diagnostics: [], metas: [] };\n }\n const localeDirs = new Set(\n i18n.locales.flatMap((locale) =>\n locale.code === i18n.defaultLocale ? [] : [locale.code.toLowerCase()]\n )\n );\n const versionDirs = new Set(\n project.config.versions?.archived.map((version) => version.id)\n );\n\n const load = createModuleLoader();\n const metas: TranslatableMeta[] = [];\n const diagnostics: Diagnostic[] = [];\n\n const roots = project.sources.flatMap((source) =>\n source.staged || !source.contentRoot\n ? []\n : [\n {\n contentRoot: source.contentRoot,\n exclude: source.exclude,\n include: source.include,\n },\n ]\n );\n for (const { contentRoot, exclude, include } of roots) {\n // The scan's own file set (`discoverFolderMeta`): a `meta.ts` under an\n // excluded folder (`src/lib/meta.ts` beside `exclude: [\"src/**\"]`) is\n // application code, and one in a folder no `include` glob reaches\n // configures no group the build renders.\n // oxlint-disable-next-line no-await-in-loop -- a project has O(1) sources\n const files = await findFolderMetaFiles(\n { exclude, include, root: contentRoot },\n META_FILES\n );\n for (const file of files.toSorted()) {\n const dir = relative(contentRoot, dirname(file));\n const [head] = dir.split(\"/\");\n if (\n head &&\n (localeDirs.has(head.toLowerCase()) || versionDirs.has(head))\n ) {\n continue;\n }\n let mod: Awaited<ReturnType<typeof load>>;\n try {\n // oxlint-disable-next-line no-await-in-loop -- sequential, ordered discovery\n mod = await load(file);\n } catch {\n // Folder meta that fails to load is the scan's BLUME_META_LOAD_FAILED\n // error, not a crash here; either way there's no title to read.\n continue;\n }\n // oxlint-disable-next-line no-await-in-loop -- sequential, ordered discovery\n const raw = await readFile(file, \"utf-8\");\n if (isFactoryModule(mod)) {\n diagnostics.push({\n code: \"BLUME_TRANSLATE_META_FACTORY\",\n file,\n message:\n \"This meta file default-exports a function, so `blume translate` cannot generate per-locale copies of it.\",\n severity: \"warning\",\n suggestion:\n \"Export a plain object, or author the locale's meta file by hand.\",\n });\n continue;\n }\n const parsed = folderMetaSchema.safeParse(mod);\n if (!parsed.success || parsed.data.title === undefined) {\n continue;\n }\n metas.push({\n contentRoot,\n data: parsed.data,\n dir: dir === \".\" ? \"\" : dir,\n file,\n raw,\n sourceRel: relative(project.context.root, file),\n title: parsed.data.title,\n });\n }\n }\n return { diagnostics, metas };\n};\n\n/**\n * Emit the per-locale meta module: every source key copied verbatim, only the\n * title swapped for its translation. Keys alphabetical, values as JSON.\n */\nexport const generateMetaModule = (\n meta: FolderMeta,\n translatedTitle: string\n): string => {\n const data = {\n ...meta,\n title: translatedTitle,\n };\n const lines = Object.entries(data)\n .toSorted(([a], [b]) => (a < b ? -1 : 1))\n .filter(([, value]) => value !== undefined)\n .map(([key, value]) => ` ${key}: ${JSON.stringify(value)},`);\n return [\n \"// Generated by `blume translate` — edit the default locale's meta file\",\n \"// and rerun the translation instead of editing this copy.\",\n \"export default {\",\n ...lines,\n \"};\",\n \"\",\n ].join(\"\\n\");\n};\n",
|
|
11
11
|
"import type { LocaleConfig } from \"../core/schema.ts\";\n\n/**\n * The frontmatter key paths whose *values* an agent may translate. Everything\n * else in the frontmatter is copied from the source verbatim by the validator,\n * so this list is both the prompt's instruction and the reconciliation\n * contract in `validate.ts`.\n */\nexport const TRANSLATABLE_KEY_PATHS: readonly (readonly string[])[] = [\n [\"title\"],\n [\"description\"],\n [\"sidebar\", \"label\"],\n [\"sidebar\", \"badge\"],\n [\"seo\", \"title\"],\n [\"seo\", \"description\"],\n];\n\n/** \"French (fr)\" — the configured display label plus the code. */\nconst localeName = (locale: LocaleConfig): string =>\n `${locale.label} (${locale.code})`;\n\nconst KEY_LIST = TRANSLATABLE_KEY_PATHS.map((path) => path.join(\".\")).join(\n \", \"\n);\n\n/**\n * The page-translation prompt. Delivered over stdin (no argv limits), so the\n * full source file rides along inline. When the page was translated before,\n * the previous translation rides along too: without it, every retranslation\n * is a from-scratch rewrite in which the agent re-decides register, dialect,\n * and terminology (du vs Sie, pt-BR vs pt-PT) and churns the whole page for\n * a one-paragraph source edit.\n */\nexport const pagePrompt = (\n sourceText: string,\n target: LocaleConfig,\n source: LocaleConfig,\n previousTranslation?: string\n): string => {\n const styleRule =\n target.style === undefined\n ? \"\"\n : `\n- Write the translation in this style: ${target.style}`;\n const previousRule =\n previousTranslation === undefined\n ? \"\"\n : `\n- A translation of an earlier revision of this page is included below. Match its register, formality, dialect, and terminology exactly; re-translate only what the changed source requires and keep everything else word-for-word identical.${\n target.style === undefined\n ? \"\"\n : \" Where the previous translation disagrees with the style rule above, the style rule wins.\"\n }`;\n const previousSection =\n previousTranslation === undefined\n ? \"\"\n : `\nThe previous translation begins after this line and ends at the \"page source\" marker.\n${previousTranslation}`;\n return `Translate the following documentation page from ${localeName(\n source\n )} into ${localeName(target)}.\n\nRules:\n- Translate the prose: headings, paragraphs, list items, table cells, admonitions, and image alt text.\n- In the YAML frontmatter, translate ONLY the values of these keys: ${KEY_LIST}. Copy every other frontmatter key and value exactly as written.\n- Keep the frontmatter valid YAML: if a translated value contains a colon followed by a space (\\`: \\`) or a space followed by \\`#\\`, or starts with a quote, a backtick, or another YAML indicator character, write it as a double-quoted string and escape any double quotes inside it.\n- Never translate or alter: code blocks, inline code, import/export statements, JSX/MDX component names and their attributes, URLs, link targets, HTML tags, or frontmatter keys.\n- A heading may end with anchor markers: \\`[#some-id]\\`, \\`{#some-id}\\` (also written \\`\\\\{#some-id\\\\}\\`), \\`[!toc]\\`, or \\`[toc]\\`. Copy every marker exactly as written, in the same position at the end of the translated heading — never translate, reorder, or drop a marker, and never change the id inside \\`[#...]\\` or \\`{#...}\\` (anchors must stay identical across languages).\n\n- Preserve the document structure exactly: the same headings, the same lists and tables, and the same number of code fences.${styleRule}${previousRule}\n- Output ONLY the complete translated file. Do not wrap it in a code fence. Do not add commentary before or after it.\n${previousSection}\nThe page source begins after this line.\n${sourceText}`;\n};\n\n/**\n * The sidebar-titles prompt: a JSON object of `{directory: title}` in, the\n * same keys with translated values out.\n */\nexport const metaPrompt = (\n titles: Record<string, string>,\n target: LocaleConfig,\n source: LocaleConfig\n): string => `Translate the following documentation sidebar section titles from ${localeName(\n source\n)} into ${localeName(target)}.\n\nThe input is a JSON object mapping a directory path to its title. Reply with ONLY a JSON object that has exactly the same keys, where each value is the title translated into ${localeName(\n target\n)}. Do not translate the keys. Do not add commentary.${\n target.style === undefined\n ? \"\"\n : `\\nWrite the titles in this style: ${target.style}`\n}\n\n${JSON.stringify(titles, null, 2)}`;\n",
|
|
12
12
|
"import { scanBody } from \"../core/sources/normalize.ts\";\n\n/**\n * Keep heading anchors identical across languages. A translated heading slugs\n * to a different id (`## Ordering` → `#ordering`, `## Reihenfolge` →\n * `#reihenfolge`), so a `/guide#ordering` link — which the runtime keeps\n * inside the reader's locale — would land at the top of the translated page.\n * After a translation validates, every heading whose rendered id would differ\n * from its source counterpart gets the source id pinned as a trailing\n * `[#id]` marker, so the anchor index (and every `#fragment` link) agrees in\n * every locale. Headings the translation already pins are left alone: the\n * agent is told to copy markers verbatim, and a hand-authored pin is the\n * translator's choice.\n *\n * Headings pair positionally, so the translation must mirror the source's\n * heading structure (the prompt demands exactly that); when it doesn't, no\n * pins are added and the text is returned unchanged with a reason.\n */\n\nexport interface PinResult {\n /** Number of headings that received a pin. */\n pinned: number;\n /** Why no pins were added, when the structures don't line up. */\n skipped?: string;\n text: string;\n}\n\n/** An ATX heading's optional closing hash run, which a marker must precede. */\nconst ATX_CLOSE = /\\s+#+$/u;\n\nconst structureOf = (headings: readonly { depth: number }[]): string =>\n headings.map((heading) => heading.depth).join(\",\");\n\n/** Append `[#id]` to a heading line, ahead of any closing `##` and line end. */\nconst pinLine = (line: string, id: string): string => {\n const eol = line.endsWith(\"\\r\") ? \"\\r\" : \"\";\n const body = line.slice(0, line.length - eol.length).trimEnd();\n const close = body.match(ATX_CLOSE)?.[0] ?? \"\";\n const head = body.slice(0, body.length - close.length);\n return `${head} [#${id}]${close}${eol}`;\n};\n\nexport const pinHeadingAnchors = (\n sourceText: string,\n translatedText: string\n): PinResult => {\n const source = scanBody(sourceText);\n const translated = scanBody(translatedText);\n if (structureOf(source.headings) !== structureOf(translated.headings)) {\n return {\n pinned: 0,\n skipped: `heading structure differs (source has ${source.headings.length} headings, translation has ${translated.headings.length})`,\n text: translatedText,\n };\n }\n\n const lines = translatedText.split(\"\\n\");\n let pinned = 0;\n for (const [index, heading] of translated.headings.entries()) {\n const site = translated.sites[index];\n const sourceId = source.headings[index]?.slug;\n if (\n !site ||\n site.pinned ||\n sourceId === undefined ||\n heading.slug === sourceId\n ) {\n continue;\n }\n lines[site.line - 1] = pinLine(lines[site.line - 1] ?? \"\", sourceId);\n pinned += 1;\n }\n if (pinned === 0) {\n return { pinned, text: translatedText };\n }\n\n // The pins must reproduce the source ids exactly once rendered; anything\n // else (a heading the line-based rewrite couldn't reach) keeps the text as\n // the agent wrote it rather than shipping a half-pinned page.\n const text = lines.join(\"\\n\");\n const rendered = scanBody(text).headings.map((heading) => heading.slug);\n const expected = source.headings.map((heading) => heading.slug);\n if (rendered.join(\"\\n\") !== expected.join(\"\\n\")) {\n return {\n pinned: 0,\n skipped: \"pinned anchors did not reproduce the source heading ids\",\n text: translatedText,\n };\n }\n return { pinned, text };\n};\n",
|
|
13
|
-
"import matter from \"../core/frontmatter.ts\";\nimport { pinHeadingAnchors } from \"./anchors.ts\";\nimport { TRANSLATABLE_KEY_PATHS } from \"./prompts.ts\";\n\n/**\n * Structural validation of agent output. The agent is never trusted for\n * structure: the final frontmatter is *reconstructed* from the source (clone\n * the source data, overlay only the translatable string values), so invented\n * keys are dropped, deleted keys are restored, and slugs/icons/orders/dates\n * stay source-verbatim by construction. Only then is the file written.\n */\n\nexport type ValidationResult =\n | { ok: true; text: string }\n | { ok: false; reason: string };\n\n/**\n * A parsed YAML frontmatter value (agent meta replies parse from JSON into the\n * same shape). js-yaml can also mint Dates and other rich scalars; the\n * traversal below only ever distinguishes \"keyed object\" from \"string\", so\n * they ride along as the object arm.\n */\ntype FrontmatterValue =\n | string\n | number\n | boolean\n | null\n | FrontmatterValue[]\n | FrontmatterData;\n\ninterface FrontmatterData {\n [key: string]: FrontmatterValue;\n}\n\n// gray-matter strips a leading byte order mark before it looks for the fence,\n// so a BOM-prefixed file still has frontmatter — this test must agree, or the\n// reconstruction below writes the body alone and the metadata is lost.\nconst FRONTMATTER_OPEN = /^\uFEFF?---\\r?\\n/u;\nconst FENCE_LINE = /^\\s*(?:```|~~~)/u;\n\n/**\n * Strip exactly one symmetric outer code fence (any info string) — the one\n * wrapper agents add despite being told not to. Anything else (no fence, or a\n * fence that isn't the entire output) is returned trimmed and untouched.\n */\nexport const stripOuterFence = (text: string): string => {\n const trimmed = text.trim();\n const match = trimmed.match(\n /^(?<fence>`{3,}|~{3,})[^\\n]*\\n(?<inner>[\\s\\S]*?)\\n\\k<fence>\\s*$/u\n );\n return match?.groups?.inner ?? trimmed;\n};\n\n/** Lines opening or closing a code fence; their count must survive translation. */\nconst countFenceLines = (text: string): number =>\n text.split(\"\\n\").filter((line) => FENCE_LINE.test(line)).length;\n\nconst isKeyedObject = (\n value: FrontmatterValue | undefined\n): value is FrontmatterData => typeof value === \"object\" && value !== null;\n\nconst isString = (value: FrontmatterValue | undefined): value is string =>\n typeof value === \"string\";\n\nconst getPath = (\n data: FrontmatterValue,\n path: readonly string[]\n): FrontmatterValue | undefined => {\n let value: FrontmatterValue | undefined = data;\n for (const key of path) {\n if (!isKeyedObject(value)) {\n return;\n }\n value = value[key];\n }\n return value;\n};\n\n/** Set `path` on `data`; only called for paths whose parents exist in `data`. */\nconst setPath = (\n data: FrontmatterData,\n path: readonly string[],\n value: string\n): void => {\n let parent = data;\n for (const key of path.slice(0, -1)) {\n // SAFETY: callers only set paths that getPath already resolved to a string\n // on this same (cloned) data, so every intermediate step is a keyed object.\n parent = parent[key] as FrontmatterData;\n }\n // SAFETY: every TRANSLATABLE_KEY_PATHS entry is a non-empty tuple, so the\n // path always has a final key.\n parent[path.at(-1) as string] = value;\n};\n\nconst ensureTrailingNewline = (text: string): string =>\n text.endsWith(\"\\n\") ? text : `${text}\\n`;\n\n/**\n * Validate one translated page against its source and reassemble the file to\n * write. Fails (no write happens) on empty output, unparseable or missing\n * frontmatter, an empty body, or a changed code-fence count.\n */\nexport const validateTranslation = (\n sourceText: string,\n agentText: string\n): ValidationResult => {\n // Only a fence the agent added is stripped. A source that is itself one\n // code block (a frontmatter-less partial holding a single bash block)\n // starts and ends with its own fence, which the translation must keep — so\n // for such a source the reply loses its outer fence only when it has more\n // fence lines than the source.\n const sourceIsFenced = stripOuterFence(sourceText) !== sourceText.trim();\n const candidate =\n sourceIsFenced && countFenceLines(agentText) <= countFenceLines(sourceText)\n ? agentText.trim()\n : stripOuterFence(agentText);\n if (candidate === \"\") {\n return { ok: false, reason: \"agent returned empty output\" };\n }\n\n const sourceHasFrontmatter = FRONTMATTER_OPEN.test(sourceText);\n const source = matter(sourceText);\n\n if (sourceHasFrontmatter && !FRONTMATTER_OPEN.test(candidate)) {\n return {\n ok: false,\n reason: \"translation dropped the frontmatter (must start with ---)\",\n };\n }\n\n let parsed: { content: string; data: FrontmatterData };\n try {\n parsed = matter(candidate);\n } catch (error) {\n // js-yaml's message leads with the problem and its line:column in the\n // file, then a multi-line code frame; the first line is enough to act on.\n const message = error instanceof Error ? error.message : String(error);\n return {\n ok: false,\n reason: `frontmatter does not parse as YAML: ${message.replace(/\\n[\\s\\S]*$/u, \"\")}`,\n };\n }\n\n const rawBody = ensureTrailingNewline(parsed.content.replace(/^\\r?\\n/u, \"\"));\n if (rawBody.trim() === \"\") {\n return { ok: false, reason: \"translation has an empty body\" };\n }\n\n const sourceFences = countFenceLines(source.content);\n const candidateFences = countFenceLines(rawBody);\n if (sourceFences !== candidateFences) {\n return {\n ok: false,\n reason: `code fence count changed (source has ${sourceFences}, translation has ${candidateFences})`,\n };\n }\n\n // Anchors stay identical across languages: each translated heading is\n // pinned to its source heading's id (see `anchors.ts`).\n const body = pinHeadingAnchors(source.content, rawBody).text;\n\n if (!sourceHasFrontmatter) {\n // A frontmatter-less source writes the body alone; any frontmatter the\n // agent invented is dropped with it.\n return { ok: true, text: body };\n }\n\n // Reconciliation by reconstruction: start from the SOURCE data and overlay\n // only the translatable key paths where both sides hold a string and the\n // translation is non-empty.\n const data: FrontmatterData = structuredClone(source.data);\n for (const path of TRANSLATABLE_KEY_PATHS) {\n const original = getPath(source.data, path);\n const translated = getPath(parsed.data, path);\n if (\n isString(original) &&\n isString(translated) &&\n translated.trim() !== \"\"\n ) {\n setPath(data, path, translated);\n }\n }\n\n return {\n ok: true,\n text: ensureTrailingNewline(matter.stringify(body, data)),\n };\n};\n\n/** A meta-batch parse: recovered titles by key, plus the keys still missing. */\nexport interface MetaTitlesResult {\n titles: Record<string, string>;\n missing: string[];\n}\n\n/**\n * Extract translated sidebar titles from a meta reply: tolerant first-`{`\n * to-last-`}` extraction (the eval `parseVerdict` idiom). Keys missing or\n * non-string in the reply land in `missing`, so a batch can partially succeed.\n */\nexport const parseMetaTitles = (\n agentText: string,\n expectedKeys: readonly string[]\n): MetaTitlesResult => {\n const start = agentText.indexOf(\"{\");\n const end = agentText.lastIndexOf(\"}\");\n let parsed: FrontmatterValue | undefined;\n if (start !== -1 && end > start) {\n try {\n parsed = JSON.parse(agentText.slice(start, end + 1));\n } catch {\n parsed = undefined;\n }\n }\n const record: FrontmatterData = isKeyedObject(parsed) ? parsed : {};\n\n const titles: Record<string, string> = {};\n const missing: string[] = [];\n for (const key of expectedKeys) {\n const value = record[key];\n if (isString(value) && value.trim() !== \"\") {\n titles[key] = value;\n } else {\n missing.push(key);\n }\n }\n return { missing, titles };\n};\n",
|
|
13
|
+
"import matter from \"../core/frontmatter.ts\";\nimport { pinHeadingAnchors } from \"./anchors.ts\";\nimport { TRANSLATABLE_KEY_PATHS } from \"./prompts.ts\";\n\n/**\n * Structural validation of agent output. The agent is never trusted for\n * structure: the final frontmatter is *reconstructed* from the source (clone\n * the source data, overlay only the translatable string values), so invented\n * keys are dropped, deleted keys are restored, and slugs/icons/orders/dates\n * stay source-verbatim by construction. The one source key left out is\n * `seo.canonical` (see `dropCanonical`). Only then is the file written.\n */\n\nexport type ValidationResult =\n | { ok: true; text: string }\n | { ok: false; reason: string };\n\n/**\n * A parsed YAML frontmatter value (agent meta replies parse from JSON into the\n * same shape). js-yaml can also mint Dates and other rich scalars; the\n * traversal below only ever distinguishes \"keyed object\" from \"string\", so\n * they ride along as the object arm.\n */\ntype FrontmatterValue =\n | string\n | number\n | boolean\n | null\n | FrontmatterValue[]\n | FrontmatterData;\n\ninterface FrontmatterData {\n [key: string]: FrontmatterValue;\n}\n\n// gray-matter strips a leading byte order mark before it looks for the fence,\n// so a BOM-prefixed file still has frontmatter — this test must agree, or the\n// reconstruction below writes the body alone and the metadata is lost.\nconst FRONTMATTER_OPEN = /^\uFEFF?---\\r?\\n/u;\nconst FENCE_LINE = /^\\s*(?:```|~~~)/u;\n\n/**\n * Strip exactly one symmetric outer code fence (any info string) — the one\n * wrapper agents add despite being told not to. Anything else (no fence, or a\n * fence that isn't the entire output) is returned trimmed and untouched.\n */\nexport const stripOuterFence = (text: string): string => {\n const trimmed = text.trim();\n const match = trimmed.match(\n /^(?<fence>`{3,}|~{3,})[^\\n]*\\n(?<inner>[\\s\\S]*?)\\n\\k<fence>\\s*$/u\n );\n return match?.groups?.inner ?? trimmed;\n};\n\n/** Lines opening or closing a code fence; their count must survive translation. */\nconst countFenceLines = (text: string): number =>\n text.split(\"\\n\").filter((line) => FENCE_LINE.test(line)).length;\n\nconst isKeyedObject = (\n value: FrontmatterValue | undefined\n): value is FrontmatterData => typeof value === \"object\" && value !== null;\n\nconst isString = (value: FrontmatterValue | undefined): value is string =>\n typeof value === \"string\";\n\nconst getPath = (\n data: FrontmatterValue,\n path: readonly string[]\n): FrontmatterValue | undefined => {\n let value: FrontmatterValue | undefined = data;\n for (const key of path) {\n if (!isKeyedObject(value)) {\n return;\n }\n value = value[key];\n }\n return value;\n};\n\n/** Set `path` on `data`; only called for paths whose parents exist in `data`. */\nconst setPath = (\n data: FrontmatterData,\n path: readonly string[],\n value: string\n): void => {\n let parent = data;\n for (const key of path.slice(0, -1)) {\n // SAFETY: callers only set paths that getPath already resolved to a string\n // on this same (cloned) data, so every intermediate step is a keyed object.\n parent = parent[key] as FrontmatterData;\n }\n // SAFETY: every TRANSLATABLE_KEY_PATHS entry is a non-empty tuple, so the\n // path always has a final key.\n parent[path.at(-1) as string] = value;\n};\n\n/**\n * Drop `seo.canonical`, and `seo` with it when nothing else is left. The\n * source's canonical names a page in the source language (most often the\n * source page itself); copied into a translation, it would canonicalize the\n * translation to another language and take it out of search. Without it the\n * translation gets Blume's default canonical: its own URL.\n */\nconst dropCanonical = (data: FrontmatterData): void => {\n const { seo } = data;\n if (!isKeyedObject(seo) || !(\"canonical\" in seo)) {\n return;\n }\n const { canonical: _canonical, ...rest } = seo;\n if (Object.keys(rest).length > 0) {\n data.seo = rest;\n } else {\n delete data.seo;\n }\n};\n\nconst ensureTrailingNewline = (text: string): string =>\n text.endsWith(\"\\n\") ? text : `${text}\\n`;\n\n/**\n * Validate one translated page against its source and reassemble the file to\n * write. Fails (no write happens) on empty output, unparseable or missing\n * frontmatter, an empty body, or a changed code-fence count.\n */\nexport const validateTranslation = (\n sourceText: string,\n agentText: string\n): ValidationResult => {\n // Only a fence the agent added is stripped. A source that is itself one\n // code block (a frontmatter-less partial holding a single bash block)\n // starts and ends with its own fence, which the translation must keep — so\n // for such a source the reply loses its outer fence only when it has more\n // fence lines than the source.\n const sourceIsFenced = stripOuterFence(sourceText) !== sourceText.trim();\n const candidate =\n sourceIsFenced && countFenceLines(agentText) <= countFenceLines(sourceText)\n ? agentText.trim()\n : stripOuterFence(agentText);\n if (candidate === \"\") {\n return { ok: false, reason: \"agent returned empty output\" };\n }\n\n const sourceHasFrontmatter = FRONTMATTER_OPEN.test(sourceText);\n const source = matter(sourceText);\n\n if (sourceHasFrontmatter && !FRONTMATTER_OPEN.test(candidate)) {\n return {\n ok: false,\n reason: \"translation dropped the frontmatter (must start with ---)\",\n };\n }\n\n let parsed: { content: string; data: FrontmatterData };\n try {\n parsed = matter(candidate);\n } catch (error) {\n // js-yaml's message leads with the problem and its line:column in the\n // file, then a multi-line code frame; the first line is enough to act on.\n const message = error instanceof Error ? error.message : String(error);\n return {\n ok: false,\n reason: `frontmatter does not parse as YAML: ${message.replace(/\\n[\\s\\S]*$/u, \"\")}`,\n };\n }\n\n const rawBody = ensureTrailingNewline(parsed.content.replace(/^\\r?\\n/u, \"\"));\n if (rawBody.trim() === \"\") {\n return { ok: false, reason: \"translation has an empty body\" };\n }\n\n const sourceFences = countFenceLines(source.content);\n const candidateFences = countFenceLines(rawBody);\n if (sourceFences !== candidateFences) {\n return {\n ok: false,\n reason: `code fence count changed (source has ${sourceFences}, translation has ${candidateFences})`,\n };\n }\n\n // Anchors stay identical across languages: each translated heading is\n // pinned to its source heading's id (see `anchors.ts`).\n const body = pinHeadingAnchors(source.content, rawBody).text;\n\n if (!sourceHasFrontmatter) {\n // A frontmatter-less source writes the body alone; any frontmatter the\n // agent invented is dropped with it.\n return { ok: true, text: body };\n }\n\n // Reconciliation by reconstruction: start from the SOURCE data and overlay\n // only the translatable key paths where both sides hold a string and the\n // translation is non-empty.\n const data: FrontmatterData = structuredClone(source.data);\n for (const path of TRANSLATABLE_KEY_PATHS) {\n const original = getPath(source.data, path);\n const translated = getPath(parsed.data, path);\n if (\n isString(original) &&\n isString(translated) &&\n translated.trim() !== \"\"\n ) {\n setPath(data, path, translated);\n }\n }\n dropCanonical(data);\n\n return {\n ok: true,\n text: ensureTrailingNewline(matter.stringify(body, data)),\n };\n};\n\n/** A meta-batch parse: recovered titles by key, plus the keys still missing. */\nexport interface MetaTitlesResult {\n titles: Record<string, string>;\n missing: string[];\n}\n\n/**\n * Extract translated sidebar titles from a meta reply: tolerant first-`{`\n * to-last-`}` extraction (the eval `parseVerdict` idiom). Keys missing or\n * non-string in the reply land in `missing`, so a batch can partially succeed.\n */\nexport const parseMetaTitles = (\n agentText: string,\n expectedKeys: readonly string[]\n): MetaTitlesResult => {\n const start = agentText.indexOf(\"{\");\n const end = agentText.lastIndexOf(\"}\");\n let parsed: FrontmatterValue | undefined;\n if (start !== -1 && end > start) {\n try {\n parsed = JSON.parse(agentText.slice(start, end + 1));\n } catch {\n parsed = undefined;\n }\n }\n const record: FrontmatterData = isKeyedObject(parsed) ? parsed : {};\n\n const titles: Record<string, string> = {};\n const missing: string[] = [];\n for (const key of expectedKeys) {\n const value = record[key];\n if (isString(value) && value.trim() !== \"\") {\n titles[key] = value;\n } else {\n missing.push(key);\n }\n }\n return { missing, titles };\n};\n",
|
|
14
14
|
"import { existsSync, readdirSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\n\nimport { extname, join, relative } from \"pathe\";\n\nimport { localeCodes, localeTargetPath } from \"../core/i18n.ts\";\nimport { scanProject } from \"../core/project-graph.ts\";\nimport type { BlumeProject } from \"../core/project-graph.ts\";\nimport type { Diagnostic, PageRecord } from \"../core/types.ts\";\nimport { hashSource } from \"./ledger.ts\";\nimport type { TranslationLedger } from \"./ledger.ts\";\nimport { discoverTranslatableMeta, metaTargetPath } from \"./meta.ts\";\nimport type { TranslatableMeta } from \"./meta.ts\";\n\n/**\n * Classification of every (source, target locale) pair:\n * - `missing` — no non-fallback page record for (translationKey, locale).\n * Existence is the graph record, never a disk probe, so a hand-authored\n * translation at a non-canonical name still counts as existing.\n * - `stale` — a record exists, but the ledger hash differs from the current\n * source hash (the source changed since its last translation).\n * - up-to-date — hashes match (counted, not itemized).\n * - untracked — a record exists with no ledger entry: a pre-existing human\n * translation. Adopted (stamped at the current hash), never overwritten;\n * only `--force` retranslates it.\n */\nexport type WorkStatus = \"missing\" | \"stale\";\n\nexport interface PageWorkItem {\n kind: \"page\";\n /** Target locale code (configured casing). */\n locale: string;\n /** Absolute path of the default-locale source file. */\n sourcePath: string;\n /** POSIX root-relative source path — the ledger key. */\n sourceRel: string;\n status: WorkStatus;\n /**\n * Absolute target path: an existing translation's own file (which can sit\n * at a non-canonical name, like a hand-written `fr/guide.md` for\n * `guide.mdx`), otherwise the canonical `localeTargetPath`.\n */\n targetPath: string;\n /** POSIX root-relative target path, for display. */\n targetRel: string;\n /** Copy the file unchanged instead of translating it — a non-markdown\n * include partial (code embed) has no prose, but must still exist in each\n * locale tree so the translated pages' relative includes resolve. */\n verbatim?: boolean;\n}\n\n/** One meta file needing its title in one locale, inside a `MetaWorkItem`. */\nexport interface MetaWorkEntry {\n meta: TranslatableMeta;\n status: WorkStatus;\n /** Absolute path of the per-locale meta module (see `metaTargetPath`). */\n targetPath: string;\n}\n\n/** All of one locale's needed meta titles — a single agent call. */\nexport interface MetaWorkItem {\n kind: \"meta\";\n entries: MetaWorkEntry[];\n locale: string;\n}\n\nexport type WorkItem = MetaWorkItem | PageWorkItem;\n\n/** A pre-existing translation with no ledger entry, to adopt (stamp) as-is. */\nexport interface UntrackedEntry {\n /** The current source hash to stamp. */\n hash: string;\n kind: \"meta\" | \"page\";\n locale: string;\n sourceRel: string;\n}\n\nexport interface TranslateWorkList {\n diagnostics: Diagnostic[];\n items: WorkItem[];\n /** Every ledger key in the current universe (for pruning). */\n knownSources: Set<string>;\n /** The locales this run targets (configured casing, default excluded). */\n targetLocales: string[];\n untracked: UntrackedEntry[];\n /** Count of (source, locale) pairs already translated and current. */\n upToDate: number;\n}\n\nconst PAGE_EXTENSIONS = new Set([\".md\", \".mdx\"]);\n\n/**\n * The names in each content root, read once per root: a locale folder authored\n * in another casing (`pt-br/` for `pt-BR`) is where `localeTargetPath` puts\n * that locale's translations.\n */\nconst rootFolders = (): ((contentRoot: string) => string[]) => {\n const read = new Map<string, string[]>();\n return (contentRoot) => {\n const cached = read.get(contentRoot);\n if (cached) {\n return cached;\n }\n const names = readdirSync(contentRoot);\n read.set(contentRoot, names);\n return names;\n };\n};\n\n/**\n * Scan the project for a translation run: drafts included. A production\n * (`build`) scan drops them, so a hand-written translation marked\n * `draft: true` would look missing and be overwritten, and a source page\n * drafted for a while would lose its ledger stamps — its outdated\n * translations then reading as current once it's published again. A dev scan\n * keeps drafts and differs only in reusing cached remote content, which\n * translation never reads.\n */\nexport const scanForTranslation = (root: string): Promise<BlumeProject> =>\n scanProject(root, { mode: \"dev\" });\n\n/**\n * The translatable page universe: filesystem-backed default-locale pages.\n * Remote/staged sources have no writable path; fallback records are padding;\n * a `.$.` shared file already materializes into every locale.\n */\nconst translatablePages = (\n project: BlumeProject,\n i18n: NonNullable<BlumeProject[\"config\"][\"i18n\"]>\n): {\n page: PageRecord;\n contentRoot: string;\n ext: string;\n sourcePath: string;\n}[] => {\n const rootsByName = new Map(\n project.sources.flatMap((source) =>\n source.staged || !source.contentRoot\n ? []\n : [[source.name, source.contentRoot] as const]\n )\n );\n const seen = new Set<string>();\n const universe: {\n page: PageRecord;\n contentRoot: string;\n ext: string;\n sourcePath: string;\n }[] = [];\n for (const page of project.graph.pages) {\n if (\n page.locale !== i18n.defaultLocale ||\n page.fallback ||\n !page.sourcePath ||\n seen.has(page.sourcePath) ||\n // Archived snapshots are frozen and carry their own translations —\n // they are never (re)translated. (`localeTargetPath` would also compute\n // `fr/v1.0/…` where the snapshot's translation lives at `v1.0/fr/…`.)\n page.version !== \"\"\n ) {\n continue;\n }\n const ext = extname(page.sourcePath);\n const base = page.sourcePath.slice(0, page.sourcePath.length - ext.length);\n const contentRoot = rootsByName.get(page.source.name);\n if (!PAGE_EXTENSIONS.has(ext) || base.endsWith(\".$\") || !contentRoot) {\n continue;\n }\n seen.add(page.sourcePath);\n universe.push({ contentRoot, ext, page, sourcePath: page.sourcePath });\n }\n return universe;\n};\n\n/** Outcome of classifying one (source, locale) pair against the ledger:\n * a work status, an existing translation to adopt, or already current. */\ntype PairOutcome = WorkStatus | \"current\" | \"untracked\";\n\n/** The shared pair classifier — see the WorkStatus doc for the taxonomy. */\nconst classifyPair = (\n exists: boolean,\n stamp: string | undefined,\n hash: string,\n force: boolean\n): PairOutcome => {\n if (!exists) {\n return \"missing\";\n }\n if (stamp === undefined) {\n return force ? \"stale\" : \"untracked\";\n }\n return stamp !== hash || force ? \"stale\" : \"current\";\n};\n\n/** The classified work for the include partials the pages reference. */\ninterface PartialWork {\n items: PageWorkItem[];\n /** Ledger keys to add to the run's known-source universe. */\n sources: string[];\n untracked: UntrackedEntry[];\n upToDate: number;\n}\n\n/**\n * Work for the include partials referenced by the translatable pages. Under\n * the `dir` parser each locale is its own tree, so a translated page's\n * relative `<include>` resolves *inside the locale tree* — the partial must\n * exist there too, or the next build fails with BLUME_INCLUDE_NOT_FOUND on\n * every locale. (Under `dot` the translated file sits beside its source and\n * the shared partial already resolves; nothing to do.) Markdown partials are\n * translated like pages; anything else (code embeds) is copied verbatim. A\n * partial that is itself a page is skipped — its own translation already\n * lands at the mirrored path. Existence is a disk probe: partials have no\n * page records to consult.\n */\nconst partialWorkItems = async (\n universe: ReturnType<typeof translatablePages>,\n project: BlumeProject,\n i18n: NonNullable<BlumeProject[\"config\"][\"i18n\"]>,\n ledger: TranslationLedger,\n targetLocales: string[],\n force: boolean\n): Promise<PartialWork> => {\n const work: PartialWork = {\n items: [],\n sources: [],\n untracked: [],\n upToDate: 0,\n };\n if (i18n.parser !== \"dir\") {\n return work;\n }\n const { root } = project.context;\n const pagePaths = new Set(\n project.graph.pages.flatMap((page) =>\n page.sourcePath ? [page.sourcePath] : []\n )\n );\n const folders = rootFolders();\n const partials = new Map<string, string>();\n for (const { page, contentRoot } of universe) {\n for (const partial of page.includes ?? []) {\n if (!(pagePaths.has(partial) || partials.has(partial))) {\n partials.set(partial, contentRoot);\n }\n }\n }\n for (const [partialPath, contentRoot] of partials) {\n const sourceRel = relative(root, partialPath);\n work.sources.push(sourceRel);\n // oxlint-disable-next-line no-await-in-loop -- one read per partial\n const hash = hashSource(await readFile(partialPath, \"utf-8\"));\n const ext = extname(partialPath);\n const verbatim = !PAGE_EXTENSIONS.has(ext.toLowerCase());\n const contentRel = relative(contentRoot, partialPath);\n for (const locale of targetLocales) {\n const targetPath = join(\n contentRoot,\n localeTargetPath(contentRel, ext, locale, i18n, folders(contentRoot))\n );\n const item = (status: WorkStatus): PageWorkItem => {\n const partialItem: PageWorkItem = {\n kind: \"page\",\n locale,\n sourcePath: partialPath,\n sourceRel,\n status,\n targetPath,\n targetRel: relative(root, targetPath),\n };\n if (verbatim) {\n partialItem.verbatim = true;\n }\n return partialItem;\n };\n const stamp = ledger.files[sourceRel]?.[locale];\n const outcome = classifyPair(existsSync(targetPath), stamp, hash, force);\n if (outcome === \"untracked\") {\n work.untracked.push({ hash, kind: \"page\", locale, sourceRel });\n } else if (outcome === \"current\") {\n work.upToDate += 1;\n } else {\n work.items.push(item(outcome));\n }\n }\n }\n return work;\n};\n\n/**\n * Every existing translation, keyed by `translationKey` and locale, with the\n * file it was read from when that file is on disk in a filesystem source. A\n * retranslation writes there: an adopted hand-written `fr/guide.md` for a\n * `guide.mdx` source is replaced in place, never joined by a canonical\n * `fr/guide.mdx` that would publish the route twice.\n */\nconst existingTranslations = (\n project: BlumeProject\n): Map<string, string | undefined> => {\n const writableSources = new Set(\n project.sources.flatMap((source) =>\n source.staged || !source.contentRoot ? [] : [source.name]\n )\n );\n const translated = new Map<string, string | undefined>();\n for (const page of project.graph.pages) {\n const key = `${page.translationKey}\\0${page.locale}`;\n if (page.fallback || translated.has(key)) {\n continue;\n }\n translated.set(\n key,\n page.sourcePath && writableSources.has(page.source.name)\n ? page.sourcePath\n : undefined\n );\n }\n return translated;\n};\n\n/**\n * Compute the run's work: which (source, locale) pairs are missing or stale,\n * which existing translations to adopt, and what's already up to date.\n * `force` promotes every pair to work; `locales` narrows the targets.\n */\nexport const computeWorkList = async (\n project: BlumeProject,\n ledger: TranslationLedger,\n options: { force?: boolean; locales?: string[] } = {}\n): Promise<TranslateWorkList> => {\n const { i18n } = project.config;\n if (!i18n) {\n return {\n diagnostics: [],\n items: [],\n knownSources: new Set(),\n targetLocales: [],\n untracked: [],\n upToDate: 0,\n };\n }\n const targetLocales = localeCodes(i18n).filter(\n (code) =>\n code !== i18n.defaultLocale &&\n (options.locales === undefined || options.locales.includes(code))\n );\n\n const translated = existingTranslations(project);\n\n const { root } = project.context;\n const knownSources = new Set<string>();\n const untracked: UntrackedEntry[] = [];\n const pageItems: PageWorkItem[] = [];\n let upToDate = 0;\n\n const universe = translatablePages(project, i18n);\n const folders = rootFolders();\n\n for (const { page, contentRoot, ext, sourcePath } of universe) {\n const sourceRel = relative(root, sourcePath);\n knownSources.add(sourceRel);\n // oxlint-disable-next-line no-await-in-loop -- one read per source file\n const hash = hashSource(await readFile(sourcePath, \"utf-8\"));\n const contentRel = relative(contentRoot, sourcePath);\n\n for (const locale of targetLocales) {\n const key = `${page.translationKey}\\0${locale}`;\n const targetPath =\n translated.get(key) ??\n join(\n contentRoot,\n localeTargetPath(contentRel, ext, locale, i18n, folders(contentRoot))\n );\n const item = (status: WorkStatus): PageWorkItem => ({\n kind: \"page\",\n locale,\n sourcePath,\n sourceRel,\n status,\n targetPath,\n targetRel: relative(root, targetPath),\n });\n const exists = translated.has(key);\n const stamp = ledger.files[sourceRel]?.[locale];\n const outcome = classifyPair(exists, stamp, hash, options.force === true);\n if (outcome === \"untracked\") {\n untracked.push({ hash, kind: \"page\", locale, sourceRel });\n } else if (outcome === \"current\") {\n upToDate += 1;\n } else {\n pageItems.push(item(outcome));\n }\n }\n }\n\n const partialWork = await partialWorkItems(\n universe,\n project,\n i18n,\n ledger,\n targetLocales,\n options.force ?? false\n );\n for (const rel of partialWork.sources) {\n knownSources.add(rel);\n }\n pageItems.push(...partialWork.items);\n untracked.push(...partialWork.untracked);\n upToDate += partialWork.upToDate;\n\n const meta = await discoverTranslatableMeta(project);\n const metaItems: MetaWorkItem[] = [];\n for (const locale of targetLocales) {\n const entries: MetaWorkEntry[] = [];\n for (const source of meta.metas) {\n knownSources.add(source.sourceRel);\n // The locale folder's existing meta module when there is one, so a\n // retranslation rewrites it instead of adding a `meta.ts` beside it.\n const targetPath = metaTargetPath(\n source,\n locale,\n i18n,\n folders(source.contentRoot)\n );\n const exists = existsSync(targetPath);\n const hash = hashSource(source.raw);\n const stamp = ledger.files[source.sourceRel]?.[locale];\n const entry = (status: WorkStatus): MetaWorkEntry => ({\n meta: source,\n status,\n targetPath,\n });\n const outcome = classifyPair(exists, stamp, hash, options.force === true);\n if (outcome === \"untracked\") {\n untracked.push({\n hash,\n kind: \"meta\",\n locale,\n sourceRel: source.sourceRel,\n });\n } else if (outcome === \"current\") {\n upToDate += 1;\n } else {\n entries.push(entry(outcome));\n }\n }\n if (entries.length > 0) {\n metaItems.push({ entries, kind: \"meta\", locale });\n }\n }\n\n pageItems.sort((a, b) =>\n a.sourceRel === b.sourceRel\n ? a.locale.localeCompare(b.locale)\n : a.sourceRel.localeCompare(b.sourceRel)\n );\n metaItems.sort((a, b) => a.locale.localeCompare(b.locale));\n\n return {\n diagnostics: meta.diagnostics,\n items: [...pageItems, ...metaItems],\n knownSources,\n targetLocales,\n untracked,\n upToDate,\n };\n};\n"
|
|
15
15
|
],
|
|
16
|
-
"mappings": "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",
|
|
17
|
-
"debugId": "
|
|
16
|
+
"mappings": "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",
|
|
17
|
+
"debugId": "7CBDF68DDB18B6AB64756E2164756E21",
|
|
18
18
|
"names": []
|
|
19
19
|
}
|