blume 2.2.2 → 2.2.4

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 (145) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/THIRD-PARTY-NOTICES.md +51 -0
  3. package/dist/cli/{chunk-kmswjxj9.js → chunk-0b1a8xqz.js} +3 -3
  4. package/dist/cli/{chunk-rtvgmg2j.js → chunk-0qx6vwwf.js} +2 -2
  5. package/dist/cli/{chunk-qcyxkj44.js → chunk-3ps63r91.js} +43 -17
  6. package/dist/cli/chunk-3ps63r91.js.map +15 -0
  7. package/dist/cli/{chunk-b680sv30.js → chunk-402xaaxn.js} +10 -8
  8. package/dist/cli/chunk-402xaaxn.js.map +13 -0
  9. package/dist/cli/{chunk-k45sq16q.js → chunk-49xa4yf2.js} +39 -23
  10. package/dist/cli/{chunk-k45sq16q.js.map → chunk-49xa4yf2.js.map} +3 -3
  11. package/dist/cli/{chunk-j4nfgn2j.js → chunk-51wr1wre.js} +1 -1
  12. package/dist/cli/{chunk-9jqmq5hv.js → chunk-531qbwn1.js} +6 -6
  13. package/dist/cli/{chunk-r5nm9w0c.js → chunk-5bp65pv4.js} +107 -37
  14. package/dist/cli/{chunk-r5nm9w0c.js.map → chunk-5bp65pv4.js.map} +11 -10
  15. package/dist/cli/{chunk-yg8ckc3g.js → chunk-6nvcjzts.js} +2 -2
  16. package/dist/cli/{chunk-x7bh6d9j.js → chunk-6v5w8vzd.js} +4 -4
  17. package/dist/cli/{chunk-f260jdrn.js → chunk-8cshtem6.js} +5 -5
  18. package/dist/cli/{chunk-ydqzkhjn.js → chunk-8h5ceyk0.js} +6 -6
  19. package/dist/cli/{chunk-e1n41w9m.js → chunk-8v90n67z.js} +3 -3
  20. package/dist/cli/{chunk-etckvbrh.js → chunk-98me5yas.js} +14 -14
  21. package/dist/cli/{chunk-hktq4j5r.js → chunk-9k7gg4ga.js} +16 -10
  22. package/dist/cli/{chunk-hktq4j5r.js.map → chunk-9k7gg4ga.js.map} +5 -5
  23. package/dist/cli/{chunk-34wap3ed.js → chunk-9qmc57zw.js} +3 -3
  24. package/dist/cli/{chunk-beb0z983.js → chunk-a1xmzxk2.js} +16 -16
  25. package/dist/cli/{chunk-gwy55cx3.js → chunk-ajw85dgf.js} +2 -2
  26. package/dist/cli/{chunk-69rjf786.js → chunk-ansqj08e.js} +5 -5
  27. package/dist/cli/{chunk-q1wwrxzw.js → chunk-b0vwhmdf.js} +3 -3
  28. package/dist/cli/chunk-b0vwhmdf.js.map +10 -0
  29. package/dist/cli/{chunk-nqna8dzp.js → chunk-b5gztt4j.js} +17 -17
  30. package/dist/cli/{chunk-fnxgtjeq.js → chunk-bc4jz2m4.js} +1 -1
  31. package/dist/cli/{chunk-aafhwx74.js → chunk-d4h1y312.js} +1 -1
  32. package/dist/cli/{chunk-080mfch6.js → chunk-et7zwqkg.js} +15 -15
  33. package/dist/cli/{chunk-487b95qy.js → chunk-f29q3j13.js} +41 -25
  34. package/dist/cli/{chunk-487b95qy.js.map → chunk-f29q3j13.js.map} +3 -3
  35. package/dist/cli/{chunk-c5bjxq8v.js → chunk-f72388jn.js} +2 -2
  36. package/dist/cli/{chunk-t2h8pwy1.js → chunk-g0hpwbyx.js} +4 -4
  37. package/dist/cli/{chunk-40vk8kgf.js → chunk-j102xmnk.js} +7 -7
  38. package/dist/cli/{chunk-ppa6mg4d.js → chunk-m54bz9ng.js} +6 -6
  39. package/dist/cli/{chunk-h0qwdbem.js → chunk-mt6njy68.js} +2 -2
  40. package/dist/cli/{chunk-2ssh60qh.js → chunk-n091sgam.js} +6 -6
  41. package/dist/cli/{chunk-1ch3ct3r.js → chunk-p33bf2nb.js} +14 -14
  42. package/dist/cli/{chunk-4zxh25hc.js → chunk-saxq5jjr.js} +2 -2
  43. package/dist/cli/{chunk-x60e15st.js → chunk-sbt1s5j2.js} +17 -17
  44. package/dist/cli/{chunk-gxhcf2hs.js → chunk-tckd6qwv.js} +2 -2
  45. package/dist/cli/{chunk-p834rkcn.js → chunk-tf4134kk.js} +5 -5
  46. package/dist/cli/{chunk-zxd5jrgx.js → chunk-vxdjss7f.js} +76 -34
  47. package/dist/cli/{chunk-zxd5jrgx.js.map → chunk-vxdjss7f.js.map} +4 -4
  48. package/dist/cli/{chunk-9h8mh2tk.js → chunk-x2pgg22t.js} +1 -1
  49. package/dist/cli/{chunk-hn3g2b89.js → chunk-xhrwrzrh.js} +9 -9
  50. package/dist/cli/index.js +18 -18
  51. package/dist/types/ai/ask-context.d.ts +8 -0
  52. package/dist/types/ai/link-text.d.ts +5 -0
  53. package/dist/types/ai/relative-links.d.ts +26 -6
  54. package/dist/types/core/config-input.d.ts +41 -1
  55. package/dist/types/core/data.d.ts +14 -0
  56. package/dist/types/core/last-modified.d.ts +33 -18
  57. package/dist/types/core/links.d.ts +16 -0
  58. package/dist/types/core/schema.d.ts +17 -1
  59. package/dist/types/core/types.d.ts +10 -0
  60. package/dist/types/deploy/sitemap.d.ts +9 -0
  61. package/dist/types/search/documents.d.ts +3 -1
  62. package/dist/types/search/fold.d.ts +33 -0
  63. package/dist/types/search/orama-index.d.ts +4 -4
  64. package/dist/types/seo/jsonld.d.ts +33 -0
  65. package/docs/configuration/search.mdx +2 -2
  66. package/docs/configuration/theming.mdx +13 -1
  67. package/docs/content/frontmatter.mdx +1 -1
  68. package/docs/content/i18n.mdx +1 -1
  69. package/docs/content/sources/remote-mdx.mdx +1 -1
  70. package/docs/discoverability/open-graph.mdx +16 -1
  71. package/docs/discoverability/sitemap-and-robots.mdx +12 -0
  72. package/docs/discoverability/structured-data.mdx +44 -0
  73. package/package.json +4 -3
  74. package/skills/blume-migrate/references/docus.md +1 -2
  75. package/skills/blume-migrate/references/docusaurus.md +1 -1
  76. package/skills/blume-migrate/references/vitepress.md +2 -2
  77. package/skills/blume-migrate/references/vuepress.md +1 -1
  78. package/src/ai/ask-context.ts +52 -14
  79. package/src/ai/ask-data.ts +4 -1
  80. package/src/ai/ask-tools.ts +17 -5
  81. package/src/ai/link-text.ts +6 -0
  82. package/src/ai/llms.ts +1 -7
  83. package/src/ai/markdown.ts +8 -4
  84. package/src/ai/relative-links.ts +155 -48
  85. package/src/ai/site-skill.ts +1 -4
  86. package/src/astro/generate.ts +7 -0
  87. package/src/astro/templates.ts +36 -20
  88. package/src/components/layout/Header.astro +18 -10
  89. package/src/components/layout/PageActions.astro +1 -0
  90. package/src/components/layout/PageLayout.astro +31 -13
  91. package/src/components/layout/ReferenceLayout.astro +6 -1
  92. package/src/components/layout/RootLayout.astro +13 -1
  93. package/src/components/layout/head-scripts.ts +5 -1
  94. package/src/components/layout/locale-redirect.ts +38 -19
  95. package/src/components/layout/search/types.ts +12 -4
  96. package/src/core/config-input.ts +40 -1
  97. package/src/core/config.ts +5 -2
  98. package/src/core/data.ts +14 -0
  99. package/src/core/last-modified.ts +80 -34
  100. package/src/core/links.ts +43 -2
  101. package/src/core/manifest.ts +2 -0
  102. package/src/core/project-graph.ts +83 -43
  103. package/src/core/schema.ts +48 -9
  104. package/src/core/types.ts +10 -0
  105. package/src/deploy/sitemap.ts +127 -49
  106. package/src/search/documents.ts +34 -11
  107. package/src/search/fold.ts +175 -0
  108. package/src/search/orama-index.ts +40 -49
  109. package/src/seo/jsonld.ts +100 -23
  110. package/src/theme/chrome-icons.ts +2 -1
  111. package/src/theme/entry.ts +4 -1
  112. package/dist/cli/chunk-b680sv30.js.map +0 -13
  113. package/dist/cli/chunk-q1wwrxzw.js.map +0 -10
  114. package/dist/cli/chunk-qcyxkj44.js.map +0 -14
  115. /package/dist/cli/{chunk-kmswjxj9.js.map → chunk-0b1a8xqz.js.map} +0 -0
  116. /package/dist/cli/{chunk-rtvgmg2j.js.map → chunk-0qx6vwwf.js.map} +0 -0
  117. /package/dist/cli/{chunk-j4nfgn2j.js.map → chunk-51wr1wre.js.map} +0 -0
  118. /package/dist/cli/{chunk-9jqmq5hv.js.map → chunk-531qbwn1.js.map} +0 -0
  119. /package/dist/cli/{chunk-yg8ckc3g.js.map → chunk-6nvcjzts.js.map} +0 -0
  120. /package/dist/cli/{chunk-x7bh6d9j.js.map → chunk-6v5w8vzd.js.map} +0 -0
  121. /package/dist/cli/{chunk-f260jdrn.js.map → chunk-8cshtem6.js.map} +0 -0
  122. /package/dist/cli/{chunk-ydqzkhjn.js.map → chunk-8h5ceyk0.js.map} +0 -0
  123. /package/dist/cli/{chunk-e1n41w9m.js.map → chunk-8v90n67z.js.map} +0 -0
  124. /package/dist/cli/{chunk-etckvbrh.js.map → chunk-98me5yas.js.map} +0 -0
  125. /package/dist/cli/{chunk-34wap3ed.js.map → chunk-9qmc57zw.js.map} +0 -0
  126. /package/dist/cli/{chunk-beb0z983.js.map → chunk-a1xmzxk2.js.map} +0 -0
  127. /package/dist/cli/{chunk-gwy55cx3.js.map → chunk-ajw85dgf.js.map} +0 -0
  128. /package/dist/cli/{chunk-69rjf786.js.map → chunk-ansqj08e.js.map} +0 -0
  129. /package/dist/cli/{chunk-nqna8dzp.js.map → chunk-b5gztt4j.js.map} +0 -0
  130. /package/dist/cli/{chunk-fnxgtjeq.js.map → chunk-bc4jz2m4.js.map} +0 -0
  131. /package/dist/cli/{chunk-aafhwx74.js.map → chunk-d4h1y312.js.map} +0 -0
  132. /package/dist/cli/{chunk-080mfch6.js.map → chunk-et7zwqkg.js.map} +0 -0
  133. /package/dist/cli/{chunk-c5bjxq8v.js.map → chunk-f72388jn.js.map} +0 -0
  134. /package/dist/cli/{chunk-t2h8pwy1.js.map → chunk-g0hpwbyx.js.map} +0 -0
  135. /package/dist/cli/{chunk-40vk8kgf.js.map → chunk-j102xmnk.js.map} +0 -0
  136. /package/dist/cli/{chunk-ppa6mg4d.js.map → chunk-m54bz9ng.js.map} +0 -0
  137. /package/dist/cli/{chunk-h0qwdbem.js.map → chunk-mt6njy68.js.map} +0 -0
  138. /package/dist/cli/{chunk-2ssh60qh.js.map → chunk-n091sgam.js.map} +0 -0
  139. /package/dist/cli/{chunk-1ch3ct3r.js.map → chunk-p33bf2nb.js.map} +0 -0
  140. /package/dist/cli/{chunk-4zxh25hc.js.map → chunk-saxq5jjr.js.map} +0 -0
  141. /package/dist/cli/{chunk-x60e15st.js.map → chunk-sbt1s5j2.js.map} +0 -0
  142. /package/dist/cli/{chunk-gxhcf2hs.js.map → chunk-tckd6qwv.js.map} +0 -0
  143. /package/dist/cli/{chunk-p834rkcn.js.map → chunk-tf4134kk.js.map} +0 -0
  144. /package/dist/cli/{chunk-9h8mh2tk.js.map → chunk-x2pgg22t.js.map} +0 -0
  145. /package/dist/cli/{chunk-hn3g2b89.js.map → chunk-xhrwrzrh.js.map} +0 -0
