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.
Files changed (397) hide show
  1. package/CHANGELOG.md +94 -0
  2. package/dist/cli/{chunk-5cg2rzgf.js → chunk-073rdvgb.js} +19 -48
  3. package/dist/cli/{chunk-5cg2rzgf.js.map → chunk-073rdvgb.js.map} +4 -5
  4. package/dist/cli/{chunk-ga0pf4aj.js → chunk-0n9xkp3d.js} +12 -3
  5. package/dist/cli/{chunk-ga0pf4aj.js.map → chunk-0n9xkp3d.js.map} +3 -3
  6. package/dist/cli/chunk-150jk7km.js +52 -0
  7. package/dist/cli/chunk-150jk7km.js.map +10 -0
  8. package/dist/cli/{chunk-rekqz4qg.js → chunk-313vnn40.js} +16 -15
  9. package/dist/cli/chunk-313vnn40.js.map +10 -0
  10. package/dist/cli/{chunk-gp84za0h.js → chunk-3v3ffbrj.js} +2 -2
  11. package/dist/cli/{chunk-9xr4dgee.js → chunk-3x6x3pph.js} +29 -16
  12. package/dist/cli/chunk-3x6x3pph.js.map +10 -0
  13. package/dist/cli/{chunk-0gz36akr.js → chunk-42t4jxdx.js} +21 -5
  14. package/dist/cli/chunk-42t4jxdx.js.map +12 -0
  15. package/dist/cli/{chunk-ta27feev.js → chunk-54ztw1nj.js} +21 -2
  16. package/dist/cli/chunk-54ztw1nj.js.map +10 -0
  17. package/dist/cli/{chunk-jnwj5kjj.js → chunk-5vjtgs6e.js} +20 -7
  18. package/dist/cli/{chunk-jnwj5kjj.js.map → chunk-5vjtgs6e.js.map} +3 -3
  19. package/dist/cli/chunk-66w9j7p6.js +322 -0
  20. package/dist/cli/chunk-66w9j7p6.js.map +14 -0
  21. package/dist/cli/{chunk-nd1821sk.js → chunk-7ppf1rva.js} +32 -18
  22. package/dist/cli/chunk-7ppf1rva.js.map +10 -0
  23. package/dist/cli/{chunk-p804f3pe.js → chunk-8y2kmjv8.js} +6 -6
  24. package/dist/cli/{chunk-2f7n4qzt.js → chunk-c1y538kd.js} +1 -1
  25. package/dist/cli/{chunk-1n228xqb.js → chunk-c887fj0s.js} +2 -2
  26. package/dist/cli/{chunk-y5h4r2y0.js → chunk-cfyg47zg.js} +15 -5
  27. package/dist/cli/chunk-cfyg47zg.js.map +10 -0
  28. package/dist/cli/{chunk-cmtcnh9f.js → chunk-dzwehpy7.js} +2 -2
  29. package/dist/cli/{chunk-h2a48yhd.js → chunk-e6atmn4h.js} +119 -15
  30. package/dist/cli/{chunk-h2a48yhd.js.map → chunk-e6atmn4h.js.map} +10 -10
  31. package/dist/cli/{chunk-5ffywsmb.js → chunk-e8xw9qkh.js} +8 -6
  32. package/dist/cli/{chunk-5ffywsmb.js.map → chunk-e8xw9qkh.js.map} +3 -3
  33. package/dist/cli/{chunk-ntv4qrt7.js → chunk-e9q7a2ak.js} +14 -14
  34. package/dist/cli/{chunk-xkz5xbtv.js → chunk-ehweg4fr.js} +2366 -1114
  35. package/dist/cli/chunk-ehweg4fr.js.map +218 -0
  36. package/dist/cli/{chunk-zf748avv.js → chunk-ep6nd0rn.js} +176 -281
  37. package/dist/cli/{chunk-zf748avv.js.map → chunk-ep6nd0rn.js.map} +11 -12
  38. package/dist/cli/{chunk-yxmk4pec.js → chunk-fdrkhpjy.js} +16 -15
  39. package/dist/cli/{chunk-yxmk4pec.js.map → chunk-fdrkhpjy.js.map} +3 -3
  40. package/dist/cli/{chunk-5wj2qwn2.js → chunk-ft9vfys6.js} +4 -4
  41. package/dist/cli/{chunk-4h8z9vv5.js → chunk-gb420vvz.js} +89 -46
  42. package/dist/cli/chunk-gb420vvz.js.map +17 -0
  43. package/dist/cli/{chunk-713mngdq.js → chunk-hebn0tpx.js} +76 -10
  44. package/dist/cli/chunk-hebn0tpx.js.map +14 -0
  45. package/dist/cli/{chunk-2n4ps1b3.js → chunk-htrwgabr.js} +40 -22
  46. package/dist/cli/chunk-htrwgabr.js.map +15 -0
  47. package/dist/cli/{chunk-zhvd6adm.js → chunk-hx3xqnk9.js} +13 -13
  48. package/dist/cli/chunk-j134vrp2.js +65 -0
  49. package/dist/cli/chunk-j134vrp2.js.map +10 -0
  50. package/dist/cli/{chunk-y4ykbark.js → chunk-kma9f6sf.js} +2 -2
  51. package/dist/cli/{chunk-py62fewh.js → chunk-mrcccgnh.js} +3 -3
  52. package/dist/cli/{chunk-2f3ndkpw.js → chunk-n0v7m8ry.js} +3 -3
  53. package/dist/cli/{chunk-43zcf4gz.js → chunk-ncj7w596.js} +522 -353
  54. package/dist/cli/chunk-ncj7w596.js.map +35 -0
  55. package/dist/cli/{chunk-9geymqns.js → chunk-nq1d20w2.js} +14 -14
  56. package/dist/cli/{chunk-g2z9x01v.js → chunk-nrns10mj.js} +3 -3
  57. package/dist/cli/{chunk-e7vvk5ya.js → chunk-sds923fa.js} +3 -3
  58. package/dist/cli/{chunk-cy5bm0j0.js → chunk-t2m5j4pr.js} +2 -2
  59. package/dist/cli/{chunk-cy5bm0j0.js.map → chunk-t2m5j4pr.js.map} +1 -1
  60. package/dist/cli/{chunk-yj17vs39.js → chunk-tdqhyxfz.js} +5 -5
  61. package/dist/cli/{chunk-q3wxxq39.js → chunk-tphac74f.js} +5 -5
  62. package/dist/cli/{chunk-6bm0xpgd.js → chunk-w1r4vase.js} +2 -2
  63. package/dist/cli/index.js +24 -19
  64. package/dist/cli/index.js.map +3 -3
  65. package/dist/types/ai/ask-context.d.ts +6 -2
  66. package/dist/types/ai/component-markdown.d.ts +2 -0
  67. package/dist/types/ai/openapi-components.d.ts +4 -1
  68. package/dist/types/astro/integration.d.ts +5 -4
  69. package/dist/types/astro/markdown-negotiation.d.ts +3 -0
  70. package/dist/types/astro/pages.d.ts +10 -0
  71. package/dist/types/cli/init/scaffold.d.ts +1 -1
  72. package/dist/types/components/content/api-field.d.ts +4 -1
  73. package/dist/types/components/content/api-page.d.ts +6 -1
  74. package/dist/types/components/openapi/code-samples.d.ts +29 -0
  75. package/dist/types/components/openapi/helpers.d.ts +22 -1
  76. package/dist/types/components/openapi/security.d.ts +10 -0
  77. package/dist/types/components/openapi/snippets.d.ts +60 -0
  78. package/dist/types/core/changelog-index.d.ts +8 -0
  79. package/dist/types/core/config-input.d.ts +30 -3
  80. package/dist/types/core/data.d.ts +4 -0
  81. package/dist/types/core/i18n-ui.d.ts +2 -0
  82. package/dist/types/core/links.d.ts +8 -0
  83. package/dist/types/core/probe.d.ts +2 -0
  84. package/dist/types/core/project-graph.d.ts +6 -0
  85. package/dist/types/core/redirect-patterns.d.ts +11 -3
  86. package/dist/types/core/schema.d.ts +119 -0
  87. package/dist/types/core/sources/cache.d.ts +3 -0
  88. package/dist/types/core/sources/contentful-rich-text.d.ts +11 -2
  89. package/dist/types/core/sources/contentful.d.ts +17 -1
  90. package/dist/types/core/sources/lexical.d.ts +5 -0
  91. package/dist/types/core/sources/normalize.d.ts +20 -1
  92. package/dist/types/core/sources/remote.d.ts +37 -10
  93. package/dist/types/core/sources/sanity.d.ts +1 -1
  94. package/dist/types/core/types.d.ts +17 -0
  95. package/dist/types/deploy/adapter-output.d.ts +2 -1
  96. package/dist/types/deploy/adapters/cloudflare.d.ts +7 -5
  97. package/dist/types/deploy/adapters/node.d.ts +58 -23
  98. package/dist/types/deploy/adapters/registry.d.ts +10 -0
  99. package/dist/types/deploy/adapters/types.d.ts +3 -2
  100. package/dist/types/deploy/platforms/cloudflare.d.ts +10 -7
  101. package/dist/types/deploy/platforms/node.d.ts +3 -1
  102. package/dist/types/deploy/platforms/types.d.ts +18 -7
  103. package/dist/types/deploy/platforms/vercel.d.ts +20 -1
  104. package/dist/types/deploy/redirects.d.ts +17 -1
  105. package/dist/types/deploy/sitemap.d.ts +2 -1
  106. package/dist/types/deploy/vercel-negotiation.d.ts +42 -21
  107. package/dist/types/openapi/checks.d.ts +27 -0
  108. package/dist/types/openapi/graphql.d.ts +6 -0
  109. package/dist/types/openapi/model.d.ts +15 -4
  110. package/dist/types/openapi/parse.d.ts +3 -0
  111. package/dist/types/openapi/references.d.ts +16 -0
  112. package/dist/types/ratelimit/index.d.ts +1 -1
  113. package/dist/types/ratelimit/schema.d.ts +8 -0
  114. package/dist/types/ratelimit/upstash.d.ts +39 -14
  115. package/dist/types/reference/graphql.d.ts +76 -1
  116. package/dist/types/reference/index.d.ts +1 -1
  117. package/dist/types/reference/openapi.d.ts +2 -2
  118. package/dist/types/reference/options.d.ts +37 -1
  119. package/dist/types/reference/schema.d.ts +84 -0
  120. package/dist/types/search/adapters/registry.d.ts +3 -0
  121. package/dist/types/search/adapters/typesense.d.ts +14 -4
  122. package/dist/types/search/build.d.ts +3 -1
  123. package/dist/types/search/orama-index.d.ts +9 -9
  124. package/dist/types/search/sync/algolia.d.ts +5 -2
  125. package/dist/types/search/sync/index.d.ts +3 -1
  126. package/dist/types/search/sync/typesense.d.ts +11 -7
  127. package/dist/types/sources/contentful.d.ts +16 -0
  128. package/dist/types/sources/github-releases.d.ts +8 -1
  129. package/dist/types/sources/payload.d.ts +2 -0
  130. package/dist/types/sources/registry.d.ts +54 -0
  131. package/dist/types/sources/shared.d.ts +3 -0
  132. package/dist/types/sources/strapi.d.ts +2 -0
  133. package/docs/01-quickstart.mdx +4 -2
  134. package/docs/02-deployment.mdx +31 -13
  135. package/docs/advanced/changelog.mdx +11 -0
  136. package/docs/advanced/skills.mdx +1 -1
  137. package/docs/cli/audit.mdx +30 -7
  138. package/docs/cli/doctor.mdx +5 -1
  139. package/docs/cli/evals.mdx +4 -4
  140. package/docs/cli/translate.mdx +1 -0
  141. package/docs/cli/validate.mdx +4 -3
  142. package/docs/configuration/analytics.mdx +1 -1
  143. package/docs/configuration/assistant.mdx +6 -2
  144. package/docs/configuration/customization.mdx +4 -2
  145. package/docs/configuration/export.mdx +5 -3
  146. package/docs/configuration/index.mdx +3 -2
  147. package/docs/configuration/rate-limiting.mdx +23 -2
  148. package/docs/configuration/search.mdx +37 -14
  149. package/docs/content/components.mdx +2 -2
  150. package/docs/content/frontmatter.mdx +5 -3
  151. package/docs/content/i18n.mdx +2 -2
  152. package/docs/content/includes.mdx +1 -1
  153. package/docs/content/navigation.mdx +4 -4
  154. package/docs/content/sources/contentful.mdx +7 -4
  155. package/docs/content/sources/custom.mdx +7 -3
  156. package/docs/content/sources/github-releases.mdx +10 -2
  157. package/docs/content/sources/index.mdx +3 -3
  158. package/docs/content/sources/notion.mdx +1 -1
  159. package/docs/content/sources/obsidian.mdx +1 -1
  160. package/docs/content/sources/payload.mdx +3 -2
  161. package/docs/content/sources/remote-mdx.mdx +4 -0
  162. package/docs/content/sources/sanity.mdx +2 -2
  163. package/docs/content/sources/strapi.mdx +3 -2
  164. package/docs/content/syntax.mdx +2 -2
  165. package/docs/discoverability/agent-discovery.mdx +1 -1
  166. package/docs/discoverability/index.mdx +1 -1
  167. package/docs/discoverability/json-api.mdx +2 -0
  168. package/docs/discoverability/llms-txt.mdx +1 -1
  169. package/docs/discoverability/markdown.mdx +3 -1
  170. package/docs/discoverability/mcp.mdx +4 -0
  171. package/docs/discoverability/sitemap-and-robots.mdx +1 -1
  172. package/docs/references/api-pages.mdx +1 -1
  173. package/docs/references/asyncapi.mdx +3 -1
  174. package/docs/references/graphql.mdx +13 -1
  175. package/docs/references/openapi.mdx +50 -8
  176. package/package.json +9 -9
  177. package/skills/blume-migrate/SKILL.md +1 -1
  178. package/skills/blume-migrate/references/docusaurus.md +4 -4
  179. package/skills/blume-migrate/references/fumadocs.md +17 -13
  180. package/skills/blume-migrate/references/nextra.md +8 -5
  181. package/skills/blume-migrate/references/starlight.md +9 -7
  182. package/src/ai/ask-context.ts +33 -3
  183. package/src/ai/ask-limits.ts +13 -0
  184. package/src/ai/changelog-markdown.ts +11 -6
  185. package/src/ai/component-markdown.ts +1 -1
  186. package/src/ai/cors.ts +12 -3
  187. package/src/ai/mcp/query.ts +14 -6
  188. package/src/ai/openapi-components.ts +28 -4
  189. package/src/ai/relative-links.ts +4 -38
  190. package/src/astro/generate.ts +78 -48
  191. package/src/astro/integration.ts +16 -13
  192. package/src/astro/markdown-negotiation.ts +3 -0
  193. package/src/astro/module-types.ts +3 -1
  194. package/src/astro/pages.ts +23 -0
  195. package/src/astro/templates.ts +125 -80
  196. package/src/audit/catalog.ts +19 -3
  197. package/src/audit/checks/links.ts +14 -1
  198. package/src/audit/checks/network.ts +110 -6
  199. package/src/audit/checks/redirects.ts +6 -4
  200. package/src/audit/checks/robots.ts +58 -2
  201. package/src/audit/run.ts +3 -0
  202. package/src/audit/types.ts +2 -0
  203. package/src/audit/url.ts +14 -5
  204. package/src/blume-modules.d.ts +5 -1
  205. package/src/cli/args.ts +51 -0
  206. package/src/cli/build-failure.ts +23 -0
  207. package/src/cli/commands/audit.ts +10 -1
  208. package/src/cli/commands/dev.ts +18 -2
  209. package/src/cli/commands/doctor.ts +45 -12
  210. package/src/cli/commands/eval.ts +36 -4
  211. package/src/cli/commands/init.ts +6 -4
  212. package/src/cli/commands/validate.ts +10 -1
  213. package/src/cli/init/scaffold.ts +3 -3
  214. package/src/cli/prepare.ts +6 -3
  215. package/src/cli/required-secrets.ts +1 -1
  216. package/src/components/content/ApiPlayground.astro +6 -2
  217. package/src/components/content/api-field.ts +4 -1
  218. package/src/components/content/api-page.ts +31 -7
  219. package/src/components/content/mermaid-element.ts +15 -1
  220. package/src/components/islands/hooks.ts +27 -1
  221. package/src/components/layout/PageActions.astro +139 -24
  222. package/src/components/layout/RootLayout.astro +10 -2
  223. package/src/components/layout/Search.astro +17 -3
  224. package/src/components/layout/TableOfContents.astro +24 -17
  225. package/src/components/layout/head-scripts.ts +6 -1
  226. package/src/components/layout/search/algolia.ts +10 -1
  227. package/src/components/layout/search/analytics.ts +42 -14
  228. package/src/components/layout/search/endpoint.ts +48 -5
  229. package/src/components/layout/search/pagefind.ts +114 -5
  230. package/src/components/layout/search/types.ts +12 -0
  231. package/src/components/layout/search/typesense.ts +18 -6
  232. package/src/components/openapi/AsyncApiOperation.astro +14 -7
  233. package/src/components/openapi/Authorization.astro +10 -0
  234. package/src/components/openapi/GraphqlOperation.astro +5 -0
  235. package/src/components/openapi/Operation.astro +24 -1
  236. package/src/components/openapi/ParametersTable.astro +8 -4
  237. package/src/components/openapi/Playground.astro +7 -1
  238. package/src/components/openapi/RequestBody.astro +19 -2
  239. package/src/components/openapi/Responses.astro +1 -0
  240. package/src/components/openapi/SchemaTable.astro +15 -3
  241. package/src/components/openapi/async-snippets.ts +61 -5
  242. package/src/components/openapi/async.ts +123 -29
  243. package/src/components/openapi/graphql-helpers.ts +35 -12
  244. package/src/components/openapi/helpers.ts +36 -2
  245. package/src/components/openapi/message-model.ts +54 -11
  246. package/src/components/openapi/message.ts +14 -4
  247. package/src/components/openapi/operation-model.ts +16 -7
  248. package/src/components/openapi/playground-client.ts +24 -5
  249. package/src/components/openapi/playground-schema.ts +1 -1
  250. package/src/components/openapi/schema-tree.ts +44 -14
  251. package/src/components/openapi/security.ts +10 -0
  252. package/src/components/openapi/snippets.ts +5 -3
  253. package/src/components/openapi/validate-json.ts +4 -3
  254. package/src/core/changelog-index.ts +31 -1
  255. package/src/core/component-diagnostics.ts +53 -0
  256. package/src/core/component-overrides.ts +32 -0
  257. package/src/core/config-input.ts +31 -3
  258. package/src/core/data.ts +2 -0
  259. package/src/core/diagnostics.ts +5 -0
  260. package/src/core/i18n-ui.ts +2 -0
  261. package/src/core/includes.ts +1 -1
  262. package/src/core/links.ts +47 -17
  263. package/src/core/probe.ts +26 -6
  264. package/src/core/project-graph.ts +59 -18
  265. package/src/core/redirect-patterns.ts +36 -7
  266. package/src/core/schema.ts +21 -2
  267. package/src/core/sources/cache.ts +6 -0
  268. package/src/core/sources/contentful-rich-text.ts +29 -6
  269. package/src/core/sources/contentful.ts +135 -25
  270. package/src/core/sources/filesystem.ts +26 -4
  271. package/src/core/sources/github-releases.ts +12 -1
  272. package/src/core/sources/lexical.ts +15 -10
  273. package/src/core/sources/mdx-remote.ts +62 -10
  274. package/src/core/sources/normalize.ts +227 -41
  275. package/src/core/sources/notion.ts +7 -1
  276. package/src/core/sources/obsidian.ts +16 -3
  277. package/src/core/sources/payload.ts +38 -15
  278. package/src/core/sources/remote.ts +72 -15
  279. package/src/core/sources/resolve.ts +11 -1
  280. package/src/core/sources/sanity.ts +43 -25
  281. package/src/core/sources/strapi.ts +2 -2
  282. package/src/core/types.ts +18 -0
  283. package/src/core/ui-packs/ar.ts +1 -0
  284. package/src/core/ui-packs/bg.ts +1 -0
  285. package/src/core/ui-packs/bn.ts +1 -0
  286. package/src/core/ui-packs/ca.ts +1 -0
  287. package/src/core/ui-packs/cs.ts +1 -0
  288. package/src/core/ui-packs/da.ts +1 -0
  289. package/src/core/ui-packs/de.ts +1 -0
  290. package/src/core/ui-packs/el.ts +1 -0
  291. package/src/core/ui-packs/es.ts +1 -0
  292. package/src/core/ui-packs/fa.ts +1 -0
  293. package/src/core/ui-packs/fi.ts +1 -0
  294. package/src/core/ui-packs/fr.ts +1 -0
  295. package/src/core/ui-packs/he.ts +1 -0
  296. package/src/core/ui-packs/hi.ts +1 -0
  297. package/src/core/ui-packs/hr.ts +1 -0
  298. package/src/core/ui-packs/hu.ts +1 -0
  299. package/src/core/ui-packs/id.ts +1 -0
  300. package/src/core/ui-packs/it.ts +1 -0
  301. package/src/core/ui-packs/ja.ts +1 -0
  302. package/src/core/ui-packs/ko.ts +1 -0
  303. package/src/core/ui-packs/nl.ts +1 -0
  304. package/src/core/ui-packs/no.ts +1 -0
  305. package/src/core/ui-packs/pl.ts +1 -0
  306. package/src/core/ui-packs/pt-br.ts +1 -0
  307. package/src/core/ui-packs/pt.ts +1 -0
  308. package/src/core/ui-packs/ro.ts +1 -0
  309. package/src/core/ui-packs/ru.ts +1 -0
  310. package/src/core/ui-packs/sk.ts +1 -0
  311. package/src/core/ui-packs/sr.ts +1 -0
  312. package/src/core/ui-packs/sv.ts +1 -0
  313. package/src/core/ui-packs/th.ts +1 -0
  314. package/src/core/ui-packs/tr.ts +1 -0
  315. package/src/core/ui-packs/uk.ts +1 -0
  316. package/src/core/ui-packs/vi.ts +1 -0
  317. package/src/core/ui-packs/zh-tw.ts +1 -0
  318. package/src/core/ui-packs/zh.ts +1 -0
  319. package/src/deploy/adapter-output.ts +7 -2
  320. package/src/deploy/adapters/cloudflare.ts +7 -5
  321. package/src/deploy/adapters/node.ts +47 -9
  322. package/src/deploy/adapters/types.ts +7 -3
  323. package/src/deploy/artifacts.ts +2 -1
  324. package/src/deploy/platforms/cloudflare.ts +13 -9
  325. package/src/deploy/platforms/netlify.ts +2 -1
  326. package/src/deploy/platforms/node.ts +12 -2
  327. package/src/deploy/platforms/types.ts +21 -7
  328. package/src/deploy/platforms/vercel.ts +113 -16
  329. package/src/deploy/redirects.ts +66 -6
  330. package/src/deploy/rss.ts +3 -1
  331. package/src/deploy/sitemap.ts +39 -5
  332. package/src/deploy/vercel-negotiation.ts +290 -102
  333. package/src/eval/agents.ts +18 -1
  334. package/src/eval/prompts.ts +6 -3
  335. package/src/eval/report.ts +34 -13
  336. package/src/eval/run.ts +5 -0
  337. package/src/markdown/relative-links.ts +3 -2
  338. package/src/openapi/checks.ts +273 -0
  339. package/src/openapi/graphql-build.ts +21 -0
  340. package/src/openapi/graphql.ts +11 -0
  341. package/src/openapi/model.ts +15 -3
  342. package/src/openapi/parse.ts +127 -2
  343. package/src/openapi/references.ts +43 -3
  344. package/src/openapi/source.ts +39 -14
  345. package/src/ratelimit/index.ts +1 -1
  346. package/src/ratelimit/runtime.ts +37 -19
  347. package/src/ratelimit/upstash.ts +40 -10
  348. package/src/reference/graphql.ts +15 -1
  349. package/src/reference/index.ts +1 -0
  350. package/src/reference/openapi.ts +2 -2
  351. package/src/reference/options.ts +29 -1
  352. package/src/registry/eject.ts +3 -1
  353. package/src/search/adapters/locale-scope.ts +30 -0
  354. package/src/search/adapters/typesense.ts +14 -4
  355. package/src/search/build.ts +21 -3
  356. package/src/search/orama-index.ts +163 -31
  357. package/src/search/source-pages.ts +29 -0
  358. package/src/search/sync/algolia.ts +99 -9
  359. package/src/search/sync/index.ts +52 -13
  360. package/src/search/sync/typesense.ts +72 -27
  361. package/src/sources/contentful.ts +12 -0
  362. package/src/sources/github-releases.ts +7 -1
  363. package/src/sources/shared.ts +3 -0
  364. package/src/theme/entry.ts +29 -3
  365. package/src/translate/validate.ts +23 -1
  366. package/dist/cli/chunk-0gz36akr.js.map +0 -12
  367. package/dist/cli/chunk-2n4ps1b3.js.map +0 -15
  368. package/dist/cli/chunk-43zcf4gz.js.map +0 -36
  369. package/dist/cli/chunk-4ejxbzee.js +0 -39
  370. package/dist/cli/chunk-4ejxbzee.js.map +0 -10
  371. package/dist/cli/chunk-4h8z9vv5.js.map +0 -16
  372. package/dist/cli/chunk-713mngdq.js.map +0 -14
  373. package/dist/cli/chunk-9xr4dgee.js.map +0 -10
  374. package/dist/cli/chunk-amrb6hgh.js +0 -145
  375. package/dist/cli/chunk-amrb6hgh.js.map +0 -11
  376. package/dist/cli/chunk-nd1821sk.js.map +0 -10
  377. package/dist/cli/chunk-rekqz4qg.js.map +0 -10
  378. package/dist/cli/chunk-ta27feev.js.map +0 -10
  379. package/dist/cli/chunk-xkz5xbtv.js.map +0 -213
  380. package/dist/cli/chunk-y5h4r2y0.js.map +0 -10
  381. /package/dist/cli/{chunk-gp84za0h.js.map → chunk-3v3ffbrj.js.map} +0 -0
  382. /package/dist/cli/{chunk-p804f3pe.js.map → chunk-8y2kmjv8.js.map} +0 -0
  383. /package/dist/cli/{chunk-2f7n4qzt.js.map → chunk-c1y538kd.js.map} +0 -0
  384. /package/dist/cli/{chunk-1n228xqb.js.map → chunk-c887fj0s.js.map} +0 -0
  385. /package/dist/cli/{chunk-cmtcnh9f.js.map → chunk-dzwehpy7.js.map} +0 -0
  386. /package/dist/cli/{chunk-ntv4qrt7.js.map → chunk-e9q7a2ak.js.map} +0 -0
  387. /package/dist/cli/{chunk-5wj2qwn2.js.map → chunk-ft9vfys6.js.map} +0 -0
  388. /package/dist/cli/{chunk-zhvd6adm.js.map → chunk-hx3xqnk9.js.map} +0 -0
  389. /package/dist/cli/{chunk-y4ykbark.js.map → chunk-kma9f6sf.js.map} +0 -0
  390. /package/dist/cli/{chunk-py62fewh.js.map → chunk-mrcccgnh.js.map} +0 -0
  391. /package/dist/cli/{chunk-2f3ndkpw.js.map → chunk-n0v7m8ry.js.map} +0 -0
  392. /package/dist/cli/{chunk-9geymqns.js.map → chunk-nq1d20w2.js.map} +0 -0
  393. /package/dist/cli/{chunk-g2z9x01v.js.map → chunk-nrns10mj.js.map} +0 -0
  394. /package/dist/cli/{chunk-e7vvk5ya.js.map → chunk-sds923fa.js.map} +0 -0
  395. /package/dist/cli/{chunk-yj17vs39.js.map → chunk-tdqhyxfz.js.map} +0 -0
  396. /package/dist/cli/{chunk-q3wxxq39.js.map → chunk-tphac74f.js.map} +0 -0
  397. /package/dist/cli/{chunk-6bm0xpgd.js.map → chunk-w1r4vase.js.map} +0 -0
