blodemd 0.0.13 → 0.0.14

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 (136) hide show
  1. package/README.md +1 -1
  2. package/dev-server/lib/local-runtime.tsx +12 -15
  3. package/dev-server/package.json +5 -1
  4. package/dist/cli.mjs +1193 -978
  5. package/dist/cli.mjs.map +1 -1
  6. package/docs/app/globals.css +1 -1
  7. package/docs/components/api/api-playground.tsx +2 -5
  8. package/docs/components/api/api-reference.tsx +29 -3
  9. package/docs/components/docs/contextual-menu.tsx +37 -33
  10. package/docs/components/docs/copy-page-menu.tsx +18 -0
  11. package/docs/components/docs/doc-header.tsx +4 -1
  12. package/docs/components/docs/doc-shell.tsx +48 -18
  13. package/docs/components/docs/doc-sidebar.tsx +131 -89
  14. package/docs/components/docs/doc-toc.tsx +1 -0
  15. package/docs/components/docs/mobile-nav.tsx +72 -68
  16. package/docs/components/docs/sidebar-active-highlight.tsx +34 -0
  17. package/docs/components/docs/sidebar-scroll-area.tsx +9 -4
  18. package/docs/components/git/repo-picker.tsx +5 -2
  19. package/docs/components/mdx/index.tsx +31 -21
  20. package/docs/components/posthog-provider.tsx +42 -0
  21. package/docs/components/tenant-analytics.tsx +49 -0
  22. package/docs/components/third-parties.tsx +4 -1
  23. package/docs/components/ui/copy-button.tsx +16 -2
  24. package/docs/components/ui/search-dialog.tsx +431 -0
  25. package/docs/components/ui/search.tsx +44 -427
  26. package/docs/components/web-mcp.tsx +115 -0
  27. package/docs/lib/agent-skills.ts +48 -0
  28. package/docs/lib/config.ts +4 -5
  29. package/docs/lib/docs-collection.ts +7 -22
  30. package/docs/lib/docs-runtime.tsx +160 -10
  31. package/docs/lib/llms-full.ts +82 -0
  32. package/docs/lib/marketing-markdown.ts +79 -0
  33. package/docs/lib/marketing-site.ts +31 -0
  34. package/docs/lib/mdx.ts +17 -6
  35. package/docs/lib/routes.ts +19 -3
  36. package/docs/lib/shiki.ts +4 -0
  37. package/docs/lib/tenancy.ts +15 -2
  38. package/docs/lib/tenant-headers.ts +29 -0
  39. package/docs/lib/tenant-static.ts +73 -99
  40. package/package.json +8 -5
  41. package/packages/@repo/common/package.json +1 -1
  42. package/packages/@repo/contracts/dist/analytics.d.ts +21 -0
  43. package/packages/@repo/contracts/dist/analytics.d.ts.map +1 -0
  44. package/packages/@repo/contracts/dist/analytics.js +18 -0
  45. package/packages/@repo/contracts/dist/deployment.js +1 -1
  46. package/packages/@repo/contracts/dist/git.js +2 -2
  47. package/packages/@repo/contracts/dist/ids.d.ts.map +1 -1
  48. package/packages/@repo/contracts/dist/ids.js +2 -1
  49. package/packages/@repo/contracts/dist/index.d.ts +1 -0
  50. package/packages/@repo/contracts/dist/index.d.ts.map +1 -1
  51. package/packages/@repo/contracts/dist/index.js +1 -0
  52. package/packages/@repo/contracts/dist/project.d.ts +18 -1
  53. package/packages/@repo/contracts/dist/project.d.ts.map +1 -1
  54. package/packages/@repo/contracts/dist/project.js +3 -1
  55. package/packages/@repo/contracts/dist/tenant.d.ts +36 -0
  56. package/packages/@repo/contracts/dist/tenant.d.ts.map +1 -1
  57. package/packages/@repo/contracts/dist/tenant.js +2 -0
  58. package/packages/@repo/contracts/package.json +1 -1
  59. package/packages/@repo/contracts/src/analytics.ts +33 -0
  60. package/packages/@repo/contracts/src/deployment.ts +1 -1
  61. package/packages/@repo/contracts/src/git.ts +2 -2
  62. package/packages/@repo/contracts/src/ids.ts +2 -1
  63. package/packages/@repo/contracts/src/index.ts +1 -0
  64. package/packages/@repo/contracts/src/project.ts +3 -1
  65. package/packages/@repo/contracts/src/tenant.ts +2 -0
  66. package/packages/@repo/models/dist/docs-config.d.ts +0 -198
  67. package/packages/@repo/models/dist/docs-config.d.ts.map +1 -1
  68. package/packages/@repo/models/dist/docs-config.js +3 -2
  69. package/packages/@repo/models/dist/tenant.d.ts +12 -0
  70. package/packages/@repo/models/dist/tenant.d.ts.map +1 -1
  71. package/packages/@repo/models/package.json +1 -1
  72. package/packages/@repo/models/src/docs-config.ts +3 -3
  73. package/packages/@repo/models/src/tenant.ts +15 -0
  74. package/packages/@repo/prebuild/dist/openapi.d.ts.map +1 -1
  75. package/packages/@repo/prebuild/dist/openapi.js +32 -4
  76. package/packages/@repo/prebuild/package.json +1 -1
  77. package/packages/@repo/prebuild/src/openapi.ts +42 -4
  78. package/packages/@repo/previewing/dist/blob-source.d.ts.map +1 -1
  79. package/packages/@repo/previewing/dist/blob-source.js +18 -5
  80. package/packages/@repo/previewing/dist/config-loader.d.ts +134 -0
  81. package/packages/@repo/previewing/dist/config-loader.d.ts.map +1 -0
  82. package/packages/@repo/previewing/dist/config-loader.js +231 -0
  83. package/packages/@repo/previewing/dist/constants.d.ts +15 -0
  84. package/packages/@repo/previewing/dist/constants.d.ts.map +1 -0
  85. package/packages/@repo/previewing/dist/constants.js +14 -0
  86. package/packages/@repo/previewing/dist/content-index.d.ts +7 -0
  87. package/packages/@repo/previewing/dist/content-index.d.ts.map +1 -0
  88. package/packages/@repo/previewing/dist/content-index.js +291 -0
  89. package/packages/@repo/previewing/dist/index.d.ts +13 -121
  90. package/packages/@repo/previewing/dist/index.d.ts.map +1 -1
  91. package/packages/@repo/previewing/dist/index.js +11 -1003
  92. package/packages/@repo/previewing/dist/markdown/agent-markdown.d.ts +3 -0
  93. package/packages/@repo/previewing/dist/markdown/agent-markdown.d.ts.map +1 -0
  94. package/packages/@repo/previewing/dist/markdown/agent-markdown.js +176 -0
  95. package/packages/@repo/previewing/dist/markdown/format.d.ts +8 -0
  96. package/packages/@repo/previewing/dist/markdown/format.d.ts.map +1 -0
  97. package/packages/@repo/previewing/dist/markdown/format.js +43 -0
  98. package/packages/@repo/previewing/dist/markdown/links.d.ts +3 -0
  99. package/packages/@repo/previewing/dist/markdown/links.d.ts.map +1 -0
  100. package/packages/@repo/previewing/dist/markdown/links.js +31 -0
  101. package/packages/@repo/previewing/dist/openapi-pages.d.ts +7 -0
  102. package/packages/@repo/previewing/dist/openapi-pages.d.ts.map +1 -0
  103. package/packages/@repo/previewing/dist/openapi-pages.js +200 -0
  104. package/packages/@repo/previewing/dist/search-index.d.ts +4 -0
  105. package/packages/@repo/previewing/dist/search-index.d.ts.map +1 -0
  106. package/packages/@repo/previewing/dist/search-index.js +23 -0
  107. package/packages/@repo/previewing/dist/serialization.d.ts +13 -0
  108. package/packages/@repo/previewing/dist/serialization.d.ts.map +1 -0
  109. package/packages/@repo/previewing/dist/serialization.js +108 -0
  110. package/packages/@repo/previewing/dist/toc-index.d.ts +5 -0
  111. package/packages/@repo/previewing/dist/toc-index.d.ts.map +1 -0
  112. package/packages/@repo/previewing/dist/toc-index.js +53 -0
  113. package/packages/@repo/previewing/dist/types.d.ts +92 -0
  114. package/packages/@repo/previewing/dist/types.d.ts.map +1 -0
  115. package/packages/@repo/previewing/dist/types.js +1 -0
  116. package/packages/@repo/previewing/dist/utility-index.d.ts +7 -0
  117. package/packages/@repo/previewing/dist/utility-index.d.ts.map +1 -0
  118. package/packages/@repo/previewing/dist/utility-index.js +201 -0
  119. package/packages/@repo/previewing/package.json +1 -1
  120. package/packages/@repo/previewing/src/blob-source.ts +20 -5
  121. package/packages/@repo/previewing/src/config-loader.ts +316 -0
  122. package/packages/@repo/previewing/src/constants.ts +16 -0
  123. package/packages/@repo/previewing/src/content-index.ts +384 -0
  124. package/packages/@repo/previewing/src/index.ts +69 -1515
  125. package/packages/@repo/previewing/src/markdown/agent-markdown.ts +254 -0
  126. package/packages/@repo/previewing/src/markdown/format.ts +63 -0
  127. package/packages/@repo/previewing/src/markdown/links.ts +46 -0
  128. package/packages/@repo/previewing/src/openapi-pages.ts +319 -0
  129. package/packages/@repo/previewing/src/search-index.ts +38 -0
  130. package/packages/@repo/previewing/src/serialization.ts +191 -0
  131. package/packages/@repo/previewing/src/toc-index.ts +72 -0
  132. package/packages/@repo/previewing/src/types.ts +105 -0
  133. package/packages/@repo/previewing/src/utility-index.ts +304 -0
  134. package/packages/@repo/validation/package.json +1 -1
  135. package/scripts/repo-packages.mjs +8 -0
  136. package/docs/components/ui/site-footer.tsx +0 -41