@@ -19,7 +19,7 @@ import {
19
19
  isOpenApiSource,
20
20
  buildRawMarkdown,
21
21
  buildThemeCss
22
- } from "./chunk-r5nm9w0c.js";
22
+ } from "./chunk-5bp65pv4.js";
23
23
  import {
24
24
  buildApiSpec,
25
25
  buildAskData,
@@ -41,17 +41,17 @@ import {
41
41
  analyzeComponentsFile,
42
42
  languageIconCssFor,
43
43
  clientFeaturesFor
44
- } from "./chunk-hktq4j5r.js";
44
+ } from "./chunk-9k7gg4ga.js";
45
45
  import {
46
46
  packageRoot
47
47
  } from "./index.js";
48
48
  import {
49
49
  scanProject
50
- } from "./chunk-zxd5jrgx.js";
50
+ } from "./chunk-vxdjss7f.js";
51
51
  import {
52
52
  buildSearchDocuments,
53
53
  buildMcpData
54
- } from "./chunk-b680sv30.js";
54
+ } from "./chunk-402xaaxn.js";
55
55
  import {
56
56
  planComponentSlots,
57
57
  runtimeDependencies,
@@ -87,14 +87,14 @@ import {
87
87
  exampleMapTemplate,
88
88
  examplesPageTemplate,
89
89
  runtimeTsconfigTemplate
90
- } from "./chunk-k45sq16q.js";
90
+ } from "./chunk-49xa4yf2.js";
91
91
  import {
92
92
  discoverIslands,
93
93
  EXAMPLE_SCAN_GLOB,
94
94
  exampleScanRoots,
95
95
  discoverExamples,
96
96
  exampleMarkdownLookup
97
- } from "./chunk-rtvgmg2j.js";
97
+ } from "./chunk-0qx6vwwf.js";
98
98
 