@@ -4,14 +4,22 @@ import type { SearchAdapter } from "./types.ts";
4
4
  /**
5
5
  * Connection details for a self-hosted or cloud Typesense node. The browser
6
6
  * queries the collection with the search-only `apiKey`; the build-time sync
7
- * recreates the collection with `TYPESENSE_ADMIN_API_KEY`, which never enters
8
- * the config.
7
+ * rebuilds it with `TYPESENSE_ADMIN_API_KEY`, which never enters the config.
9
8
  */
10
9
  export interface TypesenseNamedOptions {
11
10
  /** The search-only API key (public — it ships to the browser). */
12
11
  apiKey: string;
12
+ /** The alias the sync points at each new collection, and searches read. */
13
13
  collection: string;
14
14
  host: string;
15
+ /**
16
+ * The language Typesense tokenizes the text fields for, as a two-letter
17
+ * code (`ja`, `zh`, `ko`, `th`, …). Typesense's default tokenizer splits on
18
+ * spaces, so text in a script written without them — Chinese, Japanese,
19
+ * Thai — only matches from the start of a run. Omitted, the fields keep
20
+ * that default.
21
+ */
22
+ locale?: string;
15
23
  /** Defaults to 443. */
16
24
  port?: number;
17
25
  /** Defaults to `https`. */
@@ -29,6 +37,7 @@ export declare const typesenseOptionsSchema: z.ZodObject<{
29
37
  apiKey: z.ZodString;
30
38
  collection: z.ZodString;
31
39
  host: z.ZodString;
40
+ locale: z.ZodOptional<z.ZodString>;
32
41
  port: z.ZodOptional<z.ZodNumber>;
33
42
  protocol: z.ZodOptional<z.ZodEnum<{
34
43
  http: "http";
@@ -36,7 +45,8 @@ export declare const typesenseOptionsSchema: z.ZodObject<{
36
45
  }>>;
37
46
  }, z.core.$catchall<z.ZodJSONSchema>>;
38
47
  /**
39
- * Hosted search on Typesense. Each `blume build` drops and recreates the
40
- * collection so deleted or renamed pages don't linger as stale hits.
48
+ * Hosted search on Typesense. Each `blume build` imports into a new
49
+ * collection and swaps the `collection` alias onto it, so deleted or renamed
50
+ * pages don't linger as stale hits and searches never read a partial index.
41
51
  */
42
52
  export declare const typesense: (options: TypesenseOptions) => TypesenseAdapter;
@@ -18,6 +18,8 @@
18
18
  * Pagefind/pagefind#1272; switch back to `writeFiles()` once a release ships
19
19
  * that fix.
20
20
  *
21
- * Returns the number of pages indexed.
21
+ * Returns the number of pages indexed: the index's own count, summed over its
22
+ * languages from `pagefind-entry.json`. `addDirectory`'s `page_count` counts
23
+ * every HTML file it read, including the ones kept out of the index.
22
24
  */
23
25
  export declare const buildSearchIndex: (outDir: string) => Promise<number>;
@@ -35,11 +35,11 @@ export interface OramaDoc {
35
35
  * so ranking is identical wherever docs are queried. `locale` — the site's
36
36
  * `i18n.defaultLocale` — swaps in a word-segmenting tokenizer for every
37
37
  * non-Latin script, all of which Orama's default tokenizer reduces to zero
38
- * tokens; the tokenizer belongs to the database, so on a mixed-locale site it
39
- * applies to every document. That is safe in one direction only: Latin words
38
+ * tokens. A non-Latin default's tokenizer serves every page: Latin words
40
39
  * survive segmentation intact, so English pages on a segmented index stay
41
- * searchable, but non-Latin translations on a Latin-default index still
42
- * collapse to zero tokens.
40
+ * searchable. A Latin default keeps Orama's tokenizer for its Latin-script
41
+ * pages, and each page in a non-Latin locale (the Japanese and Hindi
42
+ * translations of an English site) is indexed with its own locale's tokenizer.
43
43
  */
44
44
  export declare const buildOramaIndex: (documents: OramaDoc[], locale?: string) => Promise<AnyOrama>;
45
45
  /** Optional exact-match filters applied to a query via Orama's `where`. */
@@ -65,10 +65,10 @@ export interface OramaQueryFilters {
65
65
  * `locale` to one language, `contentTypes` to a set of page types, `facets`
66
66
  * to documents carrying every requested `key:value` term.
67
67
  *
68
- * On a bigrammed index the strict pass runs first: a term is only meant to
69
- * match where its bigrams sit together, and scoring them independently lets a
70
- * page sharing a couple of windows outrank the page the term is about. Terms
71
- * spanning several words rarely appear in full on one page, so an empty strict
72
- * result falls back to the default pass rather than reporting no matches.
68
+ * On an index whose translations have tokenizers of their own, a query scoped
69
+ * to a locale is tokenized with that locale's tokenizer. An unscoped query
70
+ * searches each locale's pages with its own tokenizer, and the Latin-script
71
+ * pages with Orama's, then merges the matches by score: every search runs over
72
+ * the one index, so their scores share its term statistics.
73
73
  */
74
74
  export declare const queryOramaIndex: (db: AnyOrama, term: string, limit: number, filters?: OramaQueryFilters) => Promise<OramaDoc[]>;
@@ -9,8 +9,11 @@ export type AlgoliaSyncConfig = Pick<AlgoliaOptions, "appId" | "indexName">;
9
9
  *
10
10
  * Uses `replaceAllObjects`, which atomically replaces the index contents, so
11
11
  * pages deleted or renamed since the last sync don't linger as stale search
12
- * hits that 404 when clicked. Then adds `filterOnly(locale)` and
12
+ * hits that 404 when clicked. A page too long for one record is split across
13
+ * several (see {@link toObjects}). Then adds `filterOnly(locale)` and
13
14
  * `filterOnly(version)` to the index's `attributesForFaceting`, keeping any
14
- * the site declared itself, so the dialog's locale and version filters match.
15
+ * the site declared itself, so the dialog's locale and version filters match,
16
+ * and, once a page is split, `url` as the index's `attributeForDistinct`
17
+ * unless the site set its own.
15
18
  */
16
19
  export declare const syncAlgolia: (records: SearchRecord[], config: AlgoliaSyncConfig) => Promise<void>;
@@ -9,6 +9,8 @@ export interface SyncReporter {
9
9
  * After a build, upload the per-page records to the configured hosted adapter.
10
10
  * Reads secret admin keys from the environment; if a key (or option) is
11
11
  * missing the sync is skipped with a warning rather than failing the build —
12
- * CI may sync in a separate step.
12
+ * a local build has no secrets, and CI may sync in a separate step. Once the
13
+ * sync is set up, a failure fails the build (`BLUME_SEARCH_SYNC_FAILED`):
14
+ * the site would otherwise deploy against an index this build didn't update.
13
15
  */
14
16
  export declare const syncSearchProvider: (project: BlumeProject, reporter: SyncReporter) => Promise<void>;
@@ -1,14 +1,18 @@
1
1
  import type { TypesenseOptions } from "../adapters/typesense.ts";
2
2
  import type { SearchRecord } from "../documents.ts";
3
3
  /** The adapter options the sync reads (the public `apiKey` is never used). */
4
- export type TypesenseSyncConfig = Pick<TypesenseOptions, "collection" | "host" | "port" | "protocol">;
4
+ export type TypesenseSyncConfig = Pick<TypesenseOptions, "collection" | "host" | "locale" | "port" | "protocol">;
5
5
  /**
6
- * Import the search records into a Typesense collection. Uses the admin key
7
- * from `TYPESENSE_ADMIN_API_KEY`. Throws on a missing key so the caller can
8
- * warn.
6
+ * Import the search records into Typesense. Uses the admin key from
7
+ * `TYPESENSE_ADMIN_API_KEY`. Throws on a missing key so the caller can warn.
9
8
  *
10
- * The collection is dropped and recreated on each sync so that pages deleted or
11
- * renamed since the last sync don't linger as stale search hits that 404 when
12
- * clicked (an upsert alone never removes them).
9
+ * `collection` names an alias. Each sync imports every record into a new
10
+ * collection (`<collection>_<timestamp>`), points the alias at it, then drops
11
+ * the collection it replaced: searches keep reading the previous collection
12
+ * until the new one is complete, pages deleted or renamed since the last sync
13
+ * don't linger as stale hits that 404 when clicked, and a sync that fails
14
+ * leaves the previous collection serving. A collection named `collection`
15
+ * itself, from a sync before the alias existed, is dropped just before the
16
+ * alias takes its name, since Typesense won't let the two share one.
13
17
  */
14
18
  export declare const syncTypesense: (records: SearchRecord[], config: TypesenseSyncConfig) => Promise<void>;
@@ -13,10 +13,20 @@ export interface ContentfulOptions extends SharedSourceOptions {
13
13
  * / `sys.updatedAt`.
14
14
  */
15
15
  fields?: SourceFieldMap;
16
+ /**
17
+ * Delivery API host name. Defaults to `cdn.contentful.com`; a space with
18
+ * EU data residency reads from `cdn.eu.contentful.com`.
19
+ */
20
+ host?: string;
16
21
  /** Locale code to fetch; omit for the space's default locale. */
17
22
  locale?: string;
18
23
  /** Extra query parameters for the entries request (`"fields.section": "sdk"`). */
19
24
  params?: Record<string, string>;
25
+ /**
26
+ * Preview API host name for `--preview`. Defaults to
27
+ * `preview.contentful.com` (`preview.eu.contentful.com` in the EU).
28
+ */
29
+ previewHost?: string;
20
30
  /** Space id. */
21
31
  space: string;
22
32
  }
@@ -29,11 +39,14 @@ export declare const contentfulOptionsSchema: z.ZodObject<{
29
39
  body: z.ZodOptional<z.ZodString>;
30
40
  description: z.ZodOptional<z.ZodString>;
31
41
  lastModified: z.ZodOptional<z.ZodString>;
42
+ order: z.ZodOptional<z.ZodString>;
32
43
  slug: z.ZodOptional<z.ZodString>;
33
44
  title: z.ZodOptional<z.ZodString>;
34
45
  }, z.core.$strict>>;
46
+ host: z.ZodOptional<z.ZodString>;
35
47
  locale: z.ZodOptional<z.ZodString>;
36
48
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
49
+ previewHost: z.ZodOptional<z.ZodString>;
37
50
  space: z.ZodString;
38
51
  }, z.core.$strict>;
39
52
  export type ContentfulAdapter = AdapterDescriptor<"contentful", ContentfulOptions>;
@@ -48,11 +61,14 @@ export declare const contentfulAdapterSchema: z.ZodObject<{
48
61
  body: z.ZodOptional<z.ZodString>;
49
62
  description: z.ZodOptional<z.ZodString>;
50
63
  lastModified: z.ZodOptional<z.ZodString>;
64
+ order: z.ZodOptional<z.ZodString>;
51
65
  slug: z.ZodOptional<z.ZodString>;
52
66
  title: z.ZodOptional<z.ZodString>;
53
67
  }, z.core.$strict>>;
68
+ host: z.ZodOptional<z.ZodString>;
54
69
  locale: z.ZodOptional<z.ZodString>;
55
70
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
71
+ previewHost: z.ZodOptional<z.ZodString>;
56
72
  space: z.ZodString;
57
73
  }, z.core.$strict>;
58
74
  requiredSecrets: z.ZodArray<z.ZodString>;
@@ -3,7 +3,12 @@ import type { AdapterDescriptor } from "../core/adapter.ts";
3
3
  import type { SharedSourceOptions } from "./shared.ts";
4
4
  /** Options for {@link githubReleases}. */
5
5
  export interface GithubReleasesOptions extends SharedSourceOptions {
6
- /** Include draft releases (needs a token with repo write access). */
6
+ /**
7
+ * The GitHub REST API base URL. Defaults to `https://api.github.com`; a
8
+ * GitHub Enterprise Server's is `https://<host>/api/v3`.
9
+ */
10
+ baseUrl?: string;
11
+ /** Include draft releases, tagged `Draft` (needs a token with repo write access). */
7
12
  drafts?: boolean;
8
13
  /** Cap the number of releases materialized, newest-first. Defaults to 100. */
9
14
  limit?: number;
@@ -17,6 +22,7 @@ export interface GithubReleasesOptions extends SharedSourceOptions {
17
22
  export declare const githubReleasesOptionsSchema: z.ZodObject<{
18
23
  pollInterval: z.ZodOptional<z.ZodNumber>;
19
24
  prefix: z.ZodOptional<z.ZodString>;
25
+ baseUrl: z.ZodOptional<z.ZodString>;
20
26
  drafts: z.ZodOptional<z.ZodBoolean>;
21
27
  limit: z.ZodOptional<z.ZodNumber>;
22
28
  owner: z.ZodString;
@@ -29,6 +35,7 @@ export declare const githubReleasesAdapterSchema: z.ZodObject<{
29
35
  options: z.ZodObject<{
30
36
  pollInterval: z.ZodOptional<z.ZodNumber>;
31
37
  prefix: z.ZodOptional<z.ZodString>;
38
+ baseUrl: z.ZodOptional<z.ZodString>;
32
39
  drafts: z.ZodOptional<z.ZodBoolean>;
33
40
  limit: z.ZodOptional<z.ZodNumber>;
34
41
  owner: z.ZodString;
@@ -32,6 +32,7 @@ export declare const payloadOptionsSchema: z.ZodObject<{
32
32
  body: z.ZodOptional<z.ZodString>;
33
33
  description: z.ZodOptional<z.ZodString>;
34
34
  lastModified: z.ZodOptional<z.ZodString>;
35
+ order: z.ZodOptional<z.ZodString>;
35
36
  slug: z.ZodOptional<z.ZodString>;
36
37
  title: z.ZodOptional<z.ZodString>;
37
38
  }, z.core.$strict>>;
@@ -51,6 +52,7 @@ export declare const payloadAdapterSchema: z.ZodObject<{
51
52
  body: z.ZodOptional<z.ZodString>;
52
53
  description: z.ZodOptional<z.ZodString>;
53
54
  lastModified: z.ZodOptional<z.ZodString>;
55
+ order: z.ZodOptional<z.ZodString>;
54
56
  slug: z.ZodOptional<z.ZodString>;
55
57
  title: z.ZodOptional<z.ZodString>;
56
58
  }, z.core.$strict>>;
@@ -46,6 +46,7 @@ declare const sourceAdapterUnion: z.ZodDiscriminatedUnion<readonly [z.ZodObject<
46
46
  options: z.ZodObject<{
47
47
  pollInterval: z.ZodOptional<z.ZodNumber>;
48
48
  prefix: z.ZodOptional<z.ZodString>;
49
+ baseUrl: z.ZodOptional<z.ZodString>;
49
50
  drafts: z.ZodOptional<z.ZodBoolean>;
50
51
  limit: z.ZodOptional<z.ZodNumber>;
51
52
  owner: z.ZodString;
@@ -102,11 +103,14 @@ declare const sourceAdapterUnion: z.ZodDiscriminatedUnion<readonly [z.ZodObject<
102
103
  body: z.ZodOptional<z.ZodString>;
103
104
  description: z.ZodOptional<z.ZodString>;
104
105
  lastModified: z.ZodOptional<z.ZodString>;
106
+ order: z.ZodOptional<z.ZodString>;
105
107
  slug: z.ZodOptional<z.ZodString>;
106
108
  title: z.ZodOptional<z.ZodString>;
107
109
  }, z.core.$strict>>;
110
+ host: z.ZodOptional<z.ZodString>;
108
111
  locale: z.ZodOptional<z.ZodString>;
109
112
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
113
+ previewHost: z.ZodOptional<z.ZodString>;
110
114
  space: z.ZodString;
111
115
  }, z.core.$strict>;
112
116
  requiredSecrets: z.ZodArray<z.ZodString>;
@@ -123,6 +127,7 @@ declare const sourceAdapterUnion: z.ZodDiscriminatedUnion<readonly [z.ZodObject<
123
127
  body: z.ZodOptional<z.ZodString>;
124
128
  description: z.ZodOptional<z.ZodString>;
125
129
  lastModified: z.ZodOptional<z.ZodString>;
130
+ order: z.ZodOptional<z.ZodString>;
126
131
  slug: z.ZodOptional<z.ZodString>;
127
132
  title: z.ZodOptional<z.ZodString>;
128
133
  }, z.core.$strict>>;
@@ -141,6 +146,7 @@ declare const sourceAdapterUnion: z.ZodDiscriminatedUnion<readonly [z.ZodObject<
141
146
  body: z.ZodOptional<z.ZodString>;
142
147
  description: z.ZodOptional<z.ZodString>;
143
148
  lastModified: z.ZodOptional<z.ZodString>;
149
+ order: z.ZodOptional<z.ZodString>;
144
150
  slug: z.ZodOptional<z.ZodString>;
145
151
  title: z.ZodOptional<z.ZodString>;
146
152
  }, z.core.$strict>>;
@@ -214,6 +220,7 @@ export declare const resolvedSourceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUn
214
220
  options: z.ZodObject<{
215
221
  pollInterval: z.ZodOptional<z.ZodNumber>;
216
222
  prefix: z.ZodOptional<z.ZodString>;
223
+ baseUrl: z.ZodOptional<z.ZodString>;
217
224
  drafts: z.ZodOptional<z.ZodBoolean>;
218
225
  limit: z.ZodOptional<z.ZodNumber>;
219
226
  owner: z.ZodString;
@@ -270,11 +277,14 @@ export declare const resolvedSourceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUn
270
277
  body: z.ZodOptional<z.ZodString>;
271
278
  description: z.ZodOptional<z.ZodString>;
272
279
  lastModified: z.ZodOptional<z.ZodString>;
280
+ order: z.ZodOptional<z.ZodString>;
273
281
  slug: z.ZodOptional<z.ZodString>;
274
282
  title: z.ZodOptional<z.ZodString>;
275
283
  }, z.core.$strict>>;
284
+ host: z.ZodOptional<z.ZodString>;
276
285
  locale: z.ZodOptional<z.ZodString>;
277
286
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
287
+ previewHost: z.ZodOptional<z.ZodString>;
278
288
  space: z.ZodString;
279
289
  }, z.core.$strict>;
280
290
  requiredSecrets: z.ZodArray<z.ZodString>;
@@ -291,6 +301,7 @@ export declare const resolvedSourceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUn
291
301
  body: z.ZodOptional<z.ZodString>;
292
302
  description: z.ZodOptional<z.ZodString>;
293
303
  lastModified: z.ZodOptional<z.ZodString>;
304
+ order: z.ZodOptional<z.ZodString>;
294
305
  slug: z.ZodOptional<z.ZodString>;
295
306
  title: z.ZodOptional<z.ZodString>;
296
307
  }, z.core.$strict>>;
@@ -309,6 +320,7 @@ export declare const resolvedSourceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUn
309
320
  body: z.ZodOptional<z.ZodString>;
310
321
  description: z.ZodOptional<z.ZodString>;
311
322
  lastModified: z.ZodOptional<z.ZodString>;
323
+ order: z.ZodOptional<z.ZodString>;
312
324
  slug: z.ZodOptional<z.ZodString>;
313
325
  title: z.ZodOptional<z.ZodString>;
314
326
  }, z.core.$strict>>;
@@ -369,6 +381,7 @@ export declare const resolvedSourceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUn
369
381
  repo: string;
370
382
  pollInterval?: number | undefined;
371
383
  prefix?: string | undefined;
384
+ baseUrl?: string | undefined;
372
385
  drafts?: boolean | undefined;
373
386
  limit?: number | undefined;
374
387
  prereleases?: boolean | undefined;
@@ -424,11 +437,14 @@ export declare const resolvedSourceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUn
424
437
  body?: string | undefined;
425
438
  description?: string | undefined;
426
439
  lastModified?: string | undefined;
440
+ order?: string | undefined;
427
441
  slug?: string | undefined;
428
442
  title?: string | undefined;
429
443
  } | undefined;
444
+ host?: string | undefined;
430
445
  locale?: string | undefined;
431
446
  params?: Record<string, string> | undefined;
447
+ previewHost?: string | undefined;
432
448
  };
433
449
  requiredSecrets: string[];
434
450
  runtimeDeps: string[];
@@ -445,6 +461,7 @@ export declare const resolvedSourceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUn
445
461
  body?: string | undefined;
446
462
  description?: string | undefined;
447
463
  lastModified?: string | undefined;
464
+ order?: string | undefined;
448
465
  slug?: string | undefined;
449
466
  title?: string | undefined;
450
467
  } | undefined;
@@ -463,6 +480,7 @@ export declare const resolvedSourceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUn
463
480
  body?: string | undefined;
464
481
  description?: string | undefined;
465
482
  lastModified?: string | undefined;
483
+ order?: string | undefined;
466
484
  slug?: string | undefined;
467
485
  title?: string | undefined;
468
486
  } | undefined;
@@ -522,6 +540,7 @@ export declare const resolvedSourceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUn
522
540
  repo: string;
523
541
  pollInterval?: number | undefined;
524
542
  prefix?: string | undefined;
543
+ baseUrl?: string | undefined;
525
544
  drafts?: boolean | undefined;
526
545
  limit?: number | undefined;
527
546
  prereleases?: boolean | undefined;
@@ -577,11 +596,14 @@ export declare const resolvedSourceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUn
577
596
  body?: string | undefined;
578
597
  description?: string | undefined;
579
598
  lastModified?: string | undefined;
599
+ order?: string | undefined;
580
600
  slug?: string | undefined;
581
601
  title?: string | undefined;
582
602
  } | undefined;
603
+ host?: string | undefined;
583
604
  locale?: string | undefined;
584
605
  params?: Record<string, string> | undefined;
606
+ previewHost?: string | undefined;
585
607
  };