package/README.md CHANGED
@@ -23,7 +23,7 @@ Or run without installing:
23
23
  npx blodemd
24
24
  ```
25
25
 
26
- Requires Node.js 20.17+.
26
+ Requires Node.js 24.x.
27
27
 
28
28
  ## Quick Start
29
29
 
@@ -4,7 +4,6 @@ import type { PageMode, SiteConfig } from "@repo/models";
4
4
  import {
5
5
  buildContentIndex,
6
6
  buildPageMetadataMap,
7
- loadContentSource,
8
7
  loadSiteConfig,
9
8
  } from "@repo/previewing";
10
9
  import type {
@@ -12,6 +11,7 @@ import type {
12
11
  ContentSource,
13
12
  PageMetadata,
14
13
  } from "@repo/previewing";
14
+ import { cache } from "react";
15
15
 
16
16
  import {
17
17
  getDocsCollection,
@@ -279,10 +279,13 @@ const buildArtifacts = async (): Promise<PreviewArtifactsResult> => {
279
279
  };
280
280
  };
281
281
 
282
- const getArtifacts = async () =>
282
+ // Memoized per request so metadata + page render + content fetch share one
283
+ // artifact build instead of rebuilding it on each call within a request.
284
+ const getArtifacts = cache(async () =>
283
285
  USE_LOCAL_RUNTIME_CACHE
284
286
  ? await artifactsCache.getOrCreate("preview", buildArtifacts)
285
- : await buildArtifacts();
287
+ : await buildArtifacts()
288
+ );
286
289
 
287
290
  const buildRenderedPageData = async ({
288
291
  artifacts,
@@ -293,10 +296,7 @@ const buildRenderedPageData = async ({
293
296
  relativePath: string;
294
297
  useToc: boolean;
295
298
  }): Promise<RenderedPageData> => {
296
- const rawContent = await loadContentSource(
297
- artifacts.contentSource,
298
- relativePath
299
- );
299
+ const rawContent = await artifacts.contentSource.readFile(relativePath);
300
300
  const { content, frontmatter } = await renderMdx(rawContent);
301
301
 
302
302
  return {
@@ -388,7 +388,7 @@ export const getOpenApiProxyContext = async (): Promise<{
388
388
  };
389
389
 
390
390
  // oxlint-disable-next-line eslint/complexity
391
- export const getDocShellData = async (slugKey: string) => {
391
+ export const getDocShellData = cache(async (slugKey: string) => {
392
392
  const artifacts = await getArtifacts();
393
393
 
394
394
  if (!artifacts || isConfigErrorResult(artifacts)) {
@@ -497,10 +497,7 @@ export const getDocShellData = async (slugKey: string) => {
497
497
  let toc: ReturnType<typeof extractToc> = [];
498
498
 
499
499
  try {
500
- rawContent = await loadContentSource(
501
- artifacts.contentSource,
502
- entry.relativePath
503
- );
500
+ rawContent = await artifacts.contentSource.readFile(entry.relativePath);
504
501
 
505
502
  if (useToc) {
506
503
  toc = extractToc(rawContent);
@@ -530,9 +527,9 @@ export const getDocShellData = async (slugKey: string) => {
530
527
  tabs: artifacts.tabs,
531
528
  toc,
532
529
  };
533
- };
530
+ });
534
531
 
535
- export const getDocPageContent = async (slugKey: string) => {
532
+ export const getDocPageContent = cache(async (slugKey: string) => {
536
533
  const artifacts = await getArtifacts();
537
534
 
538
535
  if (!artifacts || isConfigErrorResult(artifacts)) {
@@ -555,4 +552,4 @@ export const getDocPageContent = async (slugKey: string) => {
555
552
  relativePath: entry.relativePath,
556
553
  useToc,
557
554
  });
558
- };
555
+ });
@@ -46,12 +46,16 @@
46
46
  "devDependencies": {
47
47
  "@repo/typescript-config": "*",
48
48
  "@types/mdx": "^2.0.13",
49
- "@types/node": "^22.19.15",
49
+ "@types/node": "^24.12.2",
50
50
  "@types/react": "19.2.14",
51
51
  "@types/react-dom": "19.2.3",
52
52
  "oxfmt": "^0.42.0",
53
53
  "oxlint": "^1.57.0",
54
+ "postcss": "^8.5.3",
54
55
  "typescript": "6.0.2",
55
56
  "ultracite": "^7.3.2"
57
+ },
58
+ "engines": {
59
+ "node": "24.x"
56
60
  }
57
61
  }