99
99
  // src/registry/eject.ts
100
100
  import { existsSync } from "node:fs";
@@ -635,4 +635,4 @@ var eject = async (root) => {
635
635
  export { eject };
636
636
 
637
637
  //# debugId=4A58A8E65AB4026D64756E2164756E21
638
- //# sourceMappingURL=chunk-40vk8kgf.js.map
638
+ //# sourceMappingURL=chunk-j102xmnk.js.map
@@ -7,7 +7,7 @@ import {
7
7
  hasGeneratedChangelog,
8
8
  buildManifest,
9
9
  validateLinks
10
- } from "./chunk-r5nm9w0c.js";
10
+ } from "./chunk-5bp65pv4.js";
11
11
  import {
12
12
  commandMeta,
13
13
  reportInternalError,
@@ -19,17 +19,17 @@ import {
19
19
  } from "./index.js";
20
20
  import {
21
21
  scanProject
22
- } from "./chunk-zxd5jrgx.js";
22
+ } from "./chunk-vxdjss7f.js";
23
23
  import {
24
24
  normalizeBasePath
25
25
  } from "./chunk-zccbjcj0.js";
26
26
  import {
27
27
  generatedFilePaths
28
- } from "./chunk-487b95qy.js";
28
+ } from "./chunk-f29q3j13.js";
29
29
  import {
30
30
  parseIgnoreFlag
31
- } from "./chunk-fnxgtjeq.js";
32
- import"./chunk-q1wwrxzw.js";
31
+ } from "./chunk-bc4jz2m4.js";
32
+ import"./chunk-b0vwhmdf.js";
33
33
 
