blume 2.1.2 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (377) hide show
  1. package/AGENTS.md +1 -1
  2. package/CHANGELOG.md +133 -0
  3. package/README.md +4 -4
  4. package/dist/cli/{chunk-74wfhv79.js → chunk-05f21r8h.js} +1 -1
  5. package/dist/cli/{chunk-9qzgg6mj.js → chunk-1cm0h819.js} +3 -3
  6. package/dist/cli/{chunk-nbyvgnnm.js → chunk-1rkxzg3n.js} +104 -47
  7. package/dist/cli/chunk-1rkxzg3n.js.map +36 -0
  8. package/dist/cli/{chunk-desvm72z.js → chunk-2nr29y95.js} +22 -26
  9. package/dist/cli/chunk-2nr29y95.js.map +13 -0
  10. package/dist/cli/{chunk-32khwcb6.js → chunk-49r370mb.js} +42 -69
  11. package/dist/cli/{chunk-32khwcb6.js.map → chunk-49r370mb.js.map} +9 -10
  12. package/dist/cli/{chunk-ms9z66nz.js → chunk-4rftmttv.js} +2 -2
  13. package/dist/cli/{chunk-s0bdnc7v.js → chunk-79bzzkx4.js} +5 -4
  14. package/dist/cli/chunk-79bzzkx4.js.map +10 -0
  15. package/dist/cli/{chunk-hvcxng5f.js → chunk-7tekknev.js} +6 -6
  16. package/dist/cli/{chunk-dv2z0rzf.js → chunk-8b489v1b.js} +38 -13
  17. package/dist/cli/{chunk-dv2z0rzf.js.map → chunk-8b489v1b.js.map} +5 -4
  18. package/dist/cli/{chunk-0pmb4tr4.js → chunk-8f8xw4x2.js} +1195 -222
  19. package/dist/cli/chunk-8f8xw4x2.js.map +44 -0
  20. package/dist/cli/chunk-96snx8yy.js +329 -0
  21. package/dist/cli/chunk-96snx8yy.js.map +13 -0
  22. package/dist/cli/{chunk-ckrcm08h.js → chunk-a3ydrqny.js} +48 -62
  23. package/dist/cli/{chunk-ckrcm08h.js.map → chunk-a3ydrqny.js.map} +4 -5
  24. package/dist/cli/{chunk-bxwhtvw8.js → chunk-ahc5gc9h.js} +5 -5
  25. package/dist/cli/{chunk-dpy8qdjf.js → chunk-as09pafp.js} +73 -182
  26. package/dist/cli/chunk-as09pafp.js.map +18 -0
  27. package/dist/cli/{chunk-tfycddbt.js → chunk-bjk964fp.js} +2 -2
  28. package/dist/cli/{chunk-gfc5fqvf.js → chunk-br0n8n3e.js} +18 -18
  29. package/dist/cli/{chunk-gfc5fqvf.js.map → chunk-br0n8n3e.js.map} +1 -1
  30. package/dist/cli/{chunk-297ajdcv.js → chunk-c69tw29j.js} +6 -6
  31. package/dist/cli/{chunk-297ajdcv.js.map → chunk-c69tw29j.js.map} +3 -3
  32. package/dist/cli/chunk-cn3dy3hz.js +146 -0
  33. package/dist/cli/chunk-cn3dy3hz.js.map +11 -0
  34. package/dist/cli/{chunk-124fvmzq.js → chunk-dm4mg9bj.js} +11064 -8742
  35. package/dist/cli/{chunk-124fvmzq.js.map → chunk-dm4mg9bj.js.map} +78 -64
  36. package/dist/cli/{chunk-dqhg54mr.js → chunk-dmx6cezx.js} +1 -1
  37. package/dist/cli/{chunk-60hz265r.js → chunk-dpcahcrb.js} +24 -11
  38. package/dist/cli/chunk-dpcahcrb.js.map +10 -0
  39. package/dist/cli/{chunk-a57yh0h9.js → chunk-dyk3r7jw.js} +7 -7
  40. package/dist/cli/{chunk-a57yh0h9.js.map → chunk-dyk3r7jw.js.map} +1 -1
  41. package/dist/cli/{chunk-twy7psdz.js → chunk-enk76qd5.js} +14 -10
  42. package/dist/cli/chunk-enk76qd5.js.map +10 -0
  43. package/dist/cli/{chunk-k3gr1nm9.js → chunk-fqy4n3q2.js} +13 -16
  44. package/dist/cli/{chunk-k3gr1nm9.js.map → chunk-fqy4n3q2.js.map} +3 -3
  45. package/dist/cli/{chunk-sc93apfs.js → chunk-frk2wdq1.js} +17 -17
  46. package/dist/cli/{chunk-sc93apfs.js.map → chunk-frk2wdq1.js.map} +2 -2
  47. package/dist/cli/{chunk-kdpzw38a.js → chunk-gprwej7h.js} +95 -7
  48. package/dist/cli/chunk-gprwej7h.js.map +11 -0
  49. package/dist/cli/chunk-kkrteb15.js +157 -0
  50. package/dist/cli/chunk-kkrteb15.js.map +10 -0
  51. package/dist/cli/{chunk-ave1wcbr.js → chunk-m9bp2hc1.js} +1 -1
  52. package/dist/cli/{chunk-58bt3hag.js → chunk-mrvh4c88.js} +4 -4
  53. package/dist/cli/{chunk-5cmts6dv.js → chunk-p8zg3a2h.js} +7 -7
  54. package/dist/cli/{chunk-5cmts6dv.js.map → chunk-p8zg3a2h.js.map} +1 -1
  55. package/dist/cli/{chunk-0w6hs479.js → chunk-rkqae7kh.js} +30 -18
  56. package/dist/cli/chunk-rkqae7kh.js.map +10 -0
  57. package/dist/cli/{chunk-bqxaqn5p.js → chunk-t5xx74rd.js} +8 -8
  58. package/dist/cli/{chunk-bqxaqn5p.js.map → chunk-t5xx74rd.js.map} +1 -1
  59. package/dist/cli/{chunk-1f882900.js → chunk-th0pgaj5.js} +2 -2
  60. package/dist/cli/{chunk-dhwtqnnd.js → chunk-vnbvhgmd.js} +2 -2
  61. package/dist/cli/{chunk-gxtg6ed2.js → chunk-vzy9rh6y.js} +21 -21
  62. package/dist/cli/{chunk-gxtg6ed2.js.map → chunk-vzy9rh6y.js.map} +3 -3
  63. package/dist/cli/{chunk-j1x92mx9.js → chunk-w6e455pz.js} +1 -1
  64. package/dist/cli/chunk-wehv26ry.js +155 -0
  65. package/dist/cli/chunk-wehv26ry.js.map +11 -0
  66. package/dist/cli/{chunk-y4msrwm9.js → chunk-xgq4eytj.js} +15 -15
  67. package/dist/cli/{chunk-36bxs9c7.js → chunk-xt0qvz1t.js} +27 -23
  68. package/dist/cli/chunk-xt0qvz1t.js.map +10 -0
  69. package/dist/cli/index.js +78 -42
  70. package/dist/cli/index.js.map +7 -6
  71. package/dist/types/ai/changelog-components.d.ts +18 -0
  72. package/dist/types/ai/changelog-markdown.d.ts +12 -0
  73. package/dist/types/ai/openapi-components.d.ts +7 -7
  74. package/dist/types/ai/operation-details.d.ts +39 -0
  75. package/dist/types/ai/relative-links.d.ts +3 -1
  76. package/dist/types/ai/serializers.d.ts +6 -4
  77. package/dist/types/analytics/head.d.ts +4 -2
  78. package/dist/types/analytics/script.d.ts +8 -2
  79. package/dist/types/components/content/youtube.d.ts +20 -0
  80. package/dist/types/components/layout/nav-utils.d.ts +8 -0
  81. package/dist/types/components/openapi/example-panels.d.ts +33 -0
  82. package/dist/types/components/openapi/helpers.d.ts +53 -11
  83. package/dist/types/components/openapi/snippets.d.ts +7 -1
  84. package/dist/types/core/alert-diagnostics.d.ts +10 -0
  85. package/dist/types/core/builtin-tags.d.ts +16 -0
  86. package/dist/types/core/changelog-list.d.ts +48 -0
  87. package/dist/types/core/closest-match.d.ts +6 -0
  88. package/dist/types/core/code-fence-diagnostics.d.ts +18 -0
  89. package/dist/types/core/code-fences.d.ts +8 -1
  90. package/dist/types/core/config-input.d.ts +1 -1
  91. package/dist/types/core/content-assets.d.ts +16 -18
  92. package/dist/types/core/diagnostics.d.ts +14 -0
  93. package/dist/types/core/directive-diagnostics.d.ts +22 -8
  94. package/dist/types/core/former-routes.d.ts +14 -0
  95. package/dist/types/core/github.d.ts +5 -4
  96. package/dist/types/core/heading-markers.d.ts +65 -2
  97. package/dist/types/core/hidden-pages.d.ts +3 -0
  98. package/dist/types/core/includes.d.ts +23 -0
  99. package/dist/types/core/last-modified.d.ts +18 -6
  100. package/dist/types/core/links.d.ts +42 -2
  101. package/dist/types/core/load-module.d.ts +19 -4
  102. package/dist/types/core/manifest.d.ts +14 -1
  103. package/dist/types/core/markdown-mirrors.d.ts +22 -0
  104. package/dist/types/core/mdx-elements.d.ts +32 -0
  105. package/dist/types/core/mdx-syntax.d.ts +100 -0
  106. package/dist/types/core/meta-diagnostics.d.ts +7 -0
  107. package/dist/types/core/meta.d.ts +32 -5
  108. package/dist/types/core/nav-diagnostics.d.ts +9 -2
  109. package/dist/types/core/navigation.d.ts +13 -0
  110. package/dist/types/core/ordering-prefix.d.ts +6 -0
  111. package/dist/types/core/pinned-ids.d.ts +23 -0
  112. package/dist/types/core/project-graph.d.ts +9 -1
  113. package/dist/types/core/redirect-patterns.d.ts +18 -0
  114. package/dist/types/core/relative-files.d.ts +31 -0
  115. package/dist/types/core/schema.d.ts +267 -7
  116. package/dist/types/core/sources/normalize.d.ts +101 -9
  117. package/dist/types/core/sources/types.d.ts +16 -0
  118. package/dist/types/core/static-files.d.ts +10 -0
  119. package/dist/types/core/static-host.d.ts +42 -0
  120. package/dist/types/core/svg-images.d.ts +26 -0
  121. package/dist/types/core/syntax-diagnostics.d.ts +14 -0
  122. package/dist/types/core/types.d.ts +42 -1
  123. package/dist/types/deploy/generated-files.d.ts +41 -0
  124. package/dist/types/deploy/redirects.d.ts +21 -7
  125. package/dist/types/markdown/code-title.d.ts +9 -5
  126. package/dist/types/markdown/directives.d.ts +8 -0
  127. package/dist/types/markdown/fence-language.d.ts +51 -0
  128. package/dist/types/markdown/fence-meta.d.ts +5 -0
  129. package/dist/types/markdown/github-alerts.d.ts +35 -0
  130. package/dist/types/openapi/asyncapi.d.ts +6 -5
  131. package/dist/types/openapi/checks.d.ts +10 -5
  132. package/dist/types/openapi/model.d.ts +55 -8
  133. package/dist/types/openapi/parse.d.ts +4 -1
  134. package/dist/types/sources/filesystem.d.ts +14 -4
  135. package/dist/types/sources/mdx-remote.d.ts +6 -3
  136. package/dist/types/sources/registry.d.ts +3 -3
  137. package/dist/types/theme/color.d.ts +33 -0
  138. package/dist/types/theme/palette.d.ts +122 -0
  139. package/docs/01-quickstart.mdx +1 -1
  140. package/docs/02-deployment.mdx +23 -8
  141. package/docs/04-migrating.mdx +16 -4
  142. package/docs/advanced/changelog.mdx +27 -1
  143. package/docs/advanced/skills.mdx +1 -1
  144. package/docs/cli/audit.mdx +1 -1
  145. package/docs/cli/doctor.mdx +2 -2
  146. package/docs/cli/evals.mdx +1 -1
  147. package/docs/cli/index.mdx +4 -2
  148. package/docs/cli/validate.mdx +10 -7
  149. package/docs/configuration/analytics.mdx +2 -0
  150. package/docs/configuration/customization.mdx +3 -1
  151. package/docs/configuration/index.mdx +2 -2
  152. package/docs/configuration/theming.mdx +5 -1
  153. package/docs/content/components.mdx +26 -6
  154. package/docs/content/frontmatter.mdx +1 -1
  155. package/docs/content/includes.mdx +6 -2
  156. package/docs/content/index.mdx +11 -1
  157. package/docs/content/islands.mdx +2 -0
  158. package/docs/content/meta.mdx +9 -3
  159. package/docs/content/navigation.mdx +14 -6
  160. package/docs/content/sources/obsidian.mdx +1 -1
  161. package/docs/content/sources/remote-mdx.mdx +3 -1
  162. package/docs/content/syntax.mdx +76 -8
  163. package/docs/content/variables.mdx +3 -1
  164. package/docs/discoverability/agent-discovery.mdx +1 -1
  165. package/docs/discoverability/json-api.mdx +1 -1
  166. package/docs/discoverability/llms-txt.mdx +1 -1
  167. package/docs/discoverability/markdown.mdx +2 -2
  168. package/docs/discoverability/open-graph.mdx +1 -1
  169. package/docs/discoverability/sitemap-and-robots.mdx +1 -1
  170. package/docs/references/graphql.mdx +2 -0
  171. package/docs/references/openapi.mdx +45 -7
  172. package/package.json +10 -9
  173. package/skills/blume/SKILL.md +2 -2
  174. package/skills/blume-migrate/SKILL.md +49 -27
  175. package/skills/blume-migrate/references/docsify.md +262 -0
  176. package/skills/blume-migrate/references/docus.md +298 -0
  177. package/skills/blume-migrate/references/docusaurus.md +3 -3
  178. package/skills/blume-migrate/references/fern.md +327 -0
  179. package/skills/blume-migrate/references/fumadocs.md +1 -1
  180. package/skills/blume-migrate/references/gitbook.md +267 -0
  181. package/skills/blume-migrate/references/github-wiki.md +259 -0
  182. package/skills/blume-migrate/references/jekyll.md +253 -0
  183. package/skills/blume-migrate/references/mdbook.md +256 -0
  184. package/skills/blume-migrate/references/mintlify.md +5 -5
  185. package/skills/blume-migrate/references/mkdocs.md +236 -0
  186. package/skills/blume-migrate/references/monorepo.md +20 -8
  187. package/skills/blume-migrate/references/nextra.md +2 -2
  188. package/skills/blume-migrate/references/readme.md +257 -0
  189. package/skills/blume-migrate/references/redocly.md +198 -0
  190. package/skills/blume-migrate/references/starlight.md +3 -3
  191. package/skills/blume-migrate/references/vitepress.md +204 -0
  192. package/skills/blume-migrate/references/vuepress.md +271 -0
  193. package/skills/blume-migrate/scripts/docsify-codemod.mjs +2387 -0
  194. package/skills/blume-migrate/scripts/docus-codemod.mjs +2542 -0
  195. package/skills/blume-migrate/scripts/fern-codemod.mjs +2633 -0
  196. package/skills/blume-migrate/scripts/github-wiki-codemod.mjs +2808 -0
  197. package/skills/blume-migrate/scripts/include-excerpts.mjs +649 -0
  198. package/skills/blume-migrate/scripts/jekyll-codemod.mjs +3649 -0
  199. package/skills/blume-migrate/scripts/mintlify-codemod.mjs +17 -13
  200. package/skills/blume-migrate/scripts/mkdocs-codemod.mjs +2526 -0
  201. package/skills/blume-migrate/scripts/operation-routes.mjs +508 -0
  202. package/skills/blume-migrate/scripts/pin-heading-ids.mjs +1049 -0
  203. package/skills/blume-migrate/scripts/readme-codemod.mjs +4139 -0
  204. package/skills/blume-migrate/scripts/vitepress-codemod.mjs +1511 -0
  205. package/src/ai/changelog-components.ts +24 -0
  206. package/src/ai/changelog-markdown.ts +45 -41
  207. package/src/ai/component-markdown.ts +22 -9
  208. package/src/ai/llms.ts +36 -5
  209. package/src/ai/markdown.ts +2 -2
  210. package/src/ai/openapi-components.ts +25 -9
  211. package/src/ai/operation-details.ts +208 -0
  212. package/src/ai/relative-links.ts +48 -8
  213. package/src/ai/serializers.ts +7 -6
  214. package/src/ai/site-skill.ts +6 -2
  215. package/src/analytics/head.ts +11 -5
  216. package/src/analytics/script.ts +13 -3
  217. package/src/astro/generate.ts +32 -6
  218. package/src/astro/index.ts +1 -0
  219. package/src/astro/integration.ts +27 -1
  220. package/src/astro/mdx-source-errors.ts +46 -0
  221. package/src/astro/templates.ts +89 -185
  222. package/src/audit/checks/redirects.ts +5 -1
  223. package/src/audit/redirects.ts +36 -19
  224. package/src/audit/report.ts +22 -9
  225. package/src/audit/run.ts +12 -28
  226. package/src/audit/terms.ts +23 -0
  227. package/src/audit/url.ts +2 -2
  228. package/src/cli/build-failure.ts +256 -7
  229. package/src/cli/command-meta.ts +1 -1
  230. package/src/cli/commands/audit.ts +1 -1
  231. package/src/cli/commands/build.ts +12 -3
  232. package/src/cli/commands/check.ts +13 -2
  233. package/src/cli/commands/dev.ts +1 -1
  234. package/src/cli/commands/doctor.ts +4 -2
  235. package/src/cli/commands/init.ts +3 -3
  236. package/src/cli/commands/preview.ts +17 -1
  237. package/src/cli/commands/validate.ts +22 -10
  238. package/src/cli/prepare.ts +1 -1
  239. package/src/cli/preview-pages.ts +161 -0
  240. package/src/cli/unknown-flags.ts +1 -42
  241. package/src/components/code-copy.ts +51 -0
  242. package/src/components/code-language.ts +75 -0
  243. package/src/components/content/AccordionItem.astro +16 -1
  244. package/src/components/content/Callout.astro +11 -1
  245. package/src/components/content/Changelog.astro +189 -0
  246. package/src/components/content/CodeBlock.astro +8 -11
  247. package/src/components/content/Tabs.astro +16 -2
  248. package/src/components/content/YouTube.astro +6 -4
  249. package/src/components/content/code-block.ts +33 -0
  250. package/src/components/content/content-strings.ts +5 -1
  251. package/src/components/content/inline-markdown.ts +35 -8
  252. package/src/components/content/youtube.ts +49 -7
  253. package/src/components/layout/Analytics.astro +5 -1
  254. package/src/components/layout/NavTree.astro +8 -3
  255. package/src/components/layout/RootLayout.astro +18 -31
  256. package/src/components/layout/nav-utils.ts +14 -0
  257. package/src/components/layout/search/pagefind.ts +2 -1
  258. package/src/components/openapi/Operation.astro +4 -0
  259. package/src/components/openapi/PanelTabs.astro +9 -3
  260. package/src/components/openapi/RequestBody.astro +42 -8
  261. package/src/components/openapi/RequestPanel.astro +34 -53
  262. package/src/components/openapi/example-panels.ts +110 -0
  263. package/src/components/openapi/helpers.ts +195 -20
  264. package/src/components/openapi/operation-model.ts +63 -26
  265. package/src/components/openapi/request.ts +13 -0
  266. package/src/components/openapi/snippets.ts +14 -2
  267. package/src/core/alert-diagnostics.ts +89 -0
  268. package/src/core/builtin-tags.ts +76 -0
  269. package/src/core/changelog-list.ts +87 -0
  270. package/src/core/closest-match.ts +41 -0
  271. package/src/core/code-fence-diagnostics.ts +267 -0
  272. package/src/core/code-fences.ts +43 -7
  273. package/src/core/component-diagnostics.ts +65 -12
  274. package/src/core/config-input.ts +1 -1
  275. package/src/core/config.ts +46 -1
  276. package/src/core/content-assets.ts +64 -144
  277. package/src/core/diagnostics.ts +36 -3
  278. package/src/core/directive-diagnostics.ts +265 -47
  279. package/src/core/former-routes.ts +46 -0
  280. package/src/core/git-ignored.ts +53 -0
  281. package/src/core/github.ts +5 -4
  282. package/src/core/heading-markers.ts +156 -2
  283. package/src/core/hidden-pages.ts +64 -0
  284. package/src/core/includes.ts +181 -41
  285. package/src/core/last-modified.ts +47 -10
  286. package/src/core/links.ts +438 -83
  287. package/src/core/load-module.ts +98 -9
  288. package/src/core/manifest.ts +12 -9
  289. package/src/core/markdown-mirrors.ts +52 -0
  290. package/src/core/mdx-elements.ts +153 -0
  291. package/src/core/mdx-syntax.ts +377 -0
  292. package/src/core/meta-diagnostics.ts +134 -0
  293. package/src/core/meta.ts +154 -55
  294. package/src/core/nav-diagnostics.ts +16 -4
  295. package/src/core/navigation.ts +70 -10
  296. package/src/core/ordering-prefix.ts +22 -2
  297. package/src/core/pinned-ids.ts +141 -0
  298. package/src/core/project-graph.ts +221 -29
  299. package/src/core/redirect-patterns.ts +41 -0
  300. package/src/core/relative-files.ts +145 -0
  301. package/src/core/schema.ts +17 -3
  302. package/src/core/sources/mdx-remote.ts +75 -14
  303. package/src/core/sources/normalize.ts +885 -179
  304. package/src/core/sources/notion.ts +5 -4
  305. package/src/core/sources/obsidian.ts +2 -5
  306. package/src/core/sources/types.ts +17 -0
  307. package/src/core/static-files.ts +40 -0
  308. package/src/core/static-host.ts +125 -0
  309. package/src/core/svg-images.ts +98 -0
  310. package/src/core/syntax-diagnostics.ts +491 -0
  311. package/src/core/types.ts +43 -1
  312. package/src/deploy/artifacts.ts +2 -28
  313. package/src/deploy/generated-files.ts +128 -0
  314. package/src/deploy/platforms/vercel.ts +25 -1
  315. package/src/deploy/redirects.ts +43 -16
  316. package/src/deploy/sitemap.ts +2 -1
  317. package/src/markdown/base-links.ts +87 -6
  318. package/src/markdown/code-title.ts +29 -13
  319. package/src/markdown/content-assets.ts +210 -0
  320. package/src/markdown/directives.ts +69 -5
  321. package/src/markdown/fence-language.ts +106 -0
  322. package/src/markdown/fence-meta.ts +42 -0
  323. package/src/markdown/github-alerts.ts +172 -0
  324. package/src/markdown/heading-anchors.ts +265 -56
  325. package/src/markdown/include.ts +30 -3
  326. package/src/markdown/index.ts +145 -40
  327. package/src/markdown/prompt-text.ts +95 -0
  328. package/src/markdown/relative-links.ts +37 -2
  329. package/src/markdown/route-snapshot.ts +22 -12
  330. package/src/markdown/svg-fallback.ts +51 -0
  331. package/src/markdown/title-heading.ts +134 -0
  332. package/src/migrate/migrate.ts +127 -2
  333. package/src/og/card.ts +14 -4
  334. package/src/openapi/asyncapi.ts +14 -6
  335. package/src/openapi/checks.ts +160 -15
  336. package/src/openapi/model.ts +172 -33
  337. package/src/openapi/parse.ts +13 -4
  338. package/src/openapi/render-mdx.ts +55 -9
  339. package/src/openapi/source.ts +87 -6
  340. package/src/registry/eject.ts +0 -1
  341. package/src/search/documents.ts +10 -2
  342. package/src/sources/filesystem.ts +28 -3
  343. package/src/sources/mdx-remote.ts +7 -15
  344. package/src/theme/color.ts +14 -0
  345. package/src/theme/entry.ts +22 -1
  346. package/src/theme/palette.ts +74 -1
  347. package/dist/cli/chunk-0pmb4tr4.js.map +0 -35
  348. package/dist/cli/chunk-0w6hs479.js.map +0 -10
  349. package/dist/cli/chunk-150jk7km.js +0 -52
  350. package/dist/cli/chunk-150jk7km.js.map +0 -10
  351. package/dist/cli/chunk-36bxs9c7.js.map +0 -10
  352. package/dist/cli/chunk-53jqw8z0.js +0 -89
  353. package/dist/cli/chunk-53jqw8z0.js.map +0 -10
  354. package/dist/cli/chunk-60hz265r.js.map +0 -10
  355. package/dist/cli/chunk-desvm72z.js.map +0 -14
  356. package/dist/cli/chunk-dpy8qdjf.js.map +0 -17
  357. package/dist/cli/chunk-es8h0v3j.js +0 -441
  358. package/dist/cli/chunk-es8h0v3j.js.map +0 -11
  359. package/dist/cli/chunk-kdpzw38a.js.map +0 -11
  360. package/dist/cli/chunk-nbyvgnnm.js.map +0 -36
  361. package/dist/cli/chunk-s0bdnc7v.js.map +0 -10
  362. package/dist/cli/chunk-twy7psdz.js.map +0 -10
  363. package/dist/cli/chunk-ydp3065p.js +0 -64
  364. package/dist/cli/chunk-ydp3065p.js.map +0 -10
  365. /package/dist/cli/{chunk-74wfhv79.js.map → chunk-05f21r8h.js.map} +0 -0
  366. /package/dist/cli/{chunk-9qzgg6mj.js.map → chunk-1cm0h819.js.map} +0 -0
  367. /package/dist/cli/{chunk-ms9z66nz.js.map → chunk-4rftmttv.js.map} +0 -0
  368. /package/dist/cli/{chunk-hvcxng5f.js.map → chunk-7tekknev.js.map} +0 -0
  369. /package/dist/cli/{chunk-bxwhtvw8.js.map → chunk-ahc5gc9h.js.map} +0 -0
  370. /package/dist/cli/{chunk-tfycddbt.js.map → chunk-bjk964fp.js.map} +0 -0
  371. /package/dist/cli/{chunk-dqhg54mr.js.map → chunk-dmx6cezx.js.map} +0 -0
  372. /package/dist/cli/{chunk-ave1wcbr.js.map → chunk-m9bp2hc1.js.map} +0 -0
  373. /package/dist/cli/{chunk-58bt3hag.js.map → chunk-mrvh4c88.js.map} +0 -0
  374. /package/dist/cli/{chunk-1f882900.js.map → chunk-th0pgaj5.js.map} +0 -0
  375. /package/dist/cli/{chunk-dhwtqnnd.js.map → chunk-vnbvhgmd.js.map} +0 -0
  376. /package/dist/cli/{chunk-j1x92mx9.js.map → chunk-w6e455pz.js.map} +0 -0
  377. /package/dist/cli/{chunk-y4msrwm9.js.map → chunk-xgq4eytj.js.map} +0 -0