586
608
  requiredSecrets: string[];
587
609
  runtimeDeps: string[];
@@ -598,6 +620,7 @@ export declare const resolvedSourceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUn
598
620
  body?: string | undefined;
599
621
  description?: string | undefined;
600
622
  lastModified?: string | undefined;
623
+ order?: string | undefined;
601
624
  slug?: string | undefined;
602
625
  title?: string | undefined;
603
626
  } | undefined;
@@ -616,6 +639,7 @@ export declare const resolvedSourceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUn
616
639
  body?: string | undefined;
617
640
  description?: string | undefined;
618
641
  lastModified?: string | undefined;
642
+ order?: string | undefined;
619
643
  slug?: string | undefined;
620
644
  title?: string | undefined;
621
645
  } | undefined;
@@ -680,6 +704,7 @@ export declare const contentSourcesSchema: z.ZodArray<z.ZodPipe<z.ZodCustom<{
680
704
  repo: string;
681
705
  pollInterval?: number | undefined;
682
706
  prefix?: string | undefined;
707
+ baseUrl?: string | undefined;
683
708
  drafts?: boolean | undefined;
684
709
  limit?: number | undefined;
685
710
  prereleases?: boolean | undefined;
@@ -735,11 +760,14 @@ export declare const contentSourcesSchema: z.ZodArray<z.ZodPipe<z.ZodCustom<{
735
760
  body?: string | undefined;
736
761
  description?: string | undefined;
737
762
  lastModified?: string | undefined;
763
+ order?: string | undefined;
738
764
  slug?: string | undefined;
739
765
  title?: string | undefined;
740
766
  } | undefined;
767
+ host?: string | undefined;
741
768
  locale?: string | undefined;
742
769
  params?: Record<string, string> | undefined;
770
+ previewHost?: string | undefined;
743
771
  };