34
34
  // src/cli/commands/validate.ts
35
35
  import { defineCommand } from "citty";
@@ -122,4 +122,4 @@ export {
122
122
  };
123
123
 
124
124
  //# debugId=0B908AF983A1FB4C64756E2164756E21
125
- //# sourceMappingURL=chunk-ppa6mg4d.js.map
125
+ //# sourceMappingURL=chunk-m54bz9ng.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  resolveRuntimeDir
4
- } from "./chunk-r5nm9w0c.js";
4
+ } from "./chunk-5bp65pv4.js";
5
5
  import {
6
6
  logger
7
7
  } from "./index.js";
@@ -197,4 +197,4 @@ var refuseIfDevRunning = (root, action, options = {}) => {
197
197
  export { readDevLock, DevLockHeldError, acquireDevLock, updateDevLockPort, describeDevLock, refuseIfDevRunning };
198
198
 
199
199
  //# debugId=BA0F0BBCC7BD124F64756E2164756E21
200
- //# sourceMappingURL=chunk-h0qwdbem.js.map
200
+ //# sourceMappingURL=chunk-mt6njy68.js.map
@@ -21,7 +21,7 @@ import {
21
21
  writeAgentReport,
22
22
  fixPrompt,
23
23
  launchInstalledAgent
24
- } from "./chunk-aafhwx74.js";
24
+ } from "./chunk-d4h1y312.js";
25
25
  import {
26
26
  routeSetFor,
27
27
  frontmatter_default,
@@ -40,7 +40,7 @@ import {
40
40
  labelOn,
41
41
  resolveAccent,
42
42
  resolveAction
43
- } from "./chunk-r5nm9w0c.js";
43
+ } from "./chunk-5bp65pv4.js";
44
44
  import {
45
45
  normalizeBasePath,
46
46
  normalizePath,
@@ -49,13 +49,13 @@ import {
49
49
  import {
50
50
  deployStaticDir,
51
51
  examplesRouteBase
52
- } from "./chunk-k45sq16q.js";
52
+ } from "./chunk-49xa4yf2.js";
53
53
  import {
54
54
  scanProject
55
- } from "./chunk-zxd5jrgx.js";
55
+ } from "./chunk-vxdjss7f.js";
56
56
  import {
57
57
  parseIgnoreFlag
58
- } from "./chunk-fnxgtjeq.js";
58
+ } from "./chunk-bc4jz2m4.js";
59
59
 
60
60
  // src/cli/commands/audit.ts
61
61
  import { defineCommand } from "citty";
@@ -2314,4 +2314,4 @@ export {
2314
2314
  };
2315
2315
 
2316
2316
  //# debugId=00C4E028AC9C126964756E2164756E21
2317
- //# sourceMappingURL=chunk-2ssh60qh.js.map
2317
+ //# sourceMappingURL=chunk-n091sgam.js.map
@@ -8,28 +8,28 @@ import {
8
8
  import {
9
9
  commandsFor,
10
10
  detectProjectPackageManager
11
- } from "./chunk-r5nm9w0c.js";
11
+ } from "./chunk-5bp65pv4.js";
12
12
  import"./chunk-zccbjcj0.js";