@@ -3,7 +3,8 @@ import {
3
3
  packageRoot,
4
4
  getBlumeVersion,
5
5
  BlumeError,
6
- enrichDiagnostic
6
+ enrichDiagnostic,
7
+ formatDiagnostic
7
8
  } from "./index.js";
8
9
  import {
9
10
  resolveFallbackLocale,
@@ -45,7 +46,7 @@ import {
45
46
  EN_UI,
46
47
  resolveUIStrings,
47
48
  buildIncludeGraph,
48
- rewriteRelativeImages,
49
+ rewriteRelativeAssets,
49
50
  collectContentAssets,
50
51
  buildRssFeeds,
51
52
  renderRssFeed,
@@ -54,8 +55,18 @@ import {
54
55
  readOverlaidSpec,
55
56
  isOpenApiSource,
56
57
  buildRawMarkdown,
57
- markdownRoutePaths
58
- } from "./chunk-124fvmzq.js";
58
+ markdownRoutePaths,
59
+ resolveAccent,
60
+ resolveRadius,
61
+ buildThemeCss
62
+ } from "./chunk-dm4mg9bj.js";
63
+ import {
64
+ validateSearchPopularIcons,
65
+ validateNavTargets,
66
+ gitEnv,
67
+ realPath,
68
+ gitRepositoryRoot
69
+ } from "./chunk-8f8xw4x2.js";
59
70
  import {
60
71
  trimChar,
61
72
  normalizeBasePath,
@@ -64,15 +75,11 @@ import {
64
75
  siteRoot,
65
76
  absoluteUrl2
66
77
  } from "./chunk-zccbjcj0.js";
67
- import {
68
- validateSearchPopularIcons,
69
- validateNavTargets
70
- } from "./chunk-0pmb4tr4.js";
71
78
  import {
72
79
  EXPANDABLE_VISIBLE_LINES,
73
80
  buildSearchDocuments,
74
81
  buildMcpData
75
- } from "./chunk-desvm72z.js";
82
+ } from "./chunk-2nr29y95.js";
76
83
  import {
77
84
  planComponentSlots,
78
85
  publishRuntimeModules,
@@ -113,9 +120,13 @@ import {
113
120
  examplesPageTemplate,
114
121
  runtimePackageTemplate,
115
122
  runtimeTsconfigTemplate
116
- } from "./chunk-dpy8qdjf.js";
123
+ } from "./chunk-as09pafp.js";
124
+ import {
125
+ servedFiles
126
+ } from "./chunk-96snx8yy.js";
117
127
  import {
118
128
  validateUsedComponents,
129
+ unknownPropDiagnostics,
119
130
  missingExampleDiagnostics,
120
131
  discoverIslands,
121
132
  EXAMPLE_SCAN_GLOB,
@@ -123,22 +134,17 @@ import {
123
134
  discoverExamples,
124
135
  exampleMarkdownLookup,
125
136
  missingDependencyDiagnostic
126
- } from "./chunk-ckrcm08h.js";
137
+ } from "./chunk-a3ydrqny.js";
127
138
  import {
128
139
  emptyComponentOverrides,
129
140
  analyzeComponentOverrides
130
- } from "./chunk-j1x92mx9.js";
141
+ } from "./chunk-w6e455pz.js";
131
142
  import {
132
143
  writeTextAtomic
133
144
  } from "./chunk-jq5n4avg.js";
