@publish.os/nextjs 0.0.1-alpha.5 → 0.0.1-alpha.7

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 (400) hide show
  1. package/README.md +3 -5
  2. package/compiler-assets/nextjs/defaults/app/globals.css +6 -0
  3. package/compiler-assets/nextjs/defaults/group/layout.tsx +23 -0
  4. package/compiler-assets/nextjs/defaults/group/leaf.tsx +48 -0
  5. package/compiler-assets/nextjs/defaults/group/page.tsx +50 -0
  6. package/compiler-assets/nextjs/defaults/project/next.config.mjs +45 -0
  7. package/compiler-assets/nextjs/defaults/project/postcss.config.mjs +5 -0
  8. package/compiler-assets/nextjs/defaults/project/tsconfig.json.template +41 -0
  9. package/compiler-assets/nextjs/defaults/root/css/animation.css +90 -0
  10. package/compiler-assets/nextjs/defaults/root/css/components/dialog.css +21 -0
  11. package/compiler-assets/nextjs/defaults/root/css/components/drawer.css +21 -0
  12. package/compiler-assets/nextjs/defaults/root/css/components/menu.css +23 -0
  13. package/compiler-assets/nextjs/defaults/root/css/components/navigation-menu.css +25 -0
  14. package/compiler-assets/nextjs/defaults/root/css/components/popover.css +17 -0
  15. package/compiler-assets/nextjs/defaults/root/css/components/select.css +23 -0
  16. package/compiler-assets/nextjs/defaults/root/css/components/toast.css +19 -0
  17. package/compiler-assets/nextjs/defaults/root/css/components/tooltip.css +15 -0
  18. package/compiler-assets/nextjs/defaults/root/css/layout.css +22 -0
  19. package/compiler-assets/nextjs/defaults/root/css/media.css +81 -0
  20. package/compiler-assets/nextjs/defaults/root/css/radius.css +49 -0
  21. package/compiler-assets/nextjs/defaults/root/css/scrollbar.css +43 -0
  22. package/compiler-assets/nextjs/defaults/root/css/shadow.css +145 -0
  23. package/compiler-assets/nextjs/defaults/root/css/typography.css +607 -0
  24. package/compiler-assets/nextjs/defaults/root/css/zindex.css +39 -0
  25. package/compiler-assets/nextjs/defaults/root/globals.css +191 -0
  26. package/compiler-assets/nextjs/defaults/root/layout.tsx +19 -0
  27. package/compiler-assets/nextjs/defaults/root/page.tsx +61 -0
  28. package/compiler-assets/nextjs/defaults/root/theme.css +50 -0
  29. package/compiler-assets/nextjs/defaults/source/_internal/logger.ts +21 -0
  30. package/compiler-assets/nextjs/shims/generated-group-layout.tsx +19 -0
  31. package/compiler-assets/nextjs/shims/generated-group-page.tsx +18 -0
  32. package/compiler-assets/nextjs/shims/generated-leaf-page.tsx +21 -0
  33. package/compiler-assets/nextjs/shims/global-layout.tsx +134 -0
  34. package/compiler-assets/nextjs/shims/markdown-route.ts +29 -0
  35. package/compiler-assets/nextjs/shims/og-image-route.ts +18 -0
  36. package/compiler-assets/nextjs/shims/powered-by-footer.tsx +40 -0
  37. package/compiler-assets/nextjs/shims/providers.tsx +13 -0
  38. package/compiler-assets/nextjs/shims/proxy.ts +317 -0
  39. package/compiler-assets/nextjs/shims/publish-os-theme-provider.tsx +77 -0
  40. package/compiler-assets/nextjs/shims/root-page.tsx +13 -0
  41. package/compiler-assets/nextjs/shims/theme-defaults.css +177 -0
  42. package/dist/{kernel/components/ui/button.d.cts → button-CFdx-ohV.d.ts} +1 -3
  43. package/dist/cache/tags.js +6 -14
  44. package/dist/compiler.d.ts +100 -0
  45. package/dist/compiler.js +13379 -0
  46. package/dist/config/createNextConfig.d.ts +2 -1
  47. package/dist/config/createNextConfig.js +16 -12
  48. package/dist/icons.d.ts +1 -0
  49. package/dist/icons.js +2 -0
  50. package/dist/index.d.ts +303 -15
  51. package/dist/index.js +30 -1196
  52. package/dist/kernel/components/blocks/AgentActions.d.ts +9 -3
  53. package/dist/kernel/components/blocks/AgentActions.js +114 -200
  54. package/dist/kernel/components/blocks/animated-icon-swap.js +4 -25
  55. package/dist/kernel/components/blocks/color-palette.js +107 -157
  56. package/dist/kernel/components/blocks/design-system-preview.d.ts +38 -6
  57. package/dist/kernel/components/blocks/design-system-preview.js +44 -52
  58. package/dist/kernel/components/blocks/link-playground.js +23 -71
  59. package/dist/kernel/components/blocks/logo-block.js +19 -48
  60. package/dist/kernel/components/blocks/nav-breadcrumb.d.ts +1 -1
  61. package/dist/kernel/components/blocks/nav-breadcrumb.js +28 -52
  62. package/dist/kernel/components/blocks/navbar.d.ts +1 -1
  63. package/dist/kernel/components/blocks/navbar.js +14 -41
  64. package/dist/kernel/components/blocks/navigation-progress-playground.js +56 -149
  65. package/dist/kernel/components/blocks/navigation-progress.js +53 -157
  66. package/dist/kernel/components/blocks/next-prev.d.ts +1 -1
  67. package/dist/kernel/components/blocks/next-prev.js +16 -42
  68. package/dist/kernel/components/blocks/page-list.d.ts +1 -1
  69. package/dist/kernel/components/blocks/page-list.js +11 -16
  70. package/dist/kernel/components/blocks/search.d.ts +13 -2
  71. package/dist/kernel/components/blocks/search.js +116 -247
  72. package/dist/kernel/components/blocks/sidebar-node.d.ts +2 -2
  73. package/dist/kernel/components/blocks/sidebar-node.js +56 -95
  74. package/dist/kernel/components/blocks/sidebar.d.ts +5 -23
  75. package/dist/kernel/components/blocks/sidebar.js +35 -103
  76. package/dist/kernel/components/blocks/theme-toggle.d.ts +7 -3
  77. package/dist/kernel/components/blocks/theme-toggle.js +2 -2
  78. package/dist/kernel/components/blocks/toc.js +42 -178
  79. package/dist/kernel/components/mdx/components/blockquote.js +3 -24
  80. package/dist/kernel/components/mdx/components/callout.d.ts +1 -1
  81. package/dist/kernel/components/mdx/components/callout.js +15 -47
  82. package/dist/kernel/components/mdx/components/code-block.js +2 -2
  83. package/dist/kernel/components/mdx/components/figure-caption.js +6 -24
  84. package/dist/kernel/components/mdx/components/figure.js +9 -36
  85. package/dist/kernel/components/mdx/components/footnotes.js +3 -24
  86. package/dist/kernel/components/mdx/components/heading-copy-link.js +13 -37
  87. package/dist/kernel/components/mdx/components/heading.d.ts +8 -3
  88. package/dist/kernel/components/mdx/components/heading.js +32 -116
  89. package/dist/kernel/components/mdx/components/hr.d.ts +5 -3
  90. package/dist/kernel/components/mdx/components/hr.js +2 -2
  91. package/dist/kernel/components/mdx/components/image-zoom.js +2 -3
  92. package/dist/kernel/components/mdx/components/image.js +23 -63
  93. package/dist/kernel/components/mdx/components/inline-code.js +3 -24
  94. package/dist/kernel/components/mdx/components/kbd.d.ts +9 -4
  95. package/dist/kernel/components/mdx/components/kbd.js +2 -2
  96. package/dist/kernel/components/mdx/components/link.d.ts +1 -2
  97. package/dist/kernel/components/mdx/components/link.js +2 -2
  98. package/dist/kernel/components/mdx/components/paragraph.js +13 -41
  99. package/dist/kernel/components/mdx/components/pre.js +3 -24
  100. package/dist/kernel/components/mdx/components/strikethrough.js +6 -24
  101. package/dist/kernel/components/mdx/components/table.js +2 -2
  102. package/dist/kernel/components/mdx/components/task-list.js +6 -28
  103. package/dist/kernel/components/mdx/components/video-player.js +53 -88
  104. package/dist/kernel/components/mdx/components/video.js +27 -75
  105. package/dist/kernel/components/mdx/error-boundary.d.ts +1 -1
  106. package/dist/kernel/components/mdx/error-boundary.js +12 -15
  107. package/dist/kernel/components/mdx/error-fallback.js +4 -4
  108. package/dist/kernel/components/mdx/mdx.d.ts +68 -11
  109. package/dist/kernel/components/mdx/mdx.js +29 -29
  110. package/dist/kernel/components/mdx/rehype-heading-ids.js +11 -67
  111. package/dist/kernel/components/mdx/types.d.ts +1 -1
  112. package/dist/kernel/components/ui/accordion.js +3 -26
  113. package/dist/kernel/components/ui/breadcrumb-trail.d.ts +26 -8
  114. package/dist/kernel/components/ui/breadcrumb-trail.js +32 -79
  115. package/dist/kernel/components/ui/breadcrumb.d.ts +2 -6
  116. package/dist/kernel/components/ui/breadcrumb.js +21 -70
  117. package/dist/kernel/components/ui/button-group.d.ts +4 -3
  118. package/dist/kernel/components/ui/button-group.js +7 -30
  119. package/dist/kernel/components/ui/button.js +13 -36
  120. package/dist/kernel/components/ui/card.d.ts +2 -2
  121. package/dist/kernel/components/ui/card.js +2 -23
  122. package/dist/kernel/components/ui/dialog.d.ts +9 -9
  123. package/dist/kernel/components/ui/dialog.js +15 -33
  124. package/dist/kernel/components/ui/drawer.d.ts +10 -10
  125. package/dist/kernel/components/ui/drawer.js +15 -33
  126. package/dist/kernel/components/ui/input.js +6 -30
  127. package/dist/kernel/components/ui/kbd.js +10 -31
  128. package/dist/kernel/components/ui/link.d.ts +1 -1
  129. package/dist/kernel/components/ui/link.js +53 -104
  130. package/dist/kernel/components/ui/menu.d.ts +21 -21
  131. package/dist/kernel/components/ui/menu.js +14 -36
  132. package/dist/kernel/components/ui/meta-key.d.ts +9 -4
  133. package/dist/kernel/components/ui/meta-key.js +2 -2
  134. package/dist/kernel/components/ui/navigation-menu.d.ts +14 -14
  135. package/dist/kernel/components/ui/navigation-menu.js +9 -30
  136. package/dist/kernel/components/ui/popover.d.ts +10 -10
  137. package/dist/kernel/components/ui/popover.js +13 -34
  138. package/dist/kernel/components/ui/progress.js +2 -25
  139. package/dist/kernel/components/ui/scroll-area.js +39 -118
  140. package/dist/kernel/components/ui/select.d.ts +15 -15
  141. package/dist/kernel/components/ui/select.js +19 -35
  142. package/dist/kernel/components/ui/separator.js +2 -25
  143. package/dist/kernel/components/ui/table.js +2 -23
  144. package/dist/kernel/components/ui/tabs.js +39 -99
  145. package/dist/kernel/components/ui/tag.d.ts +2 -2
  146. package/dist/kernel/components/ui/tag.js +4 -25
  147. package/dist/kernel/components/ui/text.d.ts +2 -2
  148. package/dist/kernel/components/ui/text.js +112 -131
  149. package/dist/kernel/components/ui/theme-toggle.d.ts +18 -4
  150. package/dist/kernel/components/ui/theme-toggle.js +18 -44
  151. package/dist/kernel/components/ui/toast.d.ts +10 -10
  152. package/dist/kernel/components/ui/toast.js +13 -35
  153. package/dist/kernel/components/ui/tooltip.d.ts +8 -8
  154. package/dist/kernel/components/ui/tooltip.js +9 -30
  155. package/dist/kernel/defaults.registry.d.ts +61 -70
  156. package/dist/kernel/defaults.registry.js +61 -69
  157. package/dist/kernel/framework-icons.d.ts +1 -0
  158. package/dist/kernel/framework-icons.js +39 -0
  159. package/dist/kernel/routes/agent/markdown.js +36 -65
  160. package/dist/kernel/routes/layouts/group.d.ts +1 -1
  161. package/dist/kernel/routes/layouts/group.js +20 -109
  162. package/dist/kernel/routes/metadata/feed.d.ts +1 -2
  163. package/dist/kernel/routes/metadata/feed.js +46 -127
  164. package/dist/kernel/routes/metadata/llms.d.ts +1 -2
  165. package/dist/kernel/routes/metadata/llms.js +42 -120
  166. package/dist/kernel/routes/metadata/og-image.d.ts +11 -1
  167. package/dist/kernel/routes/metadata/og-image.js +264 -198
  168. package/dist/kernel/routes/metadata/robots.d.ts +1 -2
  169. package/dist/kernel/routes/metadata/robots.js +21 -90
  170. package/dist/kernel/routes/metadata/sitemap.d.ts +1 -2
  171. package/dist/kernel/routes/metadata/sitemap.js +36 -102
  172. package/dist/kernel/routes/pages/group.d.ts +1 -1
  173. package/dist/kernel/routes/pages/group.js +42 -137
  174. package/dist/kernel/routes/pages/leaf.d.ts +1 -1
  175. package/dist/kernel/routes/pages/leaf.js +74 -213
  176. package/dist/kernel/routes/pages/root.d.ts +1 -1
  177. package/dist/kernel/routes/pages/root.js +37 -108
  178. package/dist/keyboard-shortcuts.js +69 -141
  179. package/dist/{kernel/components/ui/link.d.cts → link-CYaCRDb6.d.ts} +9 -5
  180. package/dist/resolvers/manifest-resolver.d.ts +3 -3
  181. package/dist/resolvers/manifest-resolver.js +15 -21
  182. package/dist/{kernel/routes/metadata/og-image.d.cts → route-metadata-og-image-BeKKFHg7.d.ts} +12 -16
  183. package/dist/search.d.ts +81 -4
  184. package/dist/search.js +124 -195
  185. package/dist/{kernel/components/blocks/sidebar.d.cts → sidebar-types-Bgchdfd6.d.ts} +2 -10
  186. package/dist/theme-scope.d.ts +15 -0
  187. package/dist/theme-scope.js +23 -0
  188. package/dist/types-B_b3C0U6.d.ts +63 -0
  189. package/dist/types-CIwwieNw.d.ts +127 -0
  190. package/dist/types-DHBm7-j6.d.ts +57 -0
  191. package/dist/types-sM2g9nW0.d.ts +12 -0
  192. package/dist/types.d.ts +0 -1
  193. package/dist/types.js +1 -1
  194. package/dist/utils/cn.d.ts +5 -9
  195. package/dist/utils/cn.js +13 -7
  196. package/dist/utils/heading-ids.js +20 -47
  197. package/dist/utils/pretty-date.js +7 -13
  198. package/init/seed/minimal/publish.os/assets/logo/publish-dev-logo.dark.png +0 -0
  199. package/init/seed/minimal/publish.os/assets/logo/publish-dev-logo.png +0 -0
  200. package/init/seed/minimal/publish.os/docs/content/get-started.mdx +54 -0
  201. package/init/seed/minimal/publish.os/docs/content/groups.mdx +31 -0
  202. package/init/seed/minimal/publish.os/docs/content/theme.mdx +64 -0
  203. package/init/seed/minimal/publish.os/publish.os.config.json +21 -0
  204. package/init/seed/minimal/publish.os/theme.css +47 -0
  205. package/init/seed/minimal/seed.json +13 -0
  206. package/package.json +470 -40
  207. package/release/{package.json → app/lucide/package.json} +14 -7
  208. package/release/app/lucide/pnpm-lock.yaml.template +2905 -0
  209. package/release/app/lucide/pnpm-workspace.yaml +11 -0
  210. package/release/app/phosphor/package.json +30 -0
  211. package/release/app/phosphor/pnpm-lock.yaml.template +2908 -0
  212. package/release/app/phosphor/pnpm-workspace.yaml +11 -0
  213. package/release/app/tabler/package.json +30 -0
  214. package/release/app/tabler/pnpm-lock.yaml.template +2911 -0
  215. package/release/app/tabler/pnpm-workspace.yaml +11 -0
  216. package/release/compiler/package.json +20 -0
  217. package/release/compiler/pnpm-lock.yaml.template +2432 -0
  218. package/release/compiler/pnpm-workspace.yaml +11 -0
  219. package/release/release.json +31 -7
  220. package/dist/cache/tags.cjs +0 -79
  221. package/dist/cache/tags.d.cts +0 -13
  222. package/dist/config/createNextConfig.cjs +0 -52
  223. package/dist/config/createNextConfig.d.cts +0 -8
  224. package/dist/config.cjs +0 -78
  225. package/dist/config.d.cts +0 -101
  226. package/dist/config.d.ts +0 -101
  227. package/dist/config.js +0 -48
  228. package/dist/index.cjs +0 -1266
  229. package/dist/index.d.cts +0 -18
  230. package/dist/kernel/components/blocks/AgentActions.cjs +0 -425
  231. package/dist/kernel/components/blocks/AgentActions.d.cts +0 -52
  232. package/dist/kernel/components/blocks/animated-icon-swap.cjs +0 -101
  233. package/dist/kernel/components/blocks/animated-icon-swap.d.cts +0 -16
  234. package/dist/kernel/components/blocks/color-palette.cjs +0 -413
  235. package/dist/kernel/components/blocks/color-palette.d.cts +0 -7
  236. package/dist/kernel/components/blocks/design-system-preview.cjs +0 -593
  237. package/dist/kernel/components/blocks/design-system-preview.d.cts +0 -29
  238. package/dist/kernel/components/blocks/link-playground.cjs +0 -816
  239. package/dist/kernel/components/blocks/link-playground.d.cts +0 -5
  240. package/dist/kernel/components/blocks/logo-block.cjs +0 -156
  241. package/dist/kernel/components/blocks/logo-block.d.cts +0 -21
  242. package/dist/kernel/components/blocks/nav-breadcrumb.cjs +0 -122
  243. package/dist/kernel/components/blocks/nav-breadcrumb.d.cts +0 -11
  244. package/dist/kernel/components/blocks/navbar.cjs +0 -154
  245. package/dist/kernel/components/blocks/navbar.d.cts +0 -16
  246. package/dist/kernel/components/blocks/navigation-progress-playground.cjs +0 -735
  247. package/dist/kernel/components/blocks/navigation-progress-playground.d.cts +0 -5
  248. package/dist/kernel/components/blocks/navigation-progress.cjs +0 -270
  249. package/dist/kernel/components/blocks/navigation-progress.d.cts +0 -16
  250. package/dist/kernel/components/blocks/next-prev.cjs +0 -142
  251. package/dist/kernel/components/blocks/next-prev.d.cts +0 -11
  252. package/dist/kernel/components/blocks/page-list.cjs +0 -59
  253. package/dist/kernel/components/blocks/page-list.d.cts +0 -11
  254. package/dist/kernel/components/blocks/search.cjs +0 -717
  255. package/dist/kernel/components/blocks/search.d.cts +0 -77
  256. package/dist/kernel/components/blocks/sidebar-node.cjs +0 -309
  257. package/dist/kernel/components/blocks/sidebar-node.d.cts +0 -8
  258. package/dist/kernel/components/blocks/sidebar.cjs +0 -317
  259. package/dist/kernel/components/blocks/theme-toggle.cjs +0 -31
  260. package/dist/kernel/components/blocks/theme-toggle.d.cts +0 -6
  261. package/dist/kernel/components/blocks/toc.cjs +0 -356
  262. package/dist/kernel/components/blocks/toc.d.cts +0 -10
  263. package/dist/kernel/components/mdx/components/blockquote.cjs +0 -66
  264. package/dist/kernel/components/mdx/components/blockquote.d.cts +0 -6
  265. package/dist/kernel/components/mdx/components/callout.cjs +0 -137
  266. package/dist/kernel/components/mdx/components/callout.d.cts +0 -18
  267. package/dist/kernel/components/mdx/components/code-block.cjs +0 -39
  268. package/dist/kernel/components/mdx/components/code-block.d.cts +0 -9
  269. package/dist/kernel/components/mdx/components/figure-caption.cjs +0 -63
  270. package/dist/kernel/components/mdx/components/figure-caption.d.cts +0 -6
  271. package/dist/kernel/components/mdx/components/figure.cjs +0 -78
  272. package/dist/kernel/components/mdx/components/figure.d.cts +0 -10
  273. package/dist/kernel/components/mdx/components/footnotes.cjs +0 -66
  274. package/dist/kernel/components/mdx/components/footnotes.d.cts +0 -6
  275. package/dist/kernel/components/mdx/components/heading-copy-link.cjs +0 -108
  276. package/dist/kernel/components/mdx/components/heading-copy-link.d.cts +0 -23
  277. package/dist/kernel/components/mdx/components/heading.cjs +0 -166
  278. package/dist/kernel/components/mdx/components/heading.d.cts +0 -8
  279. package/dist/kernel/components/mdx/components/hr.cjs +0 -34
  280. package/dist/kernel/components/mdx/components/hr.d.cts +0 -9
  281. package/dist/kernel/components/mdx/components/image-zoom.cjs +0 -49
  282. package/dist/kernel/components/mdx/components/image-zoom.d.cts +0 -10
  283. package/dist/kernel/components/mdx/components/image.cjs +0 -192
  284. package/dist/kernel/components/mdx/components/image.d.cts +0 -21
  285. package/dist/kernel/components/mdx/components/inline-code.cjs +0 -66
  286. package/dist/kernel/components/mdx/components/inline-code.d.cts +0 -6
  287. package/dist/kernel/components/mdx/components/kbd.cjs +0 -34
  288. package/dist/kernel/components/mdx/components/kbd.d.cts +0 -10
  289. package/dist/kernel/components/mdx/components/link.cjs +0 -49
  290. package/dist/kernel/components/mdx/components/link.d.cts +0 -11
  291. package/dist/kernel/components/mdx/components/paragraph.cjs +0 -87
  292. package/dist/kernel/components/mdx/components/paragraph.d.cts +0 -5
  293. package/dist/kernel/components/mdx/components/pre.cjs +0 -66
  294. package/dist/kernel/components/mdx/components/pre.d.cts +0 -6
  295. package/dist/kernel/components/mdx/components/strikethrough.cjs +0 -63
  296. package/dist/kernel/components/mdx/components/strikethrough.d.cts +0 -6
  297. package/dist/kernel/components/mdx/components/table.cjs +0 -59
  298. package/dist/kernel/components/mdx/components/table.d.cts +0 -10
  299. package/dist/kernel/components/mdx/components/task-list.cjs +0 -88
  300. package/dist/kernel/components/mdx/components/task-list.d.cts +0 -8
  301. package/dist/kernel/components/mdx/components/video-player.cjs +0 -173
  302. package/dist/kernel/components/mdx/components/video-player.d.cts +0 -18
  303. package/dist/kernel/components/mdx/components/video.cjs +0 -185
  304. package/dist/kernel/components/mdx/components/video.d.cts +0 -15
  305. package/dist/kernel/components/mdx/error-boundary.cjs +0 -62
  306. package/dist/kernel/components/mdx/error-boundary.d.cts +0 -8
  307. package/dist/kernel/components/mdx/error-fallback.cjs +0 -58
  308. package/dist/kernel/components/mdx/error-fallback.d.cts +0 -9
  309. package/dist/kernel/components/mdx/mdx.cjs +0 -141
  310. package/dist/kernel/components/mdx/mdx.d.cts +0 -22
  311. package/dist/kernel/components/mdx/rehype-heading-ids.cjs +0 -113
  312. package/dist/kernel/components/mdx/rehype-heading-ids.d.cts +0 -10
  313. package/dist/kernel/components/mdx/types.cjs +0 -18
  314. package/dist/kernel/components/mdx/types.d.cts +0 -18
  315. package/dist/kernel/components/ui/accordion.cjs +0 -104
  316. package/dist/kernel/components/ui/accordion.d.cts +0 -16
  317. package/dist/kernel/components/ui/breadcrumb-trail.cjs +0 -238
  318. package/dist/kernel/components/ui/breadcrumb-trail.d.cts +0 -13
  319. package/dist/kernel/components/ui/breadcrumb.cjs +0 -399
  320. package/dist/kernel/components/ui/breadcrumb.d.cts +0 -52
  321. package/dist/kernel/components/ui/button-group.cjs +0 -143
  322. package/dist/kernel/components/ui/button-group.d.cts +0 -19
  323. package/dist/kernel/components/ui/button.cjs +0 -139
  324. package/dist/kernel/components/ui/card.cjs +0 -133
  325. package/dist/kernel/components/ui/card.d.cts +0 -17
  326. package/dist/kernel/components/ui/dialog.cjs +0 -149
  327. package/dist/kernel/components/ui/dialog.d.cts +0 -22
  328. package/dist/kernel/components/ui/drawer.cjs +0 -163
  329. package/dist/kernel/components/ui/drawer.d.cts +0 -24
  330. package/dist/kernel/components/ui/input.cjs +0 -96
  331. package/dist/kernel/components/ui/input.d.cts +0 -18
  332. package/dist/kernel/components/ui/kbd.cjs +0 -105
  333. package/dist/kernel/components/ui/kbd.d.cts +0 -13
  334. package/dist/kernel/components/ui/link.cjs +0 -253
  335. package/dist/kernel/components/ui/menu.cjs +0 -301
  336. package/dist/kernel/components/ui/menu.d.cts +0 -70
  337. package/dist/kernel/components/ui/meta-key.cjs +0 -34
  338. package/dist/kernel/components/ui/meta-key.d.cts +0 -12
  339. package/dist/kernel/components/ui/navigation-menu.cjs +0 -253
  340. package/dist/kernel/components/ui/navigation-menu.d.cts +0 -47
  341. package/dist/kernel/components/ui/popover.cjs +0 -168
  342. package/dist/kernel/components/ui/popover.d.cts +0 -24
  343. package/dist/kernel/components/ui/progress.cjs +0 -112
  344. package/dist/kernel/components/ui/progress.d.cts +0 -16
  345. package/dist/kernel/components/ui/scroll-area.cjs +0 -413
  346. package/dist/kernel/components/ui/scroll-area.d.cts +0 -58
  347. package/dist/kernel/components/ui/select.cjs +0 -244
  348. package/dist/kernel/components/ui/select.d.cts +0 -40
  349. package/dist/kernel/components/ui/separator.cjs +0 -73
  350. package/dist/kernel/components/ui/separator.d.cts +0 -8
  351. package/dist/kernel/components/ui/table.cjs +0 -131
  352. package/dist/kernel/components/ui/table.d.cts +0 -11
  353. package/dist/kernel/components/ui/tabs.cjs +0 -450
  354. package/dist/kernel/components/ui/tabs.d.cts +0 -82
  355. package/dist/kernel/components/ui/tag.cjs +0 -104
  356. package/dist/kernel/components/ui/tag.d.cts +0 -14
  357. package/dist/kernel/components/ui/text.cjs +0 -184
  358. package/dist/kernel/components/ui/text.d.cts +0 -17
  359. package/dist/kernel/components/ui/theme-toggle.cjs +0 -108
  360. package/dist/kernel/components/ui/theme-toggle.d.cts +0 -10
  361. package/dist/kernel/components/ui/toast.cjs +0 -154
  362. package/dist/kernel/components/ui/toast.d.cts +0 -26
  363. package/dist/kernel/components/ui/tooltip.cjs +0 -127
  364. package/dist/kernel/components/ui/tooltip.d.cts +0 -20
  365. package/dist/kernel/defaults.registry.cjs +0 -541
  366. package/dist/kernel/defaults.registry.d.cts +0 -469
  367. package/dist/kernel/routes/agent/markdown.cjs +0 -202
  368. package/dist/kernel/routes/agent/markdown.d.cts +0 -58
  369. package/dist/kernel/routes/layouts/group.cjs +0 -181
  370. package/dist/kernel/routes/layouts/group.d.cts +0 -20
  371. package/dist/kernel/routes/metadata/feed.cjs +0 -293
  372. package/dist/kernel/routes/metadata/feed.d.cts +0 -20
  373. package/dist/kernel/routes/metadata/llms.cjs +0 -239
  374. package/dist/kernel/routes/metadata/llms.d.cts +0 -26
  375. package/dist/kernel/routes/metadata/og-image.cjs +0 -630
  376. package/dist/kernel/routes/metadata/robots.cjs +0 -148
  377. package/dist/kernel/routes/metadata/robots.d.cts +0 -6
  378. package/dist/kernel/routes/metadata/sitemap.cjs +0 -192
  379. package/dist/kernel/routes/metadata/sitemap.d.cts +0 -8
  380. package/dist/kernel/routes/pages/group.cjs +0 -263
  381. package/dist/kernel/routes/pages/group.d.cts +0 -17
  382. package/dist/kernel/routes/pages/leaf.cjs +0 -421
  383. package/dist/kernel/routes/pages/leaf.d.cts +0 -36
  384. package/dist/kernel/routes/pages/root.cjs +0 -229
  385. package/dist/kernel/routes/pages/root.d.cts +0 -16
  386. package/dist/keyboard-shortcuts.cjs +0 -345
  387. package/dist/keyboard-shortcuts.d.cts +0 -34
  388. package/dist/resolvers/manifest-resolver.cjs +0 -111
  389. package/dist/resolvers/manifest-resolver.d.cts +0 -13
  390. package/dist/search.cjs +0 -411
  391. package/dist/search.d.cts +0 -20
  392. package/dist/types.cjs +0 -30
  393. package/dist/types.d.cts +0 -269
  394. package/dist/utils/cn.cjs +0 -49
  395. package/dist/utils/cn.d.cts +0 -15
  396. package/dist/utils/heading-ids.cjs +0 -119
  397. package/dist/utils/heading-ids.d.cts +0 -15
  398. package/dist/utils/pretty-date.cjs +0 -55
  399. package/dist/utils/pretty-date.d.cts +0 -6
  400. package/release/pnpm-lock.yaml +0 -1215