13
- import"./chunk-hktq4j5r.js";
14
- import"./chunk-zxd5jrgx.js";
15
- import"./chunk-b680sv30.js";
16
- import"./chunk-k45sq16q.js";
17
- import"./chunk-rtvgmg2j.js";
18
- import"./chunk-j4nfgn2j.js";
13
+ import"./chunk-9k7gg4ga.js";
14
+ import"./chunk-vxdjss7f.js";
15
+ import"./chunk-402xaaxn.js";
16
+ import"./chunk-49xa4yf2.js";
17
+ import"./chunk-0qx6vwwf.js";
18
+ import"./chunk-51wr1wre.js";
19
19
  import"./chunk-jq5n4avg.js";
20
- import"./chunk-487b95qy.js";
21
- import"./chunk-9h8mh2tk.js";
20
+ import"./chunk-f29q3j13.js";
21
+ import"./chunk-x2pgg22t.js";
22
22
  import {
23
23
  updatePackageScripts,
24
24
  isEjectedProject
25
- } from "./chunk-e1n41w9m.js";
25
+ } from "./chunk-8v90n67z.js";
26
26
  import {
27
27
  eject
28
- } from "./chunk-40vk8kgf.js";
28
+ } from "./chunk-j102xmnk.js";
29
29
  import {
30
30
  refuseIfDevRunning
31
- } from "./chunk-h0qwdbem.js";
32
- import"./chunk-q1wwrxzw.js";
31
+ } from "./chunk-mt6njy68.js";
32
+ import"./chunk-b0vwhmdf.js";
33
33
 
34
34
  // src/cli/commands/eject.ts
35
35
  import { defineCommand } from "citty";
@@ -95,4 +95,4 @@ export {
95
95
  };
96
96
 
97
97
  //# debugId=9A7F310B3D4EBEE364756E2164756E21
98
- //# sourceMappingURL=chunk-1ch3ct3r.js.map
98
+ //# sourceMappingURL=chunk-p33bf2nb.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  locateMdxFailure
4
- } from "./chunk-zxd5jrgx.js";
4
+ } from "./chunk-vxdjss7f.js";
5
5
 
6
6
  // src/cli/build-failure.ts
7
7
  import { existsSync, readFileSync } from "node:fs";
@@ -154,4 +154,4 @@ var buildFailureLocator = (project) => (file, failure) => {
154
154
  export { astroBuildDiagnostics, buildFailureLocator };
155
155
 
156
156
  //# debugId=A5E390AFCF69E70164756E2164756E21
157
- //# sourceMappingURL=chunk-4zxh25hc.js.map
157
+ //# sourceMappingURL=chunk-saxq5jjr.js.map
@@ -3,12 +3,12 @@ import"./chunk-zccbjcj0.js";
3
3
  import {
4
4
  referenceSpecFiles,
5
5
  resolveRuntimeDir
6
- } from "./chunk-r5nm9w0c.js";
6
+ } from "./chunk-5bp65pv4.js";
7
7
  import {
8
8
  refreshBlumeContent,
9
9
  showBlumeErrorOverlay,
10
10
  generateRuntime
11
- } from "./chunk-hktq4j5r.js";
11
+ } from "./chunk-9k7gg4ga.js";
12
12
  import {
13
13
  commandMeta,
14
14
  normalizeHost,
@@ -18,34 +18,34 @@ import {
18
18
  } from "./index.js";
19
19
  import {
20
20
  scanProject
21
- } from "./chunk-zxd5jrgx.js";
22
- import"./chunk-b680sv30.js";
23
- import"./chunk-rtvgmg2j.js";
24
- import"./chunk-j4nfgn2j.js";
21
+ } from "./chunk-vxdjss7f.js";
22
+ import"./chunk-402xaaxn.js";
23
+ import"./chunk-0qx6vwwf.js";
24
+ import"./chunk-51wr1wre.js";
25
25
  import"./chunk-jq5n4avg.js";
26
- import"./chunk-487b95qy.js";
27
- import"./chunk-k45sq16q.js";
28
- import"./chunk-9h8mh2tk.js";
26
+ import"./chunk-f29q3j13.js";
27
+ import"./chunk-49xa4yf2.js";
28
+ import"./chunk-x2pgg22t.js";
29
29
  import {
30
30
  refuseIfEjected
31
- } from "./chunk-e1n41w9m.js";
31
+ } from "./chunk-8v90n67z.js";
32
32
  import {
33
33
  parsePort
34
- } from "./chunk-fnxgtjeq.js";
34
+ } from "./chunk-bc4jz2m4.js";
35
35
  import {
36
36
  astroBuildDiagnostics
37
- } from "./chunk-4zxh25hc.js";
37
+ } from "./chunk-saxq5jjr.js";
38
38
  import {
39
39
  DevLockHeldError,
40
40
  acquireDevLock,
41
41
  updateDevLockPort,
42
42
  describeDevLock
43
- } from "./chunk-h0qwdbem.js";
43
+ } from "./chunk-mt6njy68.js";
44
44
  import {
45
45
  prepareProject
46
- } from "./chunk-t2h8pwy1.js";
47
- import"./chunk-gwy55cx3.js";
48
- import"./chunk-q1wwrxzw.js";
46
+ } from "./chunk-g0hpwbyx.js";
47
+ import"./chunk-ajw85dgf.js";
48
+ import"./chunk-b0vwhmdf.js";
49
49
 