134
- import {
135
- resolveAccent,
136
- resolveRadius,
137
- buildThemeCss
138
- } from "./chunk-es8h0v3j.js";
139
145
  import {
140
146
  registry
141
- } from "./chunk-dqhg54mr.js";
147
+ } from "./chunk-dmx6cezx.js";
142
148
 
143
149
  // src/astro/integration.ts
144
150
  import { join as join4, relative, resolve as resolve2 } from "pathe";
@@ -246,10 +252,6 @@ import { dirname as dirname2, join as join2 } from "pathe";
246
252
  var jsonBytes = (value) => Buffer.byteLength(JSON.stringify(value), "utf-8");
247
253
  var WIDEST_CHARACTER = jsonBytes("\x00");
248
254
 
249
- // src/deploy/sitemap.ts
250
- import { escape as escapeXml } from "html-escaper";
251
- var ERROR_ROUTES = new Set(["/404", "/500"]);
252
-
253
255
  // src/astro/integration.ts
254
256
  var REGISTRY_KEY = Symbol.for("blume.integration");
255
257
  var registry2 = () => {
@@ -382,7 +384,7 @@ import {
382
384
  import { createRequire as createRequire2 } from "node:module";
383
385
  import { pathToFileURL } from "node:url";
384
386
  import pMap from "p-map";
385
- import { dirname as dirname8, isAbsolute as isAbsolute5, join as join11, normalize as normalize2, relative as relative5, resolve as resolve6 } from "pathe";
387
+ import { dirname as dirname8, isAbsolute as isAbsolute6, join as join11, normalize as normalize2, relative as relative6, resolve as resolve6 } from "pathe";
386
388
  import { glob } from "tinyglobby";
387
389
 
388
390
  // src/ai/api/problem.ts
@@ -959,6 +961,39 @@ var navVariants = (data, hiddenDefault = null) => [
959
961
  })))