744
772
  requiredSecrets: string[];
745
773
  runtimeDeps: string[];
@@ -756,6 +784,7 @@ export declare const contentSourcesSchema: z.ZodArray<z.ZodPipe<z.ZodCustom<{
756
784
  body?: string | undefined;
757
785
  description?: string | undefined;
758
786
  lastModified?: string | undefined;
787
+ order?: string | undefined;
759
788
  slug?: string | undefined;
760
789
  title?: string | undefined;
761
790
  } | undefined;
@@ -774,6 +803,7 @@ export declare const contentSourcesSchema: z.ZodArray<z.ZodPipe<z.ZodCustom<{
774
803
  body?: string | undefined;
775
804
  description?: string | undefined;
776
805
  lastModified?: string | undefined;
806
+ order?: string | undefined;
777
807
  slug?: string | undefined;
778
808
  title?: string | undefined;
779
809
  } | undefined;
@@ -833,6 +863,7 @@ export declare const contentSourcesSchema: z.ZodArray<z.ZodPipe<z.ZodCustom<{
833
863
  repo: string;
834
864
  pollInterval?: number | undefined;
835
865
  prefix?: string | undefined;
866
+ baseUrl?: string | undefined;
836
867
  drafts?: boolean | undefined;
837
868
  limit?: number | undefined;
838
869
  prereleases?: boolean | undefined;
@@ -888,11 +919,14 @@ export declare const contentSourcesSchema: z.ZodArray<z.ZodPipe<z.ZodCustom<{
888
919
  body?: string | undefined;
889
920
  description?: string | undefined;
890
921
  lastModified?: string | undefined;
922
+ order?: string | undefined;
891
923
  slug?: string | undefined;
892
924
  title?: string | undefined;
893
925
  } | undefined;
926
+ host?: string | undefined;
894
927
  locale?: string | undefined;
895
928
  params?: Record<string, string> | undefined;
929
+ previewHost?: string | undefined;
896
930
  };