@@ -1,9 +1,7 @@
1
- // src/internal/utils/logger.ts
2
- var isDev = process.env.NODE_ENV !== "production";
3
- var isDebugEnabled = process.env.NEXT_PRIVATE_DEBUG_CACHE === "1";
4
- var log = {
1
+ // src/lib/runtime/logging/logger.ts
2
+ var isDev = process.env.NODE_ENV !== "production", isDebugEnabled = process.env.NEXT_PRIVATE_DEBUG_CACHE === "1", log = {
5
3
  debug(...args) {
6
- if (isDev && isDebugEnabled) console.debug("[publish.os:debug]", ...args);
4
+ isDev && isDebugEnabled && console.debug("[publish.os:debug]", ...args);
7
5
  },
8
6
  info(...args) {
9
7
  console.log("[publish.os]", ...args);
@@ -16,42 +14,27 @@ var log = {
16
14
  }
17
15
  };
18
16
 
19
- // src/kernel/routes/response.ts
20
- var CACHE_CONTROL = "public, max-age=300, s-maxage=86400, stale-while-revalidate=3600, must-revalidate";
21
- var CDN_CACHE_CONTROL = "public, max-age=2592000, stale-while-revalidate=31536000";
22
- var SHORT_CACHE_CONTROL = "public, max-age=60, s-maxage=600, stale-while-revalidate=300, must-revalidate";
23
- var SHORT_CDN_CACHE_CONTROL = "public, max-age=300, stale-while-revalidate=3600";
17
+ // src/lib/runtime/response/cached-text-response.ts
18
+ var CACHE_CONTROL = "public, max-age=300, s-maxage=3600, stale-while-revalidate=3600, must-revalidate", CDN_CACHE_CONTROL = "public, max-age=3600, stale-while-revalidate=3600, must-revalidate", SHORT_CACHE_CONTROL = "public, max-age=60, s-maxage=600, stale-while-revalidate=300, must-revalidate", SHORT_CDN_CACHE_CONTROL = "public, max-age=300, stale-while-revalidate=3600";
24
19
  function cacheControl(policy) {
25
- if (!policy || policy === "default") return CACHE_CONTROL;
26
- if (policy === "short") return SHORT_CACHE_CONTROL;
27
- return policy;
20
+ return !policy || policy === "default" ? CACHE_CONTROL : policy === "short" ? SHORT_CACHE_CONTROL : policy;
28
21
  }
29
22
  function cdnCacheControl(policy) {
30
- if (!policy || policy === "default") return CDN_CACHE_CONTROL;
31
- if (policy === "short") return SHORT_CDN_CACHE_CONTROL;
32
- return policy;
23
+ return !policy || policy === "default" ? CDN_CACHE_CONTROL : policy === "short" ? SHORT_CDN_CACHE_CONTROL : policy;
33
24
  }
34
25
  function cachedTextHeaders(contentType, options = {}) {
35
- const headers = new Headers(options.headers);
36
- headers.set("cache-control", cacheControl(options.cachePolicy));
37
- headers.set("cdn-cache-control", cdnCacheControl(options.cachePolicy));
38
- headers.set("vercel-cdn-cache-control", cdnCacheControl(options.cachePolicy));
39
- headers.set("content-type", contentType);
40
- headers.set("x-content-type-options", "nosniff");
41
- if (options.noindex) headers.set("x-robots-tag", "noindex");
42
- return headers;
26
+ let headers = new Headers(options.headers);
27
+ return headers.set("cache-control", cacheControl(options.cachePolicy)), headers.set("cdn-cache-control", cdnCacheControl(options.cachePolicy)), headers.set("vercel-cdn-cache-control", cdnCacheControl(options.cachePolicy)), headers.set("content-type", contentType), headers.set("x-content-type-options", "nosniff"), options.noindex && headers.set("x-robots-tag", "noindex"), headers;
43
28
  }
44
29
  function createCachedTextResponse(options) {
45
- const status = options.status ?? 200;
46
- const method = options.method ?? "GET";
47
- const headers = cachedTextHeaders(options.contentType, options);
30
+ let status = options.status ?? 200, method = options.method ?? "GET", headers = cachedTextHeaders(options.contentType, options);
48
31
  return new Response(method === "HEAD" ? null : options.body, {
49
32
  headers,
50
33
  status
51
34
  });
52
35
  }
53
36
 
54
- // src/kernel/routes/agent/markdown.ts
37
+ // src/route-agent-markdown.ts
55
38
  var DEFAULT_DISCOVERY_LINKS = {
56
39
  home: "/",
57
40
  llms: "/llms.txt",
@@ -61,17 +44,12 @@ function debugMarkdownResponse(details) {
61
44
  log.debug("[agent-route]", "md-response", details);
62
45
  }
63
46
  function normalizeArtifactPath(parts) {
64
- if (!parts?.length) return "/index.md";
65
- if (parts.some((part) => part === ".." || part.includes("\0"))) {
66
- return null;
67
- }
68
- return `/${parts.join("/")}`.replace(/\/+/g, "/");
47
+ return parts?.length ? parts.some((part) => part === ".." || part.includes("\0")) ? null : `/${parts.join("/")}`.replace(/\/+/g, "/") : "/index.md";
69
48
  }
70
49
  function findArtifactKey(artifacts, artifactPath) {
71
50
  if (artifacts[artifactPath]) return artifactPath;
72
- const suffixedPath = artifactPath.endsWith(".md") ? artifactPath : `${artifactPath}.md`;
51
+ let suffixedPath = artifactPath.endsWith(".md") ? artifactPath : `${artifactPath}.md`;
73
52
  if (artifacts[suffixedPath]) return suffixedPath;
74
- return void 0;
75
53
  }
76
54
  function findArtifact(artifacts, artifactPath) {
77
55
  return artifacts[artifactPath] ?? artifacts[artifactPath.endsWith(".md") ? artifactPath : `${artifactPath}.md`];
@@ -85,68 +63,62 @@ function markdownHeaders(artifact) {
85
63
  };
86
64
  }
87
65
  function markdown404Body(discoveryLinks) {
88
- const links = [
89
- discoveryLinks.home ? `> Home: ${discoveryLinks.home}` : void 0,
90
- discoveryLinks.sitemap ? `> Sitemap: ${discoveryLinks.sitemap}` : void 0,
91
- discoveryLinks.llms ? `> LLMS index: ${discoveryLinks.llms}` : void 0
92
- ].filter((line) => Boolean(line));
93
66
  return [
94
67
  "# Not found",
95
68
  "",
96
- ...links,
69
+ ...[
70
+ discoveryLinks.home ? `> Home: ${discoveryLinks.home}` : void 0,
71
+ discoveryLinks.sitemap ? `> Sitemap: ${discoveryLinks.sitemap}` : void 0,
72
+ discoveryLinks.llms ? `> LLMS index: ${discoveryLinks.llms}` : void 0
73
+ ].filter((line) => !!line),
97
74
  "",
98
75
  "The requested Markdown page was not found.",
99
76
  ""
100
- ].join("\n");
77
+ ].join(`
78
+ `);
101
79
  }
102
80
  function notFoundResponse(method, discoveryLinks, artifactPath, reason) {
103
- debugMarkdownResponse({
81
+ return debugMarkdownResponse({
104
82
  artifactPath,
105
83
  method,
106
84
  reason,
107
85
  status: 404
108
- });
109
- return createCachedTextResponse({
86
+ }), createCachedTextResponse({
110
87
  body: markdown404Body(discoveryLinks),
111
88
  cachePolicy: "short",
112
89
  contentType: "text/markdown; charset=utf-8",
113
90
  method,
114
- noindex: true,
91
+ noindex: !0,
115
92
  status: 404
116
93
  });
117
94
  }
118
95
  async function markdownResponse(artifacts, discoveryLinks, method, context) {
119
- const params = await Promise.resolve(context.params);
120
- const artifactPath = normalizeArtifactPath(params?.path);
121
- if (!artifactPath) {
96
+ let params = await Promise.resolve(context.params), artifactPath = normalizeArtifactPath(params?.path);
97
+ if (!artifactPath)
122
98
  return notFoundResponse(method, discoveryLinks, void 0, "invalid-path");
123
- }
124
- const artifactKey = findArtifactKey(artifacts.index, artifactPath);
125
- if (!artifactKey) {
99
+ let artifactKey = findArtifactKey(artifacts.index, artifactPath);
100
+ if (!artifactKey)
126
101
  return notFoundResponse(
127
102
  method,
128
103
  discoveryLinks,
129
104
  artifactPath,
130
105
  "missing-index"
131
106
  );
132
- }
133
- const artifact = await artifacts.loadArtifact(artifactKey);
134
- if (!artifact) {
107
+ let artifact = await artifacts.loadArtifact(artifactKey);
108
+ if (!artifact)
135
109
  return notFoundResponse(
136
110
  method,
137
111
  discoveryLinks,
138
112
  artifactPath,
139
113
  "missing-shard"
140
114
  );
141
- }
142
- const { contentType, headers } = markdownHeaders(artifact);
143
- debugMarkdownResponse({
115
+ let { contentType, headers } = markdownHeaders(artifact);
116
+ return debugMarkdownResponse({
144
117
  artifactPath: artifact.markdownPath,
145
118
  contentType,
146
119
  method,
147
120
  status: 200
148
- });
149
- return createCachedTextResponse({
121
+ }), createCachedTextResponse({
150
122
  body: artifact.body,
151
123
  contentType,
152
124
  headers,
@@ -155,17 +127,16 @@ async function markdownResponse(artifacts, discoveryLinks, method, context) {
155
127
  });
156
128
  }
157
129
  function createMarkdownRouteHandlers(artifacts, options = {}) {
158
- const discoveryLinks = {
130
+ let discoveryLinks = {
159
131
  ...DEFAULT_DISCOVERY_LINKS,
160
132
  ...options.discoveryLinks
161
133
  };
162
- const generateStaticParams = () => Object.keys(artifacts.index).map((artifactPath) => ({
163
- path: artifactPath.replace(/^\//, "").replace(/\.md$/, "").split("/")
164
- }));
165
134
  return {
166
135
  GET: (_request, context) => markdownResponse(artifacts, discoveryLinks, "GET", context),
167
136
  HEAD: (_request, context) => markdownResponse(artifacts, discoveryLinks, "HEAD", context),
168
- generateStaticParams
137
+ generateStaticParams: () => Object.keys(artifacts.index).map((artifactPath) => ({
138
+ path: artifactPath.replace(/^\//, "").replace(/\.md$/, "").split("/")
139
+ }))
169
140
  };
170
141
  }
171
142
  export {
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { ReactElement, ReactNode } from 'react';
3
- import { ManifestLike, LayoutProps } from '../../../types.js';
3
+ import { M as ManifestLike, L as LayoutProps } from '../../../types-CIwwieNw.js';
4
4
 
5
5
  type LayoutComponent = (props: LayoutProps) => ReactElement | Promise<ReactElement>;
6
6
  type GroupLayoutConfig = {
@@ -1,65 +1,13 @@
1
- // src/kernel/routes/layouts/group.tsx
1
+ // src/route-layout-group.tsx
2
+ import { tags } from "@publish.os/nextjs/cache/tags";
3
+ import { resolveGroupLayout } from "@publish.os/nextjs/resolvers/manifest-resolver";
2
4
  import { cacheLife, cacheTag } from "next/cache";
3
5
  import { notFound } from "next/navigation";
4
6
 
5
- // src/cache/tags.ts
6
- import { createHash } from "crypto";
7
- var MAX_TAG_LEN = 256;
8
- var MAX_SEGMENT_LEN = 80;
9
- var TAG_PATTERN = /^[a-z0-9:_./-]+$/;
10
- function sha256(value) {
11
- return createHash("sha256").update(value).digest("hex").slice(0, 16);
12
- }
13
- function safeSegment(value) {
14
- const raw = value.trim().toLowerCase() || "root";
15
- const normalized = raw.replace(/\\/g, "/").replace(/\/+/g, "/").replace(/^\//, "").replace(/\/$/, "").replace(/[^a-z0-9:_./-]+/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "");
16
- const segment = normalized || "root";
17
- if (segment.length <= MAX_SEGMENT_LEN) return segment;
18
- return `${segment.slice(0, 48)}.${sha256(segment)}`;
19
- }
20
- function assertTag(tag) {
21
- if (tag.length > MAX_TAG_LEN || !TAG_PATTERN.test(tag)) {
22
- return `tag:${sha256(tag)}`;
23
- }
24
- return tag;
25
- }
26
- var tags = {
27
- site() {
28
- return "site";
29
- },
30
- pages() {
31
- return "pages";
32
- },
33
- group(group) {
34
- return assertTag(`group:${safeSegment(group)}`);
35
- },
36
- page(group, slug) {
37
- const path = Array.isArray(slug) ? slug.join("/") : slug;
38
- return assertTag(`page:${safeSegment(group)}:${safeSegment(path)}`);
39
- },
40
- manifest(contentHash) {
41
- return assertTag(`manifest:${safeSegment(contentHash)}`);
42
- },
43
- sitemap() {
44
- return "sitemap";
45
- },
46
- robots() {
47
- return "robots";
48
- },
49
- llms(scope = "root") {
50
- return assertTag(`llms:${safeSegment(scope)}`);
51
- },
52
- feed(format, scope = "site") {
53
- return assertTag(`feed:${safeSegment(format)}:${safeSegment(scope)}`);
54
- }
55
- };
56
-
57
- // src/internal/utils/logger.ts
58
- var isDev = process.env.NODE_ENV !== "production";
59
- var isDebugEnabled = process.env.NEXT_PRIVATE_DEBUG_CACHE === "1";
60
- var log = {
7
+ // src/lib/runtime/logging/logger.ts
8
+ var isDev = process.env.NODE_ENV !== "production", isDebugEnabled = process.env.NEXT_PRIVATE_DEBUG_CACHE === "1", log = {
61
9
  debug(...args) {
62
- if (isDev && isDebugEnabled) console.debug("[publish.os:debug]", ...args);
10
+ isDev && isDebugEnabled && console.debug("[publish.os:debug]", ...args);
63
11
  },
64
12
  info(...args) {
65
13
  console.log("[publish.os]", ...args);
@@ -72,65 +20,30 @@ var log = {
72
20
  }
73
21
  };
74
22
 
75
- // src/resolvers/manifest-resolver.ts
76
- function groupNode(group) {
77
- return {
78
- type: "section",
79
- id: group.key,
80
- title: group.title,
81
- path: group.path,
82
- group: group.key,
83
- children: group.tree
84
- };
85
- }
86
- function resolveGroup(manifest, group) {
87
- const groupData = manifest.groups[group];
88
- if (!groupData) return null;
89
- return {
90
- site: manifest.site,
91
- tree: groupData.tree,
92
- node: groupNode(groupData),
93
- currentPath: groupData.path,
94
- group
95
- };
96
- }
97
- function resolveGroupLayout(manifest, group, children) {
98
- const resolved = resolveGroup(manifest, group);
99
- if (!resolved) return null;
100
- return { ...resolved, children };
101
- }
102
-
103
- // src/kernel/routes/layouts/group.tsx
23
+ // src/route-layout-group.tsx
104
24
  import { jsx } from "react/jsx-runtime";
105
- var manifests = /* @__PURE__ */ new Map();
106
- var layoutChains = /* @__PURE__ */ new Map();
25
+ var manifests = /* @__PURE__ */ new Map(), layoutChains = /* @__PURE__ */ new Map();
107
26
  async function CachedGroupLayoutData({
108
27
  routeGroup,
109
28
  layoutGroup
110
29
  }) {
111
30
  "use cache";
112
- cacheLife("page");
113
- cacheTag(tags.site(), tags.group(layoutGroup));
114
- const manifest = manifests.get(routeGroup);
115
- if (!manifest) notFound();
116
- cacheTag(tags.manifest(manifest.contentHash));
117
- log.debug("[cache]", `${routeGroup}/layout:${layoutGroup}`);
118
- const resolved = resolveGroupLayout(manifest, layoutGroup, null);
119
- if (!resolved) notFound();
120
- return resolved;
31
+ cacheLife("page"), cacheTag(tags.site(), tags.group(layoutGroup));
32
+ let manifest = manifests.get(routeGroup);
33
+ manifest || notFound(), cacheTag(tags.manifest(manifest.contentHash)), log.debug("[cache]", `${routeGroup}/layout:${layoutGroup}`);
34
+ let resolved = resolveGroupLayout(manifest, layoutGroup, null);
35
+ return resolved || notFound(), resolved;
121
36
  }
122
37
  function createGroupLayout({
123
38
  group,
124
39
  manifest,
125
40
  layouts
126
41
  }) {
127
- manifests.set(group, manifest);
128
- layoutChains.set(group, layouts);
129
- return async function GroupLayout({ children }) {
42
+ return manifests.set(group, manifest), layoutChains.set(group, layouts), async function({ children }) {
130
43
  log.debug("[render]", `${group}/layout`);
131
- const chain = layoutChains.get(group);
132
- if (!chain?.length) notFound();
133
- const resolvedLayouts = await Promise.all(
44
+ let chain = layoutChains.get(group);
45
+ chain?.length || notFound();
46
+ let resolvedLayouts = await Promise.all(
134
47
  chain.map(async (item) => ({
135
48
  item,
136
49
  props: await CachedGroupLayoutData({
@@ -138,13 +51,11 @@ function createGroupLayout({
138
51
  routeGroup: group
139
52
  })
140
53
  }))
141
- );
142
- let output = children;
54
+ ), output = children;
143
55
  for (let index = resolvedLayouts.length - 1; index >= 0; index -= 1) {
144
- const resolvedLayout = resolvedLayouts[index];
56
+ let resolvedLayout = resolvedLayouts[index];
145
57
  if (resolvedLayout) {
146
- const Layout = resolvedLayout.item.Layout;
147
- const fontClassName = resolvedLayout.item.fontClassName;
58
+ let Layout = resolvedLayout.item.Layout, fontClassName = resolvedLayout.item.fontClassName;
148
59
  output = /* @__PURE__ */ jsx(Layout, { ...resolvedLayout.props, children: fontClassName ? /* @__PURE__ */ jsx("div", { className: fontClassName, children: output }) : output });
149
60
  }
150
61
  }
@@ -1,5 +1,4 @@
1
- import { ManifestLike, PageStatus } from '../../../types.js';
2
- import 'react';
1
+ import { P as PageStatus, M as ManifestLike } from '../../../types-CIwwieNw.js';
3
2
 
4
3
  type FeedScope = "site" | "group" | "self";
5
4
  type FeedRouteOptions = {
@@ -1,148 +1,74 @@
1
- // src/kernel/routes/metadata/feed.ts
1
+ // src/route-metadata-feed.ts
2
+ import { tags } from "@publish.os/nextjs/cache/tags";
2
3
  import { cacheLife, cacheTag } from "next/cache";
3
4
 
4
- // src/cache/tags.ts
5
- import { createHash } from "crypto";
6
- var MAX_TAG_LEN = 256;
7
- var MAX_SEGMENT_LEN = 80;
8
- var TAG_PATTERN = /^[a-z0-9:_./-]+$/;
9
- function sha256(value) {
10
- return createHash("sha256").update(value).digest("hex").slice(0, 16);
11
- }
12
- function safeSegment(value) {
13
- const raw = value.trim().toLowerCase() || "root";
14
- const normalized = raw.replace(/\\/g, "/").replace(/\/+/g, "/").replace(/^\//, "").replace(/\/$/, "").replace(/[^a-z0-9:_./-]+/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "");
15
- const segment = normalized || "root";
16
- if (segment.length <= MAX_SEGMENT_LEN) return segment;
17
- return `${segment.slice(0, 48)}.${sha256(segment)}`;
18
- }
19
- function assertTag(tag) {
20
- if (tag.length > MAX_TAG_LEN || !TAG_PATTERN.test(tag)) {
21
- return `tag:${sha256(tag)}`;
5
+ // src/lib/runtime/metadata/canonical-url.ts
6
+ function canonicalUrl(manifest, path) {
7
+ let origin = manifest.site.url?.replace(/\/+$/, "");
8
+ if (!origin) return path;
9
+ try {
10
+ return new URL(path, `${origin}/`).toString();
11
+ } catch {
12
+ return path;
22
13
  }
23
- return tag;
24
14
  }
25
- var tags = {
26
- site() {
27
- return "site";
28
- },
29
- pages() {
30
- return "pages";
31
- },
32
- group(group) {
33
- return assertTag(`group:${safeSegment(group)}`);
34
- },
35
- page(group, slug) {
36
- const path = Array.isArray(slug) ? slug.join("/") : slug;
37
- return assertTag(`page:${safeSegment(group)}:${safeSegment(path)}`);
38
- },
39
- manifest(contentHash) {
40
- return assertTag(`manifest:${safeSegment(contentHash)}`);
41
- },
42
- sitemap() {
43
- return "sitemap";
44
- },
45
- robots() {
46
- return "robots";
47
- },
48
- llms(scope = "root") {
49
- return assertTag(`llms:${safeSegment(scope)}`);
50
- },
51
- feed(format, scope = "site") {
52
- return assertTag(`feed:${safeSegment(format)}:${safeSegment(scope)}`);
53
- }
54
- };
55
15
 
56
- // src/kernel/routes/response.ts
57
- var CACHE_CONTROL = "public, max-age=300, s-maxage=86400, stale-while-revalidate=3600, must-revalidate";
58
- var CDN_CACHE_CONTROL = "public, max-age=2592000, stale-while-revalidate=31536000";
59
- var SHORT_CACHE_CONTROL = "public, max-age=60, s-maxage=600, stale-while-revalidate=300, must-revalidate";
60
- var SHORT_CDN_CACHE_CONTROL = "public, max-age=300, stale-while-revalidate=3600";
16
+ // src/lib/runtime/response/cached-text-response.ts
17
+ var CACHE_CONTROL = "public, max-age=300, s-maxage=3600, stale-while-revalidate=3600, must-revalidate", CDN_CACHE_CONTROL = "public, max-age=3600, stale-while-revalidate=3600, must-revalidate", SHORT_CACHE_CONTROL = "public, max-age=60, s-maxage=600, stale-while-revalidate=300, must-revalidate", SHORT_CDN_CACHE_CONTROL = "public, max-age=300, stale-while-revalidate=3600";
61
18
  function cacheControl(policy) {
62
- if (!policy || policy === "default") return CACHE_CONTROL;
63
- if (policy === "short") return SHORT_CACHE_CONTROL;
64
- return policy;
19
+ return !policy || policy === "default" ? CACHE_CONTROL : policy === "short" ? SHORT_CACHE_CONTROL : policy;
65
20
  }
66
21
  function cdnCacheControl(policy) {
67
- if (!policy || policy === "default") return CDN_CACHE_CONTROL;
68
- if (policy === "short") return SHORT_CDN_CACHE_CONTROL;
69
- return policy;
22
+ return !policy || policy === "default" ? CDN_CACHE_CONTROL : policy === "short" ? SHORT_CDN_CACHE_CONTROL : policy;
70
23
  }
71
24
  function cachedTextHeaders(contentType, options = {}) {
72
- const headers = new Headers(options.headers);
73
- headers.set("cache-control", cacheControl(options.cachePolicy));
74
- headers.set("cdn-cache-control", cdnCacheControl(options.cachePolicy));
75
- headers.set("vercel-cdn-cache-control", cdnCacheControl(options.cachePolicy));
76
- headers.set("content-type", contentType);
77
- headers.set("x-content-type-options", "nosniff");
78
- if (options.noindex) headers.set("x-robots-tag", "noindex");
79
- return headers;
25
+ let headers = new Headers(options.headers);
26
+ return headers.set("cache-control", cacheControl(options.cachePolicy)), headers.set("cdn-cache-control", cdnCacheControl(options.cachePolicy)), headers.set("vercel-cdn-cache-control", cdnCacheControl(options.cachePolicy)), headers.set("content-type", contentType), headers.set("x-content-type-options", "nosniff"), options.noindex && headers.set("x-robots-tag", "noindex"), headers;
80
27
  }
81
28
  function createCachedTextResponse(options) {
82
- const status = options.status ?? 200;
83
- const method = options.method ?? "GET";
84
- const headers = cachedTextHeaders(options.contentType, options);
29
+ let status = options.status ?? 200, method = options.method ?? "GET", headers = cachedTextHeaders(options.contentType, options);
85
30
  return new Response(method === "HEAD" ? null : options.body, {
86
31
  headers,
87
32
  status
88
33
  });
89
34
  }
90
35
 
91
- // src/kernel/routes/metadata/canonical-url.ts
92
- function canonicalUrl(manifest, path) {
93
- const origin = manifest.site.url?.replace(/\/+$/, "");
94
- if (!origin) return path;
95
- try {
96
- return new URL(path, `${origin}/`).toString();
97
- } catch {
98
- return path;
99
- }
100
- }
101
-
102
- // src/kernel/routes/metadata/feed.ts
36
+ // src/route-metadata-feed.ts
103
37
  function xmlEscape(value) {
104
38
  return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;");
105
39
  }
106
40
  function pageTimestamp(page) {
107
- const value = page.publishedAt ?? page.updatedAt;
108
- if (!value) return -Infinity;
109
- const timestamp = Date.parse(value);
110
- return Number.isNaN(timestamp) ? -Infinity : timestamp;
41
+ let value = pageDate(page);
42
+ return value ? Date.parse(value) : -1 / 0;
43
+ }
44
+ function validDate(value) {
45
+ return value && !Number.isNaN(Date.parse(value)) ? value : void 0;
111
46
  }
112
47
  function pageInScope(page, options) {
113
- if (options.scope === "site" || !options.group) return true;
114
- if (options.scope === "self") return page.group === options.group;
115
- return page.group === options.group || page.group.startsWith(`${options.group}/`);
48
+ return options.scope === "site" || !options.group ? !0 : options.scope === "self" ? page.group === options.group : page.group === options.group || page.group.startsWith(`${options.group}/`);
116
49
  }
117
50
  function feedPages(manifest, options) {
118
- const statuses = options.status ?? ["published"];
119
- const pages = manifest.pages.filter((page) => statuses.includes(page.status)).filter((page) => pageInScope(page, options)).sort((a, b) => pageTimestamp(b) - pageTimestamp(a));
51
+ let statuses = options.status ?? ["published"], pages = manifest.pages.filter((page) => statuses.includes(page.status)).filter((page) => pageInScope(page, options)).sort((a, b) => pageTimestamp(b) - pageTimestamp(a));
120
52
  return options.limit ? pages.slice(0, options.limit) : pages;
121
53
  }
122
54
  async function rssXml(manifest, options = {}) {
123
55
  "use cache";
124
- cacheLife("page");
125
- cacheTag(
56
+ cacheLife("page"), cacheTag(
126
57
  tags.site(),
127
58
  tags.feed("rss", options.group ?? options.scope ?? "site"),
128
59
  tags.manifest(manifest.contentHash)
129
60
  );
130
- const title = manifest.site.name;
131
- const description = manifest.site.description ?? title;
132
- const pages = feedPages(manifest, options);
133
- const homeUrl = canonicalUrl(manifest, "/");
134
- const items = pages.map((page) => {
135
- const pageUrl = canonicalUrl(manifest, page.path);
136
- const pubDate = page.publishedAt ? `
137
- <pubDate>${xmlEscape(new Date(page.publishedAt).toUTCString())}</pubDate>` : "";
138
- const description2 = page.description ? `
61
+ let title = manifest.site.name, description = manifest.site.description ?? title, pages = feedPages(manifest, options), homeUrl = canonicalUrl(manifest, "/"), items = pages.map((page) => {
62
+ let pageUrl = canonicalUrl(manifest, page.path), publishedAt = validDate(page.publishedAt), pubDate = publishedAt ? `
63
+ <pubDate>${xmlEscape(new Date(publishedAt).toUTCString())}</pubDate>` : "", description2 = page.description ? `
139
64
  <description>${xmlEscape(page.description)}</description>` : "";
140
65
  return ` <item>
141
66
  <title>${xmlEscape(page.title)}</title>
142
67
  <link>${xmlEscape(pageUrl)}</link>
143
68
  <guid>${xmlEscape(pageUrl)}</guid>${pubDate}${description2}
144
69
  </item>`;
145
- }).join("\n");
70
+ }).join(`
71
+ `);
146
72
  return `<?xml version="1.0" encoding="UTF-8"?>
147
73
  <rss version="2.0">
148
74
  <channel>
@@ -155,28 +81,21 @@ ${items}
155
81
  `;
156
82
  }
157
83
  function pageDate(page) {
158
- return page.publishedAt ?? page.updatedAt;
84
+ return validDate(page.publishedAt) ?? validDate(page.updatedAt);
159
85
  }
160
86
  function latestFeedDate(pages) {
161
- const timestamp = Math.max(0, ...pages.map((page) => pageTimestamp(page)));
87
+ let timestamp = Math.max(0, ...pages.map((page) => pageTimestamp(page)));
162
88
  return new Date(timestamp).toISOString();
163
89
  }
164
90
  async function atomXml(manifest, options = {}) {
165
91
  "use cache";
166
- cacheLife("page");
167
- cacheTag(
92
+ cacheLife("page"), cacheTag(
168
93
  tags.site(),
169
94
  tags.feed("atom", options.group ?? options.scope ?? "site"),
170
95
  tags.manifest(manifest.contentHash)
171
96
  );
172
- const title = manifest.site.name;
173
- const pages = feedPages(manifest, options);
174
- const homeUrl = canonicalUrl(manifest, "/");
175
- const entries = pages.map((page) => {
176
- const date = pageDate(page);
177
- const updated = date ? new Date(date).toISOString() : latestFeedDate([]);
178
- const pageUrl = canonicalUrl(manifest, page.path);
179
- const summary = page.description ? `
97
+ let title = manifest.site.name, pages = feedPages(manifest, options), homeUrl = canonicalUrl(manifest, "/"), entries = pages.map((page) => {
98
+ let date = pageDate(page), updated = date ? new Date(date).toISOString() : latestFeedDate([]), pageUrl = canonicalUrl(manifest, page.path), summary = page.description ? `
180
99
  <summary>${xmlEscape(page.description)}</summary>` : "";
181
100
  return ` <entry>
182
101
  <title>${xmlEscape(page.title)}</title>
@@ -184,7 +103,8 @@ async function atomXml(manifest, options = {}) {
184
103
  <link href="${xmlEscape(pageUrl)}" />
185
104
  <updated>${xmlEscape(updated)}</updated>${summary}
186
105
  </entry>`;
187
- }).join("\n");
106
+ }).join(`
107
+ `);
188
108
  return `<?xml version="1.0" encoding="UTF-8"?>
189
109
  <feed xmlns="http://www.w3.org/2005/Atom">
190
110
  <title>${xmlEscape(title)}</title>
@@ -196,13 +116,12 @@ ${entries}
196
116
  }
197
117
  async function jsonFeed(manifest, options = {}) {
198
118
  "use cache";
199
- cacheLife("page");
200
- cacheTag(
119
+ cacheLife("page"), cacheTag(
201
120
  tags.site(),
202
121
  tags.feed("json", options.group ?? options.scope ?? "site"),
203
122
  tags.manifest(manifest.contentHash)
204
123
  );
205
- const pages = feedPages(manifest, options);
124
+ let pages = feedPages(manifest, options);
206
125
  return `${JSON.stringify(
207
126
  {
208
127
  version: "https://jsonfeed.org/version/1.1",
@@ -215,8 +134,8 @@ async function jsonFeed(manifest, options = {}) {
215
134
  title: page.title,
216
135
  summary: page.description,
217
136
  content_text: page.body,
218
- date_published: page.publishedAt,
219
- date_modified: page.updatedAt,
137
+ date_published: validDate(page.publishedAt),
138
+ date_modified: validDate(page.updatedAt),
220
139
  tags: page.tags
221
140
  }))
222
141
  },
@@ -226,7 +145,7 @@ async function jsonFeed(manifest, options = {}) {
226
145
  `;
227
146
  }
228
147
  function createRssFeedRoute(manifest, options = {}) {
229
- return async function GET() {
148
+ return async function() {
230
149
  return createCachedTextResponse({
231
150
  body: await rssXml(manifest, options),
232
151
  contentType: "application/rss+xml; charset=utf-8"
@@ -234,7 +153,7 @@ function createRssFeedRoute(manifest, options = {}) {
234
153
  };
235
154
  }
236
155
  function createAtomFeedRoute(manifest, options = {}) {
237
- return async function GET() {
156
+ return async function() {
238
157
  return createCachedTextResponse({
239
158
  body: await atomXml(manifest, options),
240
159
  contentType: "application/atom+xml; charset=utf-8"
@@ -242,7 +161,7 @@ function createAtomFeedRoute(manifest, options = {}) {
242
161
  };
243
162
  }
244
163
  function createJsonFeedRoute(manifest, options = {}) {
245
- return async function GET() {
164
+ return async function() {
246
165
  return createCachedTextResponse({
247
166
  body: await jsonFeed(manifest, options),
248
167
  contentType: "application/feed+json; charset=utf-8"
@@ -250,7 +169,7 @@ function createJsonFeedRoute(manifest, options = {}) {
250
169
  };
251
170
  }
252
171
  function createPrecomputedFeedRoute(output) {
253
- return function GET() {
172
+ return function() {
254
173
  return createCachedTextResponse({
255
174
  body: output.body,
256
175
  contentType: output.contentType