960
962
  ];
961
963
 
964
+ // src/core/git-ignored.ts
965
+ import { execFileSync } from "node:child_process";
966
+ import { isAbsolute, relative as relative2 } from "pathe";
967
+ var gitIgnoredPaths = (root, paths) => {
968
+ const gitRoot = paths.length > 0 ? gitRepositoryRoot(root) : null;
969
+ if (gitRoot === null) {
970
+ return new Set;
971
+ }
972
+ const top = realPath(gitRoot);
973
+ const byRepoPath = new Map;
974
+ for (const path of paths) {
975
+ const rel = relative2(top, realPath(path));
976
+ if (!(rel.startsWith("..") || isAbsolute(rel))) {
977
+ byRepoPath.set(rel, path);
978
+ }
979
+ }
980
+ try {
981
+ const output = execFileSync("git", ["-C", top, "check-ignore", "-z", "--stdin"], {
982
+ encoding: "utf-8",
983
+ env: gitEnv(),
984
+ input: [...byRepoPath.keys()].map((rel) => `${rel}\x00`).join(""),
985
+ maxBuffer: 256 * 1024 * 1024,
986
+ stdio: ["pipe", "pipe", "ignore"]
987
+ });
988
+ return new Set(output.split("\x00").flatMap((rel) => {
989
+ const path = byRepoPath.get(rel);
990
+ return path === undefined ? [] : [path];
991
+ }));
992
+ } catch {
993
+ return new Set;
994
+ }
995
+ };
996
+
962
997
  // src/core/svg-dimensions.ts