50
50
  // src/cli/commands/dev.ts
51
51
  import { dev } from "astro";
@@ -200,4 +200,4 @@ export {
200
200
  };
201
201
 
202
202
  //# debugId=69D928DFB8AB7AAA64756E2164756E21
203
- //# sourceMappingURL=chunk-x60e15st.js.map
203
+ //# sourceMappingURL=chunk-sbt1s5j2.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  commandsFor
4
- } from "./chunk-r5nm9w0c.js";
4
+ } from "./chunk-5bp65pv4.js";
5
5
 
6
6
  // src/cli/init/install.ts
7
7
  import { spawn } from "node:child_process";
@@ -36,4 +36,4 @@ var installDependencies = async (root, pm, { quiet }) => {
36
36
  export { installDependencies };
37
37
 
38
38
  //# debugId=3BBCF1D4B57D128664756E2164756E21
39
- //# sourceMappingURL=chunk-gxhcf2hs.js.map
39
+ //# sourceMappingURL=chunk-tckd6qwv.js.map
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import"./chunk-r5nm9w0c.js";
2
+ import"./chunk-5bp65pv4.js";
3
3
  import {
4
4
  packageRoot,
5
5
  getBlumeVersion,
@@ -13,13 +13,13 @@ import"./chunk-zccbjcj0.js";
13
13
  import {
14
14
  AGENTS,
15
15
  launchInstalledAgent
16
- } from "./chunk-aafhwx74.js";
16
+ } from "./chunk-d4h1y312.js";
17
17
  import {
18
18
  scanProject
19
- } from "./chunk-zxd5jrgx.js";
19
+ } from "./chunk-vxdjss7f.js";
20
20
  import {
21
21
  siteSkillName
22
- } from "./chunk-q1wwrxzw.js";
22
+ } from "./chunk-b0vwhmdf.js";
23
23
 
24
24
  // src/cli/commands/skill.ts
25
25
  import { defineCommand } from "citty";
@@ -123,4 +123,4 @@ export {
123
123
  };
124
124
 
125
125
  //# debugId=8BB2AE139A5F70AE64756E2164756E21