897
931
  requiredSecrets: string[];
898
932
  runtimeDeps: string[];
@@ -909,6 +943,7 @@ export declare const contentSourcesSchema: z.ZodArray<z.ZodPipe<z.ZodCustom<{
909
943
  body?: string | undefined;
910
944
  description?: string | undefined;
911
945
  lastModified?: string | undefined;
946
+ order?: string | undefined;
912
947
  slug?: string | undefined;
913
948
  title?: string | undefined;
914
949
  } | undefined;
@@ -927,6 +962,7 @@ export declare const contentSourcesSchema: z.ZodArray<z.ZodPipe<z.ZodCustom<{
927
962
  body?: string | undefined;
928
963
  description?: string | undefined;
929
964
  lastModified?: string | undefined;
965
+ order?: string | undefined;
930
966
  slug?: string | undefined;
931
967
  title?: string | undefined;
932
968
  } | undefined;
@@ -984,6 +1020,7 @@ export declare const contentSourcesSchema: z.ZodArray<z.ZodPipe<z.ZodCustom<{
984
1020
  options: z.ZodObject<{
985
1021
  pollInterval: z.ZodOptional<z.ZodNumber>;
986
1022
  prefix: z.ZodOptional<z.ZodString>;
1023
+ baseUrl: z.ZodOptional<z.ZodString>;
987
1024
  drafts: z.ZodOptional<z.ZodBoolean>;
988
1025
  limit: z.ZodOptional<z.ZodNumber>;
989
1026
  owner: z.ZodString;
@@ -1040,11 +1077,14 @@ export declare const contentSourcesSchema: z.ZodArray<z.ZodPipe<z.ZodCustom<{
1040
1077
  body: z.ZodOptional<z.ZodString>;
1041
1078
  description: z.ZodOptional<z.ZodString>;
1042
1079
  lastModified: z.ZodOptional<z.ZodString>;
1080
+ order: z.ZodOptional<z.ZodString>;
1043
1081
  slug: z.ZodOptional<z.ZodString>;
1044
1082
  title: z.ZodOptional<z.ZodString>;
1045
1083
  }, z.core.$strict>>;
1084
+ host: z.ZodOptional<z.ZodString>;
1046
1085
  locale: z.ZodOptional<z.ZodString>;
1047
1086
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1087
+ previewHost: z.ZodOptional<z.ZodString>;
1048
1088
  space: z.ZodString;
1049
1089
  }, z.core.$strict>;
1050
1090
  requiredSecrets: z.ZodArray<z.ZodString>;
@@ -1061,6 +1101,7 @@ export declare const contentSourcesSchema: z.ZodArray<z.ZodPipe<z.ZodCustom<{
1061
1101
  body: z.ZodOptional<z.ZodString>;
1062
1102
  description: z.ZodOptional<z.ZodString>;
1063
1103
  lastModified: z.ZodOptional<z.ZodString>;
1104
+ order: z.ZodOptional<z.ZodString>;
1064
1105
  slug: z.ZodOptional<z.ZodString>;
1065
1106
  title: z.ZodOptional<z.ZodString>;
1066
1107
  }, z.core.$strict>>;
@@ -1079,6 +1120,7 @@ export declare const contentSourcesSchema: z.ZodArray<z.ZodPipe<z.ZodCustom<{
1079
1120
  body: z.ZodOptional<z.ZodString>;
1080
1121
  description: z.ZodOptional<z.ZodString>;
1081
1122
  lastModified: z.ZodOptional<z.ZodString>;
1123
+ order: z.ZodOptional<z.ZodString>;
1082
1124
  slug: z.ZodOptional<z.ZodString>;
1083
1125
  title: z.ZodOptional<z.ZodString>;
1084
1126
  }, z.core.$strict>>;
@@ -1139,6 +1181,7 @@ export declare const contentSourcesSchema: z.ZodArray<z.ZodPipe<z.ZodCustom<{
1139
1181
  repo: string;
1140
1182
  pollInterval?: number | undefined;
1141
1183
  prefix?: string | undefined;
1184
+ baseUrl?: string | undefined;
1142
1185
  drafts?: boolean | undefined;
1143
1186
  limit?: number | undefined;
1144
1187
  prereleases?: boolean | undefined;
@@ -1194,11 +1237,14 @@ export declare const contentSourcesSchema: z.ZodArray<z.ZodPipe<z.ZodCustom<{
1194
1237
  body?: string | undefined;
1195
1238
  description?: string | undefined;
1196
1239
  lastModified?: string | undefined;
1240
+ order?: string | undefined;
1197
1241
  slug?: string | undefined;
1198
1242
  title?: string | undefined;
1199
1243
  } | undefined;
1244
+ host?: string | undefined;
1200
1245
  locale?: string | undefined;
1201
1246
  params?: Record<string, string> | undefined;
1247
+ previewHost?: string | undefined;
1202
1248
  };
1203
1249
  requiredSecrets: string[];
1204
1250
  runtimeDeps: string[];
@@ -1215,6 +1261,7 @@ export declare const contentSourcesSchema: z.ZodArray<z.ZodPipe<z.ZodCustom<{
1215
1261
  body?: string | undefined;
1216
1262
  description?: string | undefined;
1217
1263
  lastModified?: string | undefined;
1264
+ order?: string | undefined;
1218
1265
  slug?: string | undefined;
1219
1266
  title?: string | undefined;
1220
1267
  } | undefined;
@@ -1233,6 +1280,7 @@ export declare const contentSourcesSchema: z.ZodArray<z.ZodPipe<z.ZodCustom<{
1233
1280
  body?: string | undefined;
1234
1281
  description?: string | undefined;
1235
1282
  lastModified?: string | undefined;
1283
+ order?: string | undefined;
1236
1284
  slug?: string | undefined;
1237
1285
  title?: string | undefined;
1238
1286
  } | undefined;
@@ -1292,6 +1340,7 @@ export declare const contentSourcesSchema: z.ZodArray<z.ZodPipe<z.ZodCustom<{
1292
1340
  repo: string;
1293
1341
  pollInterval?: number | undefined;
1294
1342
  prefix?: string | undefined;
1343
+ baseUrl?: string | undefined;
1295
1344
  drafts?: boolean | undefined;
1296
1345
  limit?: number | undefined;
1297
1346
  prereleases?: boolean | undefined;
@@ -1347,11 +1396,14 @@ export declare const contentSourcesSchema: z.ZodArray<z.ZodPipe<z.ZodCustom<{
1347
1396
  body?: string | undefined;
1348
1397
  description?: string | undefined;
1349
1398
  lastModified?: string | undefined;
1399
+ order?: string | undefined;
1350
1400
  slug?: string | undefined;
1351
1401
  title?: string | undefined;
1352
1402
  } | undefined;
1403
+ host?: string | undefined;
1353
1404
  locale?: string | undefined;
1354
1405
  params?: Record<string, string> | undefined;
1406
+ previewHost?: string | undefined;
1355
1407
  };
1356
1408
  requiredSecrets: string[];
1357
1409
  runtimeDeps: string[];
@@ -1368,6 +1420,7 @@ export declare const contentSourcesSchema: z.ZodArray<z.ZodPipe<z.ZodCustom<{
1368
1420
  body?: string | undefined;
1369
1421
  description?: string | undefined;
1370
1422
  lastModified?: string | undefined;
1423
+ order?: string | undefined;
1371
1424
  slug?: string | undefined;
1372
1425
  title?: string | undefined;
1373
1426
  } | undefined;
@@ -1386,6 +1439,7 @@ export declare const contentSourcesSchema: z.ZodArray<z.ZodPipe<z.ZodCustom<{
1386
1439
  body?: string | undefined;
1387
1440
  description?: string | undefined;
1388
1441
  lastModified?: string | undefined;
1442
+ order?: string | undefined;
1389
1443
  slug?: string | undefined;
1390
1444
  title?: string | undefined;
1391
1445
  } | undefined;
@@ -29,6 +29,8 @@ export interface SourceFieldMap {
29
29
  description?: string;
30
30
  /** Field holding the last-modified date. */
31
31
  lastModified?: string;
32
+ /** Field holding the sidebar order (a number). No default: unset, none is read. */
33
+ order?: string;
32
34
  /** Field holding the page slug. */
33
35
  slug?: string;
34
36
  /** Field holding the page title. */
@@ -39,6 +41,7 @@ export declare const sourceFieldMapSchema: z.ZodObject<{
39
41
  body: z.ZodOptional<z.ZodString>;
40
42
  description: z.ZodOptional<z.ZodString>;
41
43
  lastModified: z.ZodOptional<z.ZodString>;
44
+ order: z.ZodOptional<z.ZodString>;
42
45
  slug: z.ZodOptional<z.ZodString>;
43
46
  title: z.ZodOptional<z.ZodString>;
44
47
  }, z.core.$strict>;
@@ -27,6 +27,7 @@ export declare const strapiOptionsSchema: z.ZodObject<{
27
27
  body: z.ZodOptional<z.ZodString>;
28
28
  description: z.ZodOptional<z.ZodString>;
29
29
  lastModified: z.ZodOptional<z.ZodString>;
30
+ order: z.ZodOptional<z.ZodString>;
30
31
  slug: z.ZodOptional<z.ZodString>;
31
32
  title: z.ZodOptional<z.ZodString>;
32
33
  }, z.core.$strict>>;
@@ -46,6 +47,7 @@ export declare const strapiAdapterSchema: z.ZodObject<{
46
47
  body: z.ZodOptional<z.ZodString>;
47
48
  description: z.ZodOptional<z.ZodString>;
48
49
  lastModified: z.ZodOptional<z.ZodString>;
50
+ order: z.ZodOptional<z.ZodString>;
49
51
  slug: z.ZodOptional<z.ZodString>;
50
52
  title: z.ZodOptional<z.ZodString>;
51
53
  }, z.core.$strict>>;
@@ -15,8 +15,10 @@ Go from an empty folder to a running docs site in a few commands. Blume needs **
15
15
  `blume init` asks a few questions — where to create the project, what your
16
16
  docs site is called, which template, and where your content lives — then
17
17
  scaffolds the minimum surface: a content folder, a config file, and a
18
- `package.json` with `dev` and `build` scripts. It installs the dependencies
19
- with the package manager that ran it. Pass `--yes` to skip the prompts and
18
+ `package.json` with `dev`, `build`, and `doctor` scripts, plus a
19
+ `.gitignore` that keeps `node_modules/`, the generated `.blume/`, `dist/`,
20
+ and `.env.local` (where local secrets go) out of version control. It
21
+ installs the dependencies with the package manager that ran it. Pass `--yes` to skip the prompts and
20
22
  take the defaults, or `--no-install` to only write the files.
21
23
 
22
24
  ```package-install