963
998
  var ROOT = /<svg\s(?:[^>"']|"[^"]*"|'[^']*')*>/u;
964
999
  var WIDTH = /\swidth=(?<quote>['"])(?<value>[^%]+?)\k<quote>/u;
@@ -1207,9 +1242,9 @@ var hasMermaidFence = (text) => MERMAID_FENCE.test(text);
1207
1242
 
1208
1243
  // src/og/derive.ts
1209
1244
  import { existsSync as existsSync3 } from "node:fs";
1210
- import { isAbsolute, join as join7 } from "pathe";
1245
+ import { isAbsolute as isAbsolute2, join as join7 } from "pathe";
1211
1246
  var CARD_WEIGHTS = [400, 600];
1212
- var absoluteSrc = (root, src) => isAbsolute(src) ? src : join7(root, src);
1247
+ var absoluteSrc = (root, src) => isAbsolute2(src) ? src : join7(root, src);
1213
1248
  var isNumericWeight = (weight) => typeof weight === "number";
1214
1249
  var isRangeWeight = (weight) => typeof weight === "string";
1215
1250
  var isFontName = (value) => typeof value === "string";
@@ -1405,7 +1440,7 @@ var resolveOgLogo = (project, source) => {
1405
1440
 
1406
1441
  // src/openapi/scalar.ts
1407
1442
  import { readFile as readFile2 } from "node:fs/promises";
1408
- import { isAbsolute as isAbsolute2, join as join9 } from "pathe";
1443
+ import { isAbsolute as isAbsolute3, join as join9 } from "pathe";
1409
1444
  var URL_SPEC = /^https?:\/\//u;
1410
1445
  var referencePagePath = (route) => {
1411
1446
  const segments = trimChar(route, "/");
@@ -1442,7 +1477,7 @@ var specConfiguration = async (ref, root) => {
1442
1477
  if (URL_SPEC.test(spec)) {
1443
1478
  return { config: { url: spec } };
1444
1479
  }
1445
- const absolute = isAbsolute2(spec) ? spec : join9(root, spec);
1480
+ const absolute = isAbsolute3(spec) ? spec : join9(root, spec);
1446
1481
  try {
1447
1482
  return { config: { content: await readFile2(absolute, "utf-8") } };
1448
1483
  } catch {
@@ -1522,10 +1557,10 @@ var resolveSearchPopular = (popular, basePath) => popular.map(({ href, icon, lab
1522
1557
  });
1523
1558
 
1524
1559
  // src/search/source-pages.ts
1525
- import { relative as relative2 } from "pathe";
1560
+ import { relative as relative3 } from "pathe";
1526
1561
  var sourcePages = (project) => project.manifest.routes.flatMap((route) => route.indexable && route.sourcePath ? [
1527
1562
  [
1528
- relative2(project.context.root, route.sourcePath),
1563
+ relative3(project.context.root, route.sourcePath),
1529
1564
  { title: route.title, url: route.path }
1530
1565
  ]
1531
1566
  ] : []);
@@ -1562,13 +1597,18 @@ var TOKEN_DEFAULTS = `:root {
1562
1597
  --blume-action: var(--blume-accent);
1563
1598
  --blume-action-foreground: var(--blume-accent-foreground);
1564
1599
  --blume-code-background: oklch(0.99 0 0);
1565
- /* Shiki notation transformers: line/word highlight, diff add/remove. */
1600
+ /* Shiki notation transformers: line/word highlight, diff add/remove, and
1601
+ error/warning lines. */
1566
1602
  --blume-code-highlight: oklch(0.55 0.16 255 / 0.1);
1567
1603
  --blume-code-highlight-border: oklch(0.55 0.16 255 / 0.55);
1568
1604
  --blume-code-add: oklch(0.72 0.16 150 / 0.16);
1569
1605
  --blume-code-add-border: oklch(0.52 0.15 150 / 0.7);
1570
1606
  --blume-code-remove: oklch(0.66 0.21 22 / 0.16);
1571
1607
  --blume-code-remove-border: oklch(0.55 0.2 22 / 0.7);
1608
+ --blume-code-error: oklch(0.66 0.21 22 / 0.16);
1609
+ --blume-code-error-border: oklch(0.55 0.2 22 / 0.7);
1610
+ --blume-code-warning: oklch(0.8 0.16 80 / 0.2);
1611
+ --blume-code-warning-border: oklch(0.66 0.15 70 / 0.75);
1572
1612
  --blume-code-word: oklch(0.55 0.16 255 / 0.16);
1573
1613
  --blume-code-word-border: oklch(0.55 0.16 255 / 0.5);
1574
1614
  --blume-radius: 0.75rem;
@@ -1628,6 +1668,10 @@ var TOKEN_DEFAULTS = `:root {
1628
1668
  --blume-code-add-border: oklch(0.72 0.16 150 / 0.7);
1629
1669
  --blume-code-remove: oklch(0.72 0.21 22 / 0.22);
1630
1670
  --blume-code-remove-border: oklch(0.7 0.2 22 / 0.7);
1671
+ --blume-code-error: oklch(0.72 0.21 22 / 0.22);
1672
+ --blume-code-error-border: oklch(0.7 0.2 22 / 0.7);
1673
+ --blume-code-warning: oklch(0.82 0.16 80 / 0.18);
1674
+ --blume-code-warning-border: oklch(0.82 0.16 80 / 0.7);
1631
1675
  --blume-code-word: oklch(0.7 0.14 255 / 0.22);
1632
1676
  --blume-code-word-border: oklch(0.7 0.14 255 / 0.55);
1633
1677
  }`;
@@ -2350,6 +2394,18 @@ pre[data-line-numbers] .line::before {
2350
2394
  box-shadow: inset 2px 0 0 0 var(--blume-code-remove-border);
2351
2395
  }
2352
2396
 
2397
+ /* Error and warning lines (\`// [!code error]\`, \`// [!code warning]\`) are
2398
+ highlighted lines with a level class, tinted red and amber. */
2399
+ .line.highlighted.error {
2400
+ background-color: var(--blume-code-error) !important;
2401
+ box-shadow: inset 2px 0 0 0 var(--blume-code-error-border);
2402
+ }
2403
+
2404
+ .line.highlighted.warning {
2405
+ background-color: var(--blume-code-warning) !important;
2406
+ box-shadow: inset 2px 0 0 0 var(--blume-code-warning-border);
2407
+ }
2408
+
2353
2409
  /* Word highlight (\`// [!code word:x]\`) wraps matches in an inline span. The
2354
2410
  element selector keeps it ahead of the transparent token-span rule. */
2355
2411
  span.highlighted-word {
@@ -2544,15 +2600,15 @@ ${options.userCss}
2544
2600
  `;
2545
2601
 
2546
2602
  // src/theme/sources.ts
2547
- import { dirname as dirname6, isAbsolute as isAbsolute3, relative as relative3, resolve as resolve4 } from "pathe";
2603
+ import { dirname as dirname6, isAbsolute as isAbsolute4, relative as relative4, resolve as resolve4 } from "pathe";
2548
2604
  var SOURCE_DIRECTIVE = /@source(?<not>\s+not)?\s+(?<quote>["'])(?<path>[^"']+)\k<quote>/gu;
2549
2605
  var rebaseSourceDirectives = (css, options) => {
2550
2606
  const base = dirname6(options.from);
2551
2607
  return css.replace(SOURCE_DIRECTIVE, (directive, not, quote, path) => {
2552
- if (isAbsolute3(path)) {
2608
+ if (isAbsolute4(path)) {
2553
2609
  return directive;
2554
2610
  }
2555
- const rebased = relative3(options.to, resolve4(base, path));
2611
+ const rebased = relative4(options.to, resolve4(base, path));
2556
2612
  return `@source${not ?? ""} ${quote}${rebased}${quote}`;
2557
2613
  });
2558
2614
  };
@@ -2644,10 +2700,10 @@ import { existsSync as existsSync5, realpathSync } from "node:fs";
2644
2700
  import {
2645
2701
  basename,
2646
2702
  dirname as dirname7,
2647
- isAbsolute as isAbsolute4,
2703
+ isAbsolute as isAbsolute5,
2648
2704
  join as join10,
2649
2705
  normalize,
2650
- relative as relative4,
2706
+ relative as relative5,
2651
2707
  resolve as resolve5
2652
2708
  } from "pathe";
2653
2709
  var depsCandidates = (pkgDir) => [
@@ -2856,7 +2912,7 @@ var loadIntegrationBridge = async (config, context) => {
2856
2912
  return;
2857
2913
  }
2858
2914
  return {
2859
- configFile: relative5(context.outDir, context.configFile),
2915
+ configFile: relative6(context.outDir, context.configFile),
2860
2916
  sourceHash: hashConfigSource(await readOptional(context.configFile))
2861
2917
  };
2862
2918
  };
@@ -2892,7 +2948,7 @@ var collectStaged = (project) => {
2892
2948
  const staged = new Map;
2893
2949
  for (const page of project.graph.pages) {
2894
2950
  if (page.collection === "staged" && page.entryId && page.body) {
2895
- const text = page.sourcePath ? rewriteRelativeImages({
2951
+ const text = page.sourcePath ? rewriteRelativeAssets({
2896
2952
  deployBase: project.config.deployment.options.base,
2897
2953
  projectRoot: project.context.root,
2898
2954
  source: page.body.text,
@@ -3120,14 +3176,15 @@ var buildRuntimeData = (project) => {
3120
3176
  const editBase = github ? editBaseUrl(github) : null;
3121
3177
  const logo = resolveLogo(project);
3122
3178
  const ogLogo = resolveOgMark(project, logo?.svg);
3179
+ const ignored = editBase ? gitIgnoredPaths(context.root, manifest.routes.flatMap((route) => route.editUrl === undefined && route.sourcePath ? [route.sourcePath] : [])) : new Set;
3123
3180
  const editUrlFor = (sourcePath) => {
3124
- if (!(editBase && sourcePath)) {
3181
+ if (!(editBase && sourcePath) || ignored.has(sourcePath)) {
3125
3182
  return null;
3126
3183
  }
3127
- const rel = relative5(context.root, sourcePath).split("\\").join("/");
3184
+ const rel = relative6(context.root, sourcePath).split("\\").join("/");
3128
3185
  const editDir = trimChar(github?.dir ?? "", "/");
3129
3186
  const editPath = normalize2(editDir ? join11(editDir, rel) : rel);
3130
- if (editPath.startsWith("..") || isAbsolute5(editPath)) {
3187
+ if (editPath.startsWith("..") || isAbsolute6(editPath)) {
3131
3188
  return null;
3132
3189
  }
3133
3190
  return `${editBase}/${editPath}`;
@@ -3636,7 +3693,8 @@ var generateRuntime = async (project) => {
3636
3693
  config,
3637
3694
  context,
3638
3695
  filesystem: hasFilesystemSource,
3639
- staged: hasStaged
3696
+ staged: hasStaged,
3697
+ unparsable: project.unparsable
3640
3698
  })),
3641
3699
  write(join11(srcDir, "pages", "[...slug].astro"), catchAllPageTemplate({
3642
3700
  exportEpub,
@@ -3686,8 +3744,7 @@ var generateRuntime = async (project) => {
3686
3744
  await write(join11(srcDir, "pages", "changelog.astro"), changelogIndexTemplate({
3687
3745
  exportEpub,
3688
3746
  exportPdf,
3689
- needsReact,
3690
- staged: hasStaged
3747
+ needsReact
3691
3748
  }));
3692
3749
  }
3693
3750
  const [examplesWarnings] = await Promise.all([
@@ -3740,14 +3797,14 @@ var generateRuntime = async (project) => {
3740
3797
  ...overrideWarnings
3741
3798
  ];
3742
3799
  warnings.push(...[
3743
- ...validateNavTargets(project.graph.navigation, navTargetRoutes(project, pages)),
3800
+ ...validateNavTargets(project.graph.navigation, navTargetRoutes(project, pages), servedFiles(project)),
3744
3801
  ...validateSearchPopularIcons(config.search.popular)
3745
3802
  ].map(diagnosticWarning));
3746
3803
  const knownComponentTags = new Set([
3747
3804
  ...islandDiscovery.islands.map((island) => island.name),
3748
3805
  ...overrideAnalysis.mdx.map((entry) => entry.key)
3749
3806
  ]);
3750
- warnings.push(...validateUsedComponents(project.graph.pages, knownComponentTags, new Set(registry.map((item) => item.name))).map(diagnosticWarning), ...missingExampleDiagnostics(project.graph.pages, exampleDiscovery, context.root, knownComponentTags).map(diagnosticWarning), ...dependencyWarnings);
3807
+ warnings.push(...validateUsedComponents(project.graph.pages, knownComponentTags, new Set(registry.map((item) => item.name))).map(diagnosticWarning), ...missingExampleDiagnostics(project.graph.pages, exampleDiscovery, context.root, knownComponentTags).map(diagnosticWarning), ...unknownPropDiagnostics(project.graph.pages, knownComponentTags).map((diagnostic) => formatDiagnostic(enrichDiagnostic(diagnostic), context.root)), ...dependencyWarnings);
3751
3808
  if (hasScalarReferences(config)) {
3752
3809
  const references = await buildReferenceFiles({
3753
3810
  config,
@@ -3772,5 +3829,5 @@ var generateRuntime = async (project) => {
3772
3829
 
3773
3830
  export { publishBuildProject, refreshBlumeContent, showBlumeErrorOverlay, ogCacheDir, pruneCardCache, cardCacheTally, buildApiSpec, buildAskData, resolveOgFonts, buildReferenceFiles, sourcePages, tailwindEntryTemplate, examplesEntryTemplate, rebaseSourceDirectives, twoslashCss, packageDirFrom, detectNeedsReact, detectUsesMath, collectStaged, playgroundProxyPattern, buildRuntimeData, PLAYGROUND_PROXY_ENTRY, specOrigins, proxyAllowlistWarnings, analyzeComponentsFile, languageIconCssFor, clientFeaturesFor, generateRuntime };
3774
3831
 
3775
- //# debugId=02FADD64003B143964756E2164756E21
3776
- //# sourceMappingURL=chunk-nbyvgnnm.js.map
3832
+ //# debugId=965D4F71AF60B29364756E2164756E21
3833
+ //# sourceMappingURL=chunk-1rkxzg3n.js.map