126
- //# sourceMappingURL=chunk-p834rkcn.js.map
126
+ //# sourceMappingURL=chunk-tf4134kk.js.map
@@ -90,7 +90,7 @@ import {
90
90
  createModuleLoader,
91
91
  resolveProjectContext,
92
92
  loadConfig
93
- } from "./chunk-r5nm9w0c.js";
93
+ } from "./chunk-5bp65pv4.js";
94
94
  import {
95
95
  BlumeError,
96
96
  locatePath,
@@ -1113,9 +1113,11 @@ var GIT_LOCATION_VARS = new Set([
1113
1113
  var gitEnv = () => Object.fromEntries(Object.entries(process.env).filter(([key]) => !GIT_LOCATION_VARS.has(key)));
1114
1114
  var resolveLastModifiedConfig = (value) => value === false ? { enabled: false, source: "git" } : { enabled: true, source: value };
1115
1115
  var parseGitLog = (output) => {
1116
- const times = new Map;
1116
+ const modified = new Map;
1117
+ const published = new Map;
1117
1118
  const currentNames = new Map;
1118
1119
  const renamedAt = new Map;
1120
+ const added = new Set;
1119
1121
  let current = null;
1120
1122
  for (const line of output.split(`
1121
1123
  `)) {
@@ -1129,21 +1131,27 @@ var parseGitLog = (output) => {
1129
1131
  continue;
1130
1132
  }
1131
1133
  const name = currentNames.get(path) ?? path;
1134
+ if (!added.has(name)) {
1135
+ published.set(name, current);
1136
+ if (status === "A") {
1137
+ added.add(name);
1138
+ }
1139
+ }
1132
1140
  if (status.startsWith("R")) {
1133
1141
  currentNames.set(from, name);
1134
1142
  if (!renamedAt.has(name)) {
1135
1143
  renamedAt.set(name, current);
1136
1144
  }
1137
- } else if (!times.has(name)) {
1138
- times.set(name, current);
1145
+ } else if (!modified.has(name)) {
1146
+ modified.set(name, current);
1139
1147
  }
1140
1148
  }
1141
1149
  for (const [name, date] of renamedAt) {
1142
- if (!times.has(name)) {
1143
- times.set(name, date);
1150
+ if (!modified.has(name)) {
1151
+ modified.set(name, date);
1144
1152
  }
1145
1153
  }
1146
- return times;
1154
+ return { modified, published };
1147
1155
  };
1148
1156
  var realPath = (path) => {
1149
1157
  try {
@@ -1159,13 +1167,14 @@ var gitRepositoryRoot = (root) => {
1159
1167
  return null;
1160
1168
  }
1161
1169
  };
1162
- var gitLastModifiedTimes = (root, contentRoots, sourcePaths, repositoryRoot) => {
1170
+ var noDates = () => ({ modified: new Map, published: new Map });
1171
+ var gitFileDates = (root, contentRoots, sourcePaths, repositoryRoot) => {
1163
1172
  if (sourcePaths.length === 0 || contentRoots.length === 0) {
1164
- return new Map;
1173
+ return noDates();
1165
1174
  }
1166
1175
  const gitRoot = repositoryRoot === undefined ? gitRepositoryRoot(root) : repositoryRoot;
1167
1176
  if (gitRoot === null) {
1168
- return new Map;
1177
+ return noDates();
1169
1178
  }
1170
1179
  const top = realPath(gitRoot);
1171
1180
  try {
@@ -1182,16 +1191,19 @@ var gitLastModifiedTimes = (root, contentRoots, sourcePaths, repositoryRoot) =>
1182
1191
  ...contentRoots.map(realPath)
1183
1192
  ], { encoding: "utf-8", env: gitEnv(), maxBuffer: 256 * 1024 * 1024 });
1184
1193
  const byRepoPath = parseGitLog(output);
1185
- const result = new Map;
1194
+ const result = noDates();
1186
1195
  for (const sourcePath of sourcePaths) {
1187
- const iso = byRepoPath.get(relative(top, realPath(sourcePath)));
1188
- if (iso) {
1189
- result.set(sourcePath, iso);
1196
+ const repoPath = relative(top, realPath(sourcePath));
1197
+ for (const key of ["modified", "published"]) {
1198
+ const iso = byRepoPath[key].get(repoPath);
1199
+ if (iso) {
1200
+ result[key].set(sourcePath, iso);
1201
+ }
1190
1202
  }
1191
1203
  }
1192
1204
  return result;
1193
1205
  } catch {
1194
- return new Map;
1206
+ return noDates();
1195
1207
  }
1196
1208
  };
1197
1209
  var isShallowGitRepository = (root) => {
@@ -1205,6 +1217,7 @@ var isShallowGitRepository = (root) => {
1205
1217
  return false;
1206
1218
  }
1207
1219
  };
1220
+ var SHALLOW_CLONE_SUGGESTION = "Fetch full history in CI: set the VERCEL_DEEP_CLONE=true environment variable on Vercel, or fetch-depth: 0 for actions/checkout.";
1208
1221
  var lastModifiedShallowWarning = (root, undatedCount) => {
1209
1222
  if (undatedCount === 0 || !isShallowGitRepository(root)) {
1210
1223
  return [];
@@ -1214,10 +1227,18 @@ var lastModifiedShallowWarning = (root, undatedCount) => {
1214
1227
  code: "BLUME_SHALLOW_GIT_HISTORY",
1215
1228
  message: `lastModified is on, but this build runs in a shallow git clone, so ${undatedCount} page(s) have no git-derived date — their sitemap <lastmod> and "Last updated" stamps are omitted.`,
1216
1229
  severity: "warning",
1217
- suggestion: "Fetch full history in CI: set the VERCEL_DEEP_CLONE=true environment variable on Vercel, or fetch-depth: 0 for actions/checkout."
1230
+ suggestion: SHALLOW_CLONE_SUGGESTION
1218
1231
  }
1219
1232
  ];
1220
1233
  };
1234
+ var datePublishedShallowWarning = (undatedCount) => undatedCount === 0 ? [] : [
1235
+ {
1236
+ code: "BLUME_SHALLOW_GIT_HISTORY",
1237
+ message: `seo.datePublished is "git", but this build runs in a shallow git clone, so ${undatedCount} page(s) without a front matter date have no datePublished.`,
1238
+ severity: "warning",
1239
+ suggestion: SHALLOW_CLONE_SUGGESTION
1240
+ }
1241
+ ];
1221
1242
 
1222
1243
  // src/core/mdx-syntax.ts
1223
1244
  import { readFile } from "node:fs/promises";
@@ -4593,6 +4614,41 @@ var gitContentRoots = (sources, gitRoot) => {
4593
4614
  const top = realPath(gitRoot);
4594
4615
  return sources.flatMap((source) => source.contentRoot ? [source.contentRoot] : []).filter((dir) => isWithin(top, realPath(dir)));
4595
4616
  };
4617
+ var hasPublishedDate = (page) => Boolean(page.meta.date ?? page.meta.changelog?.date);
4618
+ var applyGitDates = (pages, sources, root, config) => {
4619
+ const lastModified = resolveLastModifiedConfig(config.lastModified);
4620
+ const gitModified = lastModified.enabled && lastModified.source === "git";
4621
+ const gitPublished = config.seo.datePublished === "git";
4622
+ if (!(gitModified || gitPublished)) {
4623
+ return [];
4624
+ }
4625
+ const fsPaths = pages.map((page) => page.sourcePath).filter((path) => path !== undefined);
4626
+ const gitRoot = gitRepositoryRoot(root);
4627
+ const contentRoots = gitContentRoots(sources, gitRoot);
4628
+ const gitDates = gitFileDates(root, contentRoots, fsPaths, gitRoot);
4629
+ const datable = pages.filter((page) => page.sourcePath && contentRoots.some((dir) => isWithin(dir, page.sourcePath ?? "")));
4630
+ const warnings = [];
4631
+ if (gitModified) {
4632
+ for (const page of pages) {
4633
+ if (!page.lastModified && page.sourcePath) {
4634
+ page.lastModified = gitDates.modified.get(page.sourcePath);
4635
+ }
4636
+ }
4637
+ warnings.push(...lastModifiedShallowWarning(root, datable.filter((page) => !page.lastModified).length));
4638
+ }
4639
+ if (gitPublished) {
4640
+ const shallow = isShallowGitRepository(root);
4641
+ for (const page of pages) {
4642
+ if (!(shallow || hasPublishedDate(page)) && page.sourcePath) {
4643
+ page.published = gitDates.published.get(page.sourcePath);
4644
+ }
4645
+ }
4646
+ if (shallow) {
4647
+ warnings.push(...datePublishedShallowWarning(datable.filter((page) => !hasPublishedDate(page)).length));
4648
+ }
4649
+ }
4650
+ return warnings;
4651
+ };
4596
4652
  var isLogoShorthand = (logo) => typeof logo === "string";
4597
4653
  var logoHref = (logo) => logo === undefined || isLogoShorthand(logo) ? "/" : logo.href ?? "/";
4598
4654
  var isBannerShorthand = (banner) => typeof banner === "string";
@@ -4765,21 +4821,7 @@ var scanProject = async (root, options = {}) => {
4765
4821
  versionDirs: config.versions?.archived.map((version) => version.id)
4766
4822
  });
4767
4823
  const pages = mode === "build" && !preview ? allPages.filter((page) => !page.meta.draft) : allPages;
4768
- const lastModified = resolveLastModifiedConfig(config.lastModified);
4769
- const lastModifiedWarnings = [];
4770
- if (lastModified.enabled && lastModified.source === "git") {
4771
- const fsPaths = pages.map((page) => page.sourcePath).filter((path) => path !== undefined);
4772
- const gitRoot = gitRepositoryRoot(context.root);
4773
- const contentRoots = gitContentRoots(sources, gitRoot);
4774
- const gitTimes = gitLastModifiedTimes(context.root, contentRoots, fsPaths, gitRoot);
4775
- for (const page of pages) {
4776
- if (!page.lastModified && page.sourcePath) {
4777
- page.lastModified = gitTimes.get(page.sourcePath);
4778
- }
4779
- }
4780
- const undated = pages.filter((page) => page.sourcePath && !page.lastModified && contentRoots.some((dir) => isWithin(dir, page.sourcePath ?? ""))).length;
4781
- lastModifiedWarnings.push(...lastModifiedShallowWarning(context.root, undated));
4782
- }
4824
+ const gitDateWarnings = applyGitDates(pages, sources, context.root, config);
4783
4825
  const customPages = context.pagesRoot ? await discoverPages(context.pagesRoot) : [];
4784
4826
  const extraRoutes = new Set([
4785
4827
  ...customStaticRoutes(customPages),
@@ -4822,7 +4864,7 @@ var scanProject = async (root, options = {}) => {
4822
4864
  ...graph.diagnostics,
4823
4865
  ...i18nWarnings,
4824
4866
  ...versionWarnings,
4825
- ...lastModifiedWarnings,
4867
+ ...gitDateWarnings,
4826
4868
  ...svgWarnings,
4827
4869
  ...publicOpenApiDiagnostics(config, context.root),
4828
4870
  ...redirectPageDiagnostics(config, servedPaths, routeSetFor(manifest.routes), context.configFile)
@@ -4839,5 +4881,5 @@ var scanProject = async (root, options = {}) => {
4839
4881
 
4840
4882
  export { directiveSource, normalizeFence, QUOTED_ATTR, metaTokens, RESERVED_META_KEYWORDS, isForeignKeyword, isLineRange, validateSearchPopularIcons, validateMcpClientIcons, validateNavTargets, gitEnv, realPath, gitRepositoryRoot, locateMdxFailure, findFolderMetaFiles, isWithin, scanProject };
4841
4883
 
4842
- //# debugId=76845D03AD74A31664756E2164756E21
4843
- //# sourceMappingURL=chunk-zxd5jrgx.js.map
4884
+ //# debugId=C199F41EFA089E4F64756E2164756E21
4885
+ //# sourceMappingURL=chunk-vxdjss7f.js.map