mordoc 0.1.13 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (431) hide show
  1. package/LICENSE +7 -0
  2. package/bin/cli.js +24 -71
  3. package/dist/cli/asset-rewrite.d.ts +40 -0
  4. package/dist/cli/asset-rewrite.d.ts.map +1 -0
  5. package/dist/cli/asset-rewrite.js +67 -0
  6. package/dist/cli/asset-rewrite.js.map +1 -0
  7. package/dist/cli/build.d.ts +45 -15
  8. package/dist/cli/build.d.ts.map +1 -1
  9. package/dist/cli/build.js +186 -101
  10. package/dist/cli/build.js.map +1 -1
  11. package/dist/cli/dev.d.ts +26 -14
  12. package/dist/cli/dev.d.ts.map +1 -1
  13. package/dist/cli/dev.js +116 -159
  14. package/dist/cli/dev.js.map +1 -1
  15. package/dist/cli/pagefind-indexer.d.ts +15 -0
  16. package/dist/cli/pagefind-indexer.d.ts.map +1 -0
  17. package/dist/cli/pagefind-indexer.js +68 -0
  18. package/dist/cli/pagefind-indexer.js.map +1 -0
  19. package/dist/cli/paths.d.ts +26 -0
  20. package/dist/cli/paths.d.ts.map +1 -0
  21. package/dist/cli/paths.js +32 -0
  22. package/dist/cli/paths.js.map +1 -0
  23. package/dist/cli/ssg-runner.d.ts +58 -0
  24. package/dist/cli/ssg-runner.d.ts.map +1 -0
  25. package/dist/cli/ssg-runner.js +126 -0
  26. package/dist/cli/ssg-runner.js.map +1 -0
  27. package/dist/config/assets-loader.d.ts +11 -0
  28. package/dist/config/assets-loader.d.ts.map +1 -0
  29. package/dist/config/assets-loader.js +46 -0
  30. package/dist/config/assets-loader.js.map +1 -0
  31. package/dist/config/language-loader.d.ts +11 -0
  32. package/dist/config/language-loader.d.ts.map +1 -0
  33. package/dist/config/language-loader.js +61 -0
  34. package/dist/config/language-loader.js.map +1 -0
  35. package/dist/config/language.d.ts +11 -0
  36. package/dist/config/language.d.ts.map +1 -0
  37. package/dist/config/language.js +61 -0
  38. package/dist/config/language.js.map +1 -0
  39. package/dist/config/sidenav-loader.d.ts +14 -0
  40. package/dist/config/sidenav-loader.d.ts.map +1 -0
  41. package/dist/config/sidenav-loader.js +78 -0
  42. package/dist/config/sidenav-loader.js.map +1 -0
  43. package/dist/config/site-loader.d.ts +11 -0
  44. package/dist/config/site-loader.d.ts.map +1 -0
  45. package/dist/config/site-loader.js +72 -0
  46. package/dist/config/site-loader.js.map +1 -0
  47. package/dist/config/site.d.ts +11 -0
  48. package/dist/config/site.d.ts.map +1 -0
  49. package/dist/config/site.js +72 -0
  50. package/dist/config/site.js.map +1 -0
  51. package/dist/config/topnav-loader.d.ts +10 -0
  52. package/dist/config/topnav-loader.d.ts.map +1 -0
  53. package/dist/config/topnav-loader.js +78 -0
  54. package/dist/config/topnav-loader.js.map +1 -0
  55. package/dist/config/translations-loader.d.ts +7 -0
  56. package/dist/config/translations-loader.d.ts.map +1 -0
  57. package/dist/config/translations-loader.js +51 -0
  58. package/dist/config/translations-loader.js.map +1 -0
  59. package/dist/content/content-loader.d.ts +16 -0
  60. package/dist/content/content-loader.d.ts.map +1 -0
  61. package/dist/content/content-loader.js +126 -0
  62. package/dist/content/content-loader.js.map +1 -0
  63. package/dist/content/content-parser.d.ts +12 -0
  64. package/dist/content/content-parser.d.ts.map +1 -0
  65. package/dist/content/content-parser.js +54 -0
  66. package/dist/content/content-parser.js.map +1 -0
  67. package/dist/content/content-transformer.d.ts +17 -0
  68. package/dist/content/content-transformer.d.ts.map +1 -0
  69. package/dist/content/content-transformer.js +94 -0
  70. package/dist/content/content-transformer.js.map +1 -0
  71. package/dist/content/markdoc-config.d.ts +13 -0
  72. package/dist/content/markdoc-config.d.ts.map +1 -0
  73. package/dist/content/markdoc-config.js +210 -0
  74. package/dist/content/markdoc-config.js.map +1 -0
  75. package/dist/content/slug.d.ts +26 -0
  76. package/dist/content/slug.d.ts.map +1 -0
  77. package/dist/content/slug.js +31 -0
  78. package/dist/content/slug.js.map +1 -0
  79. package/dist/pipeline.d.ts +61 -0
  80. package/dist/pipeline.d.ts.map +1 -0
  81. package/dist/pipeline.js +123 -0
  82. package/dist/pipeline.js.map +1 -0
  83. package/dist/types/assets.d.ts +15 -0
  84. package/dist/types/assets.d.ts.map +1 -0
  85. package/dist/types/assets.js +2 -0
  86. package/dist/types/assets.js.map +1 -0
  87. package/dist/types/content.d.ts +114 -32
  88. package/dist/types/content.d.ts.map +1 -1
  89. package/dist/types/content.js +1 -6
  90. package/dist/types/content.js.map +1 -1
  91. package/dist/types/language.d.ts +9 -0
  92. package/dist/types/language.d.ts.map +1 -0
  93. package/dist/types/language.js +2 -0
  94. package/dist/types/language.js.map +1 -0
  95. package/dist/types/navigation.d.ts +24 -36
  96. package/dist/types/navigation.d.ts.map +1 -1
  97. package/dist/types/navigation.js +1 -6
  98. package/dist/types/navigation.js.map +1 -1
  99. package/dist/types/pipeline.d.ts +70 -0
  100. package/dist/types/pipeline.d.ts.map +1 -0
  101. package/dist/types/pipeline.js +2 -0
  102. package/dist/types/pipeline.js.map +1 -0
  103. package/dist/types/site.d.ts +20 -0
  104. package/dist/types/site.d.ts.map +1 -0
  105. package/dist/types/site.js +2 -0
  106. package/dist/types/site.js.map +1 -0
  107. package/dist/utils/lang-utils.d.ts +23 -0
  108. package/dist/utils/lang-utils.d.ts.map +1 -0
  109. package/dist/utils/lang-utils.js +40 -0
  110. package/dist/utils/lang-utils.js.map +1 -0
  111. package/dist/utils/paths.d.ts +25 -0
  112. package/dist/utils/paths.d.ts.map +1 -0
  113. package/dist/utils/paths.js +31 -0
  114. package/dist/utils/paths.js.map +1 -0
  115. package/dist/vite/plugin.d.ts +93 -0
  116. package/dist/vite/plugin.d.ts.map +1 -0
  117. package/dist/vite/plugin.js +435 -0
  118. package/dist/vite/plugin.js.map +1 -0
  119. package/package.json +46 -61
  120. package/src/app/App.module.css +82 -0
  121. package/src/app/App.tsx +95 -0
  122. package/src/app/content/Content.module.css +357 -0
  123. package/src/app/content/Content.tsx +212 -0
  124. package/src/app/content/callout/Callout.module.css +110 -0
  125. package/src/app/content/callout/Callout.tsx +82 -0
  126. package/src/app/content/card/Card.module.css +146 -0
  127. package/src/app/content/card/Card.tsx +110 -0
  128. package/src/app/content/card/CardGrid.module.css +22 -0
  129. package/src/app/content/card/CardGrid.tsx +34 -0
  130. package/src/app/content/code-block/CodeBlock.module.css +237 -0
  131. package/src/app/content/code-block/CodeBlock.tsx +123 -0
  132. package/src/app/content/heading/Heading.module.css +52 -0
  133. package/src/app/content/heading/Heading.tsx +75 -0
  134. package/src/app/content/image/Image.module.css +113 -0
  135. package/src/app/content/image/Image.tsx +98 -0
  136. package/src/app/content/link/ContentLink.tsx +46 -0
  137. package/src/app/data-context.tsx +39 -0
  138. package/src/app/entry-server.tsx +58 -0
  139. package/src/app/footer/Footer.module.css +36 -0
  140. package/src/app/footer/Footer.tsx +28 -0
  141. package/src/app/globals.d.ts +40 -0
  142. package/src/app/header/Header.module.css +205 -0
  143. package/src/app/header/Header.tsx +188 -0
  144. package/src/app/header/LanguagePicker.module.css +97 -0
  145. package/src/app/header/LanguagePicker.tsx +174 -0
  146. package/src/app/header/SearchBar.module.css +92 -0
  147. package/src/app/header/SearchBar.tsx +37 -0
  148. package/src/app/header/SearchModal.module.css +185 -0
  149. package/src/app/header/SearchModal.tsx +245 -0
  150. package/src/app/header/Topnav.module.css +37 -0
  151. package/src/app/header/Topnav.tsx +30 -0
  152. package/src/app/index.css +119 -0
  153. package/src/app/index.html +13 -0
  154. package/src/app/landing/LandingPage.module.css +14 -0
  155. package/src/app/landing/LandingPage.tsx +62 -0
  156. package/src/app/landing/button/Button.module.css +37 -0
  157. package/src/app/landing/button/Button.tsx +50 -0
  158. package/src/app/landing/hero/Hero.module.css +108 -0
  159. package/src/app/landing/hero/Hero.tsx +81 -0
  160. package/src/app/landing/section/Section.module.css +100 -0
  161. package/src/app/landing/section/Section.tsx +61 -0
  162. package/src/app/lang-utils.ts +11 -0
  163. package/src/app/main.tsx +67 -0
  164. package/src/app/not-found/NotFound.module.css +92 -0
  165. package/src/app/not-found/NotFound.tsx +34 -0
  166. package/src/app/routes.tsx +86 -0
  167. package/src/app/sidenav/Sidenav.module.css +239 -0
  168. package/src/app/sidenav/Sidenav.tsx +182 -0
  169. package/src/app/skeleton/Skeleton.module.css +100 -0
  170. package/src/app/skeleton/Skeleton.tsx +75 -0
  171. package/src/app/toc/Toc.module.css +59 -0
  172. package/src/app/toc/Toc.tsx +77 -0
  173. package/src/app/tsconfig.json +18 -0
  174. package/src/app/virtual-modules.d.ts +74 -0
  175. package/dist/assets/fonts/inter/Inter-Italic-VariableFont_opsz,wght.ttf +0 -0
  176. package/dist/assets/fonts/inter/Inter-VariableFont_opsz,wght.ttf +0 -0
  177. package/dist/assets/fonts/inter/OFL.txt +0 -93
  178. package/dist/build/Builder.d.ts +0 -92
  179. package/dist/build/Builder.d.ts.map +0 -1
  180. package/dist/build/Builder.js +0 -394
  181. package/dist/build/Builder.js.map +0 -1
  182. package/dist/build/ClientBundler.d.ts +0 -48
  183. package/dist/build/ClientBundler.d.ts.map +0 -1
  184. package/dist/build/ClientBundler.js +0 -169
  185. package/dist/build/ClientBundler.js.map +0 -1
  186. package/dist/build/HtmlGenerator.d.ts +0 -46
  187. package/dist/build/HtmlGenerator.d.ts.map +0 -1
  188. package/dist/build/HtmlGenerator.js +0 -190
  189. package/dist/build/HtmlGenerator.js.map +0 -1
  190. package/dist/build/SearchIndexer.d.ts +0 -31
  191. package/dist/build/SearchIndexer.d.ts.map +0 -1
  192. package/dist/build/SearchIndexer.js +0 -116
  193. package/dist/build/SearchIndexer.js.map +0 -1
  194. package/dist/bundles/client.js +0 -126
  195. package/dist/cli/create-app.d.ts +0 -14
  196. package/dist/cli/create-app.d.ts.map +0 -1
  197. package/dist/cli/create-app.js +0 -241
  198. package/dist/cli/create-app.js.map +0 -1
  199. package/dist/client/App.d.ts +0 -17
  200. package/dist/client/App.d.ts.map +0 -1
  201. package/dist/client/App.js +0 -91
  202. package/dist/client/App.js.map +0 -1
  203. package/dist/client/contexts/ConfigContext.d.ts +0 -22
  204. package/dist/client/contexts/ConfigContext.d.ts.map +0 -1
  205. package/dist/client/contexts/ConfigContext.js +0 -27
  206. package/dist/client/contexts/ConfigContext.js.map +0 -1
  207. package/dist/client/contexts/ContentContext.d.ts +0 -31
  208. package/dist/client/contexts/ContentContext.d.ts.map +0 -1
  209. package/dist/client/contexts/ContentContext.js +0 -46
  210. package/dist/client/contexts/ContentContext.js.map +0 -1
  211. package/dist/client/contexts/SearchContext.d.ts +0 -38
  212. package/dist/client/contexts/SearchContext.d.ts.map +0 -1
  213. package/dist/client/contexts/SearchContext.js +0 -185
  214. package/dist/client/contexts/SearchContext.js.map +0 -1
  215. package/dist/client/contexts/ThemeContext.d.ts +0 -23
  216. package/dist/client/contexts/ThemeContext.d.ts.map +0 -1
  217. package/dist/client/contexts/ThemeContext.js +0 -53
  218. package/dist/client/contexts/ThemeContext.js.map +0 -1
  219. package/dist/client/hooks/useContent.d.ts +0 -12
  220. package/dist/client/hooks/useContent.d.ts.map +0 -1
  221. package/dist/client/hooks/useContent.js +0 -74
  222. package/dist/client/hooks/useContent.js.map +0 -1
  223. package/dist/client/hooks/useNavigation.d.ts +0 -15
  224. package/dist/client/hooks/useNavigation.d.ts.map +0 -1
  225. package/dist/client/hooks/useNavigation.js +0 -101
  226. package/dist/client/hooks/useNavigation.js.map +0 -1
  227. package/dist/client/hooks/useSearch.d.ts +0 -22
  228. package/dist/client/hooks/useSearch.d.ts.map +0 -1
  229. package/dist/client/hooks/useSearch.js +0 -64
  230. package/dist/client/hooks/useSearch.js.map +0 -1
  231. package/dist/client/main.d.ts +0 -5
  232. package/dist/client/main.d.ts.map +0 -1
  233. package/dist/client/main.js +0 -66
  234. package/dist/client/main.js.map +0 -1
  235. package/dist/components/Callout.d.ts +0 -9
  236. package/dist/components/Callout.d.ts.map +0 -1
  237. package/dist/components/Callout.js +0 -24
  238. package/dist/components/Callout.js.map +0 -1
  239. package/dist/components/Card.d.ts +0 -10
  240. package/dist/components/Card.d.ts.map +0 -1
  241. package/dist/components/Card.js +0 -15
  242. package/dist/components/Card.js.map +0 -1
  243. package/dist/components/CardGrid.d.ts +0 -8
  244. package/dist/components/CardGrid.d.ts.map +0 -1
  245. package/dist/components/CardGrid.js +0 -9
  246. package/dist/components/CardGrid.js.map +0 -1
  247. package/dist/components/CodeBlock.d.ts +0 -28
  248. package/dist/components/CodeBlock.d.ts.map +0 -1
  249. package/dist/components/CodeBlock.js +0 -80
  250. package/dist/components/CodeBlock.js.map +0 -1
  251. package/dist/components/ContentPage.d.ts +0 -9
  252. package/dist/components/ContentPage.d.ts.map +0 -1
  253. package/dist/components/ContentPage.js +0 -102
  254. package/dist/components/ContentPage.js.map +0 -1
  255. package/dist/components/Header.d.ts +0 -14
  256. package/dist/components/Header.d.ts.map +0 -1
  257. package/dist/components/Header.js +0 -30
  258. package/dist/components/Header.js.map +0 -1
  259. package/dist/components/Heading.d.ts +0 -16
  260. package/dist/components/Heading.d.ts.map +0 -1
  261. package/dist/components/Heading.js +0 -31
  262. package/dist/components/Heading.js.map +0 -1
  263. package/dist/components/Image.d.ts +0 -8
  264. package/dist/components/Image.d.ts.map +0 -1
  265. package/dist/components/Image.js +0 -24
  266. package/dist/components/Image.js.map +0 -1
  267. package/dist/components/Layout.d.ts +0 -14
  268. package/dist/components/Layout.d.ts.map +0 -1
  269. package/dist/components/Layout.js +0 -32
  270. package/dist/components/Layout.js.map +0 -1
  271. package/dist/components/MarkdocRenderer.d.ts +0 -15
  272. package/dist/components/MarkdocRenderer.d.ts.map +0 -1
  273. package/dist/components/MarkdocRenderer.js +0 -73
  274. package/dist/components/MarkdocRenderer.js.map +0 -1
  275. package/dist/components/MobileMenu.d.ts +0 -14
  276. package/dist/components/MobileMenu.d.ts.map +0 -1
  277. package/dist/components/MobileMenu.js +0 -45
  278. package/dist/components/MobileMenu.js.map +0 -1
  279. package/dist/components/PageNavigation.d.ts +0 -9
  280. package/dist/components/PageNavigation.d.ts.map +0 -1
  281. package/dist/components/PageNavigation.js +0 -23
  282. package/dist/components/PageNavigation.js.map +0 -1
  283. package/dist/components/SearchModal.d.ts +0 -9
  284. package/dist/components/SearchModal.d.ts.map +0 -1
  285. package/dist/components/SearchModal.js +0 -74
  286. package/dist/components/SearchModal.js.map +0 -1
  287. package/dist/components/SideNav.d.ts +0 -9
  288. package/dist/components/SideNav.d.ts.map +0 -1
  289. package/dist/components/SideNav.js +0 -66
  290. package/dist/components/SideNav.js.map +0 -1
  291. package/dist/components/TableOfContents.d.ts +0 -10
  292. package/dist/components/TableOfContents.d.ts.map +0 -1
  293. package/dist/components/TableOfContents.js +0 -151
  294. package/dist/components/TableOfContents.js.map +0 -1
  295. package/dist/config/ConfigLoader.d.ts +0 -50
  296. package/dist/config/ConfigLoader.d.ts.map +0 -1
  297. package/dist/config/ConfigLoader.js +0 -214
  298. package/dist/config/ConfigLoader.js.map +0 -1
  299. package/dist/config/StyleCompiler.d.ts +0 -17
  300. package/dist/config/StyleCompiler.d.ts.map +0 -1
  301. package/dist/config/StyleCompiler.js +0 -116
  302. package/dist/config/StyleCompiler.js.map +0 -1
  303. package/dist/config/ThemeGenerator.d.ts +0 -14
  304. package/dist/config/ThemeGenerator.d.ts.map +0 -1
  305. package/dist/config/ThemeGenerator.js +0 -129
  306. package/dist/config/ThemeGenerator.js.map +0 -1
  307. package/dist/content/ContentLoader.d.ts +0 -70
  308. package/dist/content/ContentLoader.d.ts.map +0 -1
  309. package/dist/content/ContentLoader.js +0 -146
  310. package/dist/content/ContentLoader.js.map +0 -1
  311. package/dist/content/ContentProcessor.d.ts +0 -84
  312. package/dist/content/ContentProcessor.d.ts.map +0 -1
  313. package/dist/content/ContentProcessor.js +0 -380
  314. package/dist/content/ContentProcessor.js.map +0 -1
  315. package/dist/content/RouteManager.d.ts +0 -69
  316. package/dist/content/RouteManager.d.ts.map +0 -1
  317. package/dist/content/RouteManager.js +0 -143
  318. package/dist/content/RouteManager.js.map +0 -1
  319. package/dist/styles/components/callout.d.ts +0 -11
  320. package/dist/styles/components/callout.d.ts.map +0 -1
  321. package/dist/styles/components/callout.js +0 -87
  322. package/dist/styles/components/callout.js.map +0 -1
  323. package/dist/styles/components/card.d.ts +0 -11
  324. package/dist/styles/components/card.d.ts.map +0 -1
  325. package/dist/styles/components/card.js +0 -179
  326. package/dist/styles/components/card.js.map +0 -1
  327. package/dist/styles/components/codeblock.d.ts +0 -11
  328. package/dist/styles/components/codeblock.d.ts.map +0 -1
  329. package/dist/styles/components/codeblock.js +0 -251
  330. package/dist/styles/components/codeblock.js.map +0 -1
  331. package/dist/styles/components/content.d.ts +0 -11
  332. package/dist/styles/components/content.d.ts.map +0 -1
  333. package/dist/styles/components/content.js +0 -197
  334. package/dist/styles/components/content.js.map +0 -1
  335. package/dist/styles/components/fonts.d.ts +0 -11
  336. package/dist/styles/components/fonts.d.ts.map +0 -1
  337. package/dist/styles/components/fonts.js +0 -34
  338. package/dist/styles/components/fonts.js.map +0 -1
  339. package/dist/styles/components/header.d.ts +0 -11
  340. package/dist/styles/components/header.d.ts.map +0 -1
  341. package/dist/styles/components/header.js +0 -293
  342. package/dist/styles/components/header.js.map +0 -1
  343. package/dist/styles/components/heading.d.ts +0 -11
  344. package/dist/styles/components/heading.d.ts.map +0 -1
  345. package/dist/styles/components/heading.js +0 -115
  346. package/dist/styles/components/heading.js.map +0 -1
  347. package/dist/styles/components/layout.d.ts +0 -11
  348. package/dist/styles/components/layout.d.ts.map +0 -1
  349. package/dist/styles/components/layout.js +0 -79
  350. package/dist/styles/components/layout.js.map +0 -1
  351. package/dist/styles/components/mobilemenu.d.ts +0 -11
  352. package/dist/styles/components/mobilemenu.d.ts.map +0 -1
  353. package/dist/styles/components/mobilemenu.js +0 -112
  354. package/dist/styles/components/mobilemenu.js.map +0 -1
  355. package/dist/styles/components/reset.d.ts +0 -11
  356. package/dist/styles/components/reset.d.ts.map +0 -1
  357. package/dist/styles/components/reset.js +0 -131
  358. package/dist/styles/components/reset.js.map +0 -1
  359. package/dist/styles/components/searchmodal.d.ts +0 -11
  360. package/dist/styles/components/searchmodal.d.ts.map +0 -1
  361. package/dist/styles/components/searchmodal.js +0 -333
  362. package/dist/styles/components/searchmodal.js.map +0 -1
  363. package/dist/styles/components/sidenav.d.ts +0 -11
  364. package/dist/styles/components/sidenav.d.ts.map +0 -1
  365. package/dist/styles/components/sidenav.js +0 -212
  366. package/dist/styles/components/sidenav.js.map +0 -1
  367. package/dist/styles/components/toc.d.ts +0 -11
  368. package/dist/styles/components/toc.d.ts.map +0 -1
  369. package/dist/styles/components/toc.js +0 -120
  370. package/dist/styles/components/toc.js.map +0 -1
  371. package/dist/styles/components/typography.d.ts +0 -11
  372. package/dist/styles/components/typography.d.ts.map +0 -1
  373. package/dist/styles/components/typography.js +0 -248
  374. package/dist/styles/components/typography.js.map +0 -1
  375. package/dist/styles/components/utility.d.ts +0 -11
  376. package/dist/styles/components/utility.d.ts.map +0 -1
  377. package/dist/styles/components/utility.js +0 -231
  378. package/dist/styles/components/utility.js.map +0 -1
  379. package/dist/styles/types.d.ts +0 -79
  380. package/dist/styles/types.d.ts.map +0 -1
  381. package/dist/styles/types.js +0 -7
  382. package/dist/styles/types.js.map +0 -1
  383. package/dist/styles/utils.d.ts +0 -21
  384. package/dist/styles/utils.d.ts.map +0 -1
  385. package/dist/styles/utils.js +0 -50
  386. package/dist/styles/utils.js.map +0 -1
  387. package/dist/styles/variables/main.d.ts +0 -15
  388. package/dist/styles/variables/main.d.ts.map +0 -1
  389. package/dist/styles/variables/main.js +0 -116
  390. package/dist/styles/variables/main.js.map +0 -1
  391. package/dist/types/config.d.ts +0 -43
  392. package/dist/types/config.d.ts.map +0 -1
  393. package/dist/types/config.js +0 -7
  394. package/dist/types/config.js.map +0 -1
  395. package/dist/utils/language-utils.d.ts +0 -41
  396. package/dist/utils/language-utils.d.ts.map +0 -1
  397. package/dist/utils/language-utils.js +0 -79
  398. package/dist/utils/language-utils.js.map +0 -1
  399. package/dist/utils/slugify.d.ts +0 -20
  400. package/dist/utils/slugify.d.ts.map +0 -1
  401. package/dist/utils/slugify.js +0 -44
  402. package/dist/utils/slugify.js.map +0 -1
  403. package/templates/default/config/favicon.ico +0 -0
  404. package/templates/default/config/logo-dark.png +0 -0
  405. package/templates/default/config/logo.png +0 -0
  406. package/templates/default/config/sidenav.yaml +0 -36
  407. package/templates/default/config/site.json +0 -16
  408. package/templates/default/config/styles/main.json +0 -6
  409. package/templates/default/config/styles/typography.json +0 -6
  410. package/templates/default/content/en/changelog.md +0 -35
  411. package/templates/default/content/en/faq.md +0 -50
  412. package/templates/default/content/en/field-manual/engines.md +0 -59
  413. package/templates/default/content/en/field-manual/relativity.md +0 -46
  414. package/templates/default/content/en/field-manual/safety.md +0 -44
  415. package/templates/default/content/en/field-manual.md +0 -22
  416. package/templates/default/content/en/flight-school/navigation.md +0 -61
  417. package/templates/default/content/en/flight-school/primer.md +0 -64
  418. package/templates/default/content/en/flight-school.md +0 -48
  419. package/templates/default/content/en/index.md +0 -83
  420. package/templates/default/content/en/ship-systems/flux-sails.md +0 -33
  421. package/templates/default/content/en/ship-systems/photonic-core.md +0 -39
  422. package/templates/default/content/en/ship-systems.md +0 -25
  423. package/templates/default/package.json +0 -21
  424. package/templates/default/public/icons/academy.svg +0 -15
  425. package/templates/default/public/icons/manual.svg +0 -16
  426. package/templates/default/public/icons/relativity.svg +0 -16
  427. package/templates/default/public/icons/systems.svg +0 -14
  428. package/templates/default/public/icons/warning.svg +0 -14
  429. package/templates/default/public/images/flux-sails.svg +0 -33
  430. package/templates/default/public/images/photonic-core.svg +0 -44
  431. package/templates/default/public/images/starwake.svg +0 -49
@@ -0,0 +1,93 @@
1
+ import type { Plugin } from 'vite';
2
+ import type { MordocData } from '../types/pipeline.js';
3
+ /**
4
+ * The set of "eager" virtual module IDs this plugin exposes.
5
+ *
6
+ * Eager = loaded up-front by the React client shell. They hold the
7
+ * configs, a lightweight per-page route index, and a map of per-route
8
+ * lazy loaders. None of them carry the heavy per-page content.
9
+ *
10
+ * Per-route page chunks live under the `virtual:mordoc/page/<routePath>`
11
+ * prefix ({@link PAGE_MODULE_PREFIX}) and are loaded on navigation via
12
+ * the `virtual:mordoc/page-loaders` map.
13
+ */
14
+ export declare const EAGER_VIRTUAL_IDS: readonly ["virtual:mordoc/site", "virtual:mordoc/language", "virtual:mordoc/navigation", "virtual:mordoc/assets", "virtual:mordoc/pages-index", "virtual:mordoc/page-loaders", "virtual:mordoc/translations"];
15
+ export type EagerVirtualId = typeof EAGER_VIRTUAL_IDS[number];
16
+ /**
17
+ * Prefix for lazy per-route page modules.
18
+ *
19
+ * The full id is `${PAGE_MODULE_PREFIX}${routePath}`. Because every
20
+ * routePath starts with `/`, concatenation yields clean ids like
21
+ * `virtual:mordoc/page/flight-manual/safety`, and the root route `/`
22
+ * yields `virtual:mordoc/page/` (trailing slash). No sentinels needed.
23
+ */
24
+ export declare const PAGE_MODULE_PREFIX = "virtual:mordoc/page";
25
+ /**
26
+ * Builds the JS source for a given *eager* virtual module.
27
+ * Returns null if the id isn't one of ours.
28
+ *
29
+ * Pure function — no I/O, no Vite dependency. The plugin's `load` hook
30
+ * uses it at runtime; the `validate` CLI uses it to preview output for
31
+ * inspection without spinning up a dev server.
32
+ *
33
+ * Most cases emit plain `export default ${JSON.stringify(...)}` — a JSON
34
+ * literal is also a valid JS expression, and renderable trees are plain
35
+ * Markdoc Tag objects, also JSON-safe. The `page-loaders` case diverges
36
+ * because it must emit literal `import()` expressions rather than data.
37
+ *
38
+ * Lazy per-route modules (`virtual:mordoc/page/<routePath>`) go through
39
+ * {@link generatePageModule} instead.
40
+ */
41
+ export declare function generateVirtualModule(id: string, data: MordocData): string | null;
42
+ /**
43
+ * Builds the JS source for the lazy `virtual:mordoc/page/<routePath>`
44
+ * module that carries a single page's full `PageData`. Returns null if
45
+ * no page matches the given routePath.
46
+ *
47
+ * Pure function, mirrors {@link generateVirtualModule} for the lazy side.
48
+ */
49
+ export declare function generatePageModule(routePath: string, data: MordocData): string | null;
50
+ export interface MordocVitePluginOptions {
51
+ /** Absolute path to the user's project root. */
52
+ projectRoot: string;
53
+ /**
54
+ * Pre-loaded pipeline output. When provided, the plugin skips its own
55
+ * `runPipeline(projectRoot)` call in `buildStart` and uses this value
56
+ * directly.
57
+ *
58
+ * The build command runs Vite twice (once for the client, once for the
59
+ * SSR entry) and both passes need the same `MordocData`. Letting the
60
+ * caller compute it once and inject it here avoids running the pipeline
61
+ * twice per build, and gives the build command a single point at which
62
+ * to mutate the data (e.g. rewriting asset paths) before either Vite
63
+ * pass starts.
64
+ *
65
+ * Dev path passes `projectRoot` only; this remains unset and the
66
+ * plugin runs the pipeline itself, exactly as before.
67
+ */
68
+ data?: MordocData;
69
+ }
70
+ /**
71
+ * Vite plugin that exposes a Mordoc project's data to the React client
72
+ * via virtual modules.
73
+ *
74
+ * Lifecycle:
75
+ * - `buildStart`: runs the pipeline once and caches the result.
76
+ * Fires in both dev (when the server starts) and prod (before bundling).
77
+ * - `resolveId` / `load`: serves the cached data as virtual ES modules.
78
+ * Eager modules (configs, route index, loader map) resolve by exact id.
79
+ * Lazy per-route page modules resolve by `PAGE_MODULE_PREFIX` match.
80
+ * - `configureServer` (dev only, when `data` is not injected): watches
81
+ * `content/` and `config/`, refreshes the in-memory pipeline cache,
82
+ * triggers `reloadModule` for config-only eager updates, runs `runPipeline`
83
+ * when the route set may change, and sends a **full document reload** after
84
+ * granular `.md` edits so React Router picks up fresh loader data (invalidate
85
+ * lazy virtuals for SSR, then **full document reload**).
86
+ *
87
+ * Asset paths: in dev, `virtual:mordoc/assets` emits `/_assets/<basename>`
88
+ * web URLs and `configureServer` registers a middleware that serves those
89
+ * files from `<projectRoot>/config/assets/`. In build, `copyAndRewriteAssets`
90
+ * handles the rewrite before the plugin receives the data.
91
+ */
92
+ export declare function mordocVitePlugin(options: MordocVitePluginOptions): Plugin;
93
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/vite/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,MAAM,CAAC;AAYlD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,+MAQpB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAE9D;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AAmGxD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAmBjF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAIrF;AAwKD,MAAM,WAAW,uBAAuB;IACtC,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAgIzE"}
@@ -0,0 +1,435 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { loadAssets } from '../config/assets-loader.js';
4
+ import { loadSiteConfig } from '../config/site-loader.js';
5
+ import { loadNavigation, loadNavTranslations, pagesRouteSignature, replaceTransformedPage, reparsePage, runPipeline, } from '../pipeline.js';
6
+ /**
7
+ * The set of "eager" virtual module IDs this plugin exposes.
8
+ *
9
+ * Eager = loaded up-front by the React client shell. They hold the
10
+ * configs, a lightweight per-page route index, and a map of per-route
11
+ * lazy loaders. None of them carry the heavy per-page content.
12
+ *
13
+ * Per-route page chunks live under the `virtual:mordoc/page/<routePath>`
14
+ * prefix ({@link PAGE_MODULE_PREFIX}) and are loaded on navigation via
15
+ * the `virtual:mordoc/page-loaders` map.
16
+ */
17
+ export const EAGER_VIRTUAL_IDS = [
18
+ 'virtual:mordoc/site',
19
+ 'virtual:mordoc/language',
20
+ 'virtual:mordoc/navigation',
21
+ 'virtual:mordoc/assets',
22
+ 'virtual:mordoc/pages-index',
23
+ 'virtual:mordoc/page-loaders',
24
+ 'virtual:mordoc/translations',
25
+ ];
26
+ /**
27
+ * Prefix for lazy per-route page modules.
28
+ *
29
+ * The full id is `${PAGE_MODULE_PREFIX}${routePath}`. Because every
30
+ * routePath starts with `/`, concatenation yields clean ids like
31
+ * `virtual:mordoc/page/flight-manual/safety`, and the root route `/`
32
+ * yields `virtual:mordoc/page/` (trailing slash). No sentinels needed.
33
+ */
34
+ export const PAGE_MODULE_PREFIX = 'virtual:mordoc/page';
35
+ /** Vite/Rollup convention: virtual modules are addressed with a leading null byte. */
36
+ const RESOLVED_PREFIX = '\0';
37
+ /** Virtual module ID for the user's optional config/theme.css. */
38
+ const THEME_CSS_ID = 'virtual:mordoc/theme';
39
+ /** Resolved ID used when config/theme.css does not exist — load returns empty. */
40
+ const RESOLVED_THEME_CSS_EMPTY = '\0virtual:mordoc/theme';
41
+ const EAGER_SET = new Set(EAGER_VIRTUAL_IDS);
42
+ /**
43
+ * Rewrites absolute disk paths in `ResolvedAssets` to `/_assets/<basename>`
44
+ * web URLs so the browser can fetch them from the dev middleware.
45
+ */
46
+ function rewriteAssetsForDev(assets) {
47
+ const toUrl = (p) => p ? `/_assets/${path.basename(p)}` : null;
48
+ return {
49
+ favicon: toUrl(assets.favicon),
50
+ logo: toUrl(assets.logo),
51
+ logoDark: toUrl(assets.logoDark),
52
+ };
53
+ }
54
+ /** True if `id` is a lazy per-route page module id (after prefix). */
55
+ function isPageModuleId(id) {
56
+ return id.startsWith(PAGE_MODULE_PREFIX + '/');
57
+ }
58
+ /** Extracts the routePath back out of a lazy page module id. */
59
+ function routePathFromPageModuleId(id) {
60
+ return id.slice(PAGE_MODULE_PREFIX.length);
61
+ }
62
+ /**
63
+ * Projects a `TransformedPage` down to its route identity.
64
+ *
65
+ * Everything else the page carries (frontmatter, TOC, renderable tree)
66
+ * ships with the per-route lazy chunk that the shell only fetches on
67
+ * navigation. See the rationale in the `PageMeta` type's doc comment.
68
+ */
69
+ function toPageMeta(page) {
70
+ const meta = {
71
+ routePath: page.entry.routePath,
72
+ language: page.entry.language,
73
+ };
74
+ if (page.frontmatter.layout === 'landing') {
75
+ meta.layout = 'landing';
76
+ }
77
+ return meta;
78
+ }
79
+ /**
80
+ * Projects a `TransformedPage` into the shape shipped by the per-route
81
+ * lazy module — i.e. the payload of `virtual:mordoc/page/<routePath>`.
82
+ */
83
+ function toPageData(page) {
84
+ return {
85
+ renderable: page.renderable,
86
+ frontmatter: page.frontmatter,
87
+ toc: page.toc,
88
+ };
89
+ }
90
+ /**
91
+ * Builds the JS source for the `virtual:mordoc/page-loaders` module.
92
+ *
93
+ * Unlike the other eager modules this one can't just JSON-stringify its
94
+ * payload: it needs to emit real JS containing a literal `import()`
95
+ * expression per route. Emitting literals (rather than one dynamic
96
+ * `import(\`…${routePath}\`)` at the call site) is what lets Vite/Rollup
97
+ * statically analyze, code-split, and preload each route's chunk.
98
+ *
99
+ * Output shape:
100
+ * export default {
101
+ * "/": () => import("virtual:mordoc/page/"),
102
+ * "/flight-manual": () => import("virtual:mordoc/page/flight-manual"),
103
+ * ...
104
+ * };
105
+ *
106
+ * `JSON.stringify` is used for both the object keys and the import
107
+ * specifiers — valid JSON strings are valid JS strings, so it handles
108
+ * any escaping the routePath might require.
109
+ */
110
+ function generatePageLoadersSource(data) {
111
+ if (data.pages.length === 0) {
112
+ return 'export default {};';
113
+ }
114
+ const entries = data.pages.map((page) => {
115
+ const routePath = page.entry.routePath;
116
+ const key = JSON.stringify(routePath);
117
+ const specifier = JSON.stringify(`${PAGE_MODULE_PREFIX}${routePath}`);
118
+ return ` ${key}: () => import(${specifier})`;
119
+ });
120
+ return `export default {\n${entries.join(',\n')}\n};`;
121
+ }
122
+ /**
123
+ * Builds the JS source for a given *eager* virtual module.
124
+ * Returns null if the id isn't one of ours.
125
+ *
126
+ * Pure function — no I/O, no Vite dependency. The plugin's `load` hook
127
+ * uses it at runtime; the `validate` CLI uses it to preview output for
128
+ * inspection without spinning up a dev server.
129
+ *
130
+ * Most cases emit plain `export default ${JSON.stringify(...)}` — a JSON
131
+ * literal is also a valid JS expression, and renderable trees are plain
132
+ * Markdoc Tag objects, also JSON-safe. The `page-loaders` case diverges
133
+ * because it must emit literal `import()` expressions rather than data.
134
+ *
135
+ * Lazy per-route modules (`virtual:mordoc/page/<routePath>`) go through
136
+ * {@link generatePageModule} instead.
137
+ */
138
+ export function generateVirtualModule(id, data) {
139
+ switch (id) {
140
+ case 'virtual:mordoc/site':
141
+ return `export default ${JSON.stringify(data.site)};`;
142
+ case 'virtual:mordoc/language':
143
+ return `export default ${JSON.stringify(data.language)};`;
144
+ case 'virtual:mordoc/navigation':
145
+ return `export default ${JSON.stringify(data.navigation)};`;
146
+ case 'virtual:mordoc/assets':
147
+ return `export default ${JSON.stringify(data.assets)};`;
148
+ case 'virtual:mordoc/pages-index':
149
+ return `export default ${JSON.stringify(data.pages.map(toPageMeta))};`;
150
+ case 'virtual:mordoc/page-loaders':
151
+ return generatePageLoadersSource(data);
152
+ case 'virtual:mordoc/translations':
153
+ return `export default ${JSON.stringify(data.translations)};`;
154
+ default:
155
+ return null;
156
+ }
157
+ }
158
+ /**
159
+ * Builds the JS source for the lazy `virtual:mordoc/page/<routePath>`
160
+ * module that carries a single page's full `PageData`. Returns null if
161
+ * no page matches the given routePath.
162
+ *
163
+ * Pure function, mirrors {@link generateVirtualModule} for the lazy side.
164
+ */
165
+ export function generatePageModule(routePath, data) {
166
+ const page = data.pages.find((p) => p.entry.routePath === routePath);
167
+ if (!page)
168
+ return null;
169
+ return `export default ${JSON.stringify(toPageData(page))};`;
170
+ }
171
+ /**
172
+ * absPath must be normalized absolute path.
173
+ */
174
+ function forwardProjectRel(projectRoot, absPath) {
175
+ const rel = path.relative(projectRoot, absPath).split(path.sep).join('/');
176
+ if (rel.startsWith('..'))
177
+ return null;
178
+ return rel;
179
+ }
180
+ function resolvedVirtualId(virtualId) {
181
+ return RESOLVED_PREFIX + virtualId;
182
+ }
183
+ async function reloadVirtualModule(server, virtualId) {
184
+ const resolvedId = resolvedVirtualId(virtualId);
185
+ // Invalidate in the client module graph + trigger HMR
186
+ const clientMod = server.moduleGraph.getModuleById(resolvedId);
187
+ if (clientMod) {
188
+ server.moduleGraph.invalidateModule(clientMod);
189
+ }
190
+ // Invalidate in the SSR module graph so ssrLoadModule re-runs load()
191
+ const ssrMod = server.environments.ssr.moduleGraph.getModuleById(resolvedId);
192
+ if (ssrMod) {
193
+ server.environments.ssr.moduleGraph.invalidateModule(ssrMod);
194
+ }
195
+ // Trigger HMR for the client side
196
+ if (clientMod) {
197
+ await server.reloadModule(clientMod);
198
+ }
199
+ }
200
+ async function reloadAllMordocVirtualModules(server, pages) {
201
+ for (const id of EAGER_VIRTUAL_IDS) {
202
+ await reloadVirtualModule(server, id);
203
+ }
204
+ for (const page of pages) {
205
+ await reloadVirtualModule(server, `${PAGE_MODULE_PREFIX}${page.entry.routePath}`);
206
+ }
207
+ }
208
+ /** Applies a debounced batch of `content/` + `config/` file events for dev HMR. */
209
+ async function applyMordocWatchBatch(server, projectRoot, batch, getData, setData) {
210
+ const data = getData();
211
+ if (!data || batch.size === 0)
212
+ return;
213
+ const rels = [...batch.keys()]
214
+ .map((abs) => ({ abs, rel: forwardProjectRel(projectRoot, abs) }))
215
+ .filter((x) => x.rel !== null);
216
+ const contentEvents = rels.filter(({ rel }) => rel.startsWith('content/'));
217
+ const configEvents = rels.filter(({ rel }) => rel.startsWith('config/'));
218
+ const hasContentStructural = contentEvents.some(({ abs }) => batch.get(abs) !== 'change');
219
+ // Any new/removed path under content ⇒ re-run pipeline.
220
+ if (hasContentStructural) {
221
+ await rerunPipelineForDev(server, projectRoot, getData, setData);
222
+ return;
223
+ }
224
+ if (configEvents.some(({ rel }) => rel === 'config/language.json')) {
225
+ await rerunPipelineForDev(server, projectRoot, getData, setData);
226
+ return;
227
+ }
228
+ const siteRel = 'config/site.json';
229
+ if (configEvents.some(({ rel }) => rel === siteRel)) {
230
+ const site = await loadSiteConfig(projectRoot);
231
+ if (site.defaultLanguage !== data.site.defaultLanguage) {
232
+ await rerunPipelineForDev(server, projectRoot, getData, setData);
233
+ return;
234
+ }
235
+ data.site = site;
236
+ await reloadVirtualModule(server, 'virtual:mordoc/site');
237
+ }
238
+ const isNavStructureChange = configEvents.some(({ rel }) => rel.startsWith('config/navigation/') &&
239
+ !rel.startsWith('config/navigation/translations/'));
240
+ const isTranslationsChange = configEvents.some(({ rel }) => rel.startsWith('config/navigation/translations/'));
241
+ if (isNavStructureChange) {
242
+ data.navigation = await loadNavigation(projectRoot);
243
+ await reloadVirtualModule(server, 'virtual:mordoc/navigation');
244
+ }
245
+ if (isTranslationsChange) {
246
+ data.translations = await loadNavTranslations(projectRoot, data.language?.languages ?? [data.site.defaultLanguage], data.site.defaultLanguage);
247
+ await reloadVirtualModule(server, 'virtual:mordoc/translations');
248
+ }
249
+ const isAssetsPath = (rel) => rel === 'config/assets' || rel.startsWith('config/assets/');
250
+ if (configEvents.some(({ rel }) => isAssetsPath(rel))) {
251
+ data.assets = await loadAssets(projectRoot);
252
+ await reloadVirtualModule(server, 'virtual:mordoc/assets');
253
+ }
254
+ // Invalidate the lazy virtual module so Vite drops the stale cached version,
255
+ // then trigger a full browser reload so React Router re-runs the route loader
256
+ // against the freshly patched data.
257
+ const reparsedVirtualIds = [];
258
+ for (const { abs, rel } of contentEvents) {
259
+ if (batch.get(abs) !== 'change')
260
+ continue;
261
+ if (!rel.toLowerCase().endsWith('.md'))
262
+ continue;
263
+ const page = data.pages.find((p) => path.normalize(p.entry.filePath) === abs);
264
+ if (!page) {
265
+ await rerunPipelineForDev(server, projectRoot, getData, setData);
266
+ return;
267
+ }
268
+ const reparsed = await reparsePage(page.entry);
269
+ replaceTransformedPage(data, reparsed);
270
+ reparsedVirtualIds.push(`${PAGE_MODULE_PREFIX}${reparsed.entry.routePath}`);
271
+ }
272
+ if (reparsedVirtualIds.length > 0) {
273
+ for (const virtualId of reparsedVirtualIds) {
274
+ await reloadVirtualModule(server, virtualId);
275
+ }
276
+ server.ws.send({ type: 'full-reload', path: '*' });
277
+ }
278
+ }
279
+ async function rerunPipelineForDev(server, projectRoot, getData, setData) {
280
+ const prev = getData();
281
+ if (!prev)
282
+ return;
283
+ const prevSig = pagesRouteSignature(prev.pages);
284
+ const next = await runPipeline(projectRoot);
285
+ const nextSig = pagesRouteSignature(next.pages);
286
+ setData(next);
287
+ if (prevSig !== nextSig) {
288
+ server.ws.send({ type: 'full-reload', path: '*' });
289
+ return;
290
+ }
291
+ await reloadAllMordocVirtualModules(server, next.pages);
292
+ }
293
+ /**
294
+ * Vite plugin that exposes a Mordoc project's data to the React client
295
+ * via virtual modules.
296
+ *
297
+ * Lifecycle:
298
+ * - `buildStart`: runs the pipeline once and caches the result.
299
+ * Fires in both dev (when the server starts) and prod (before bundling).
300
+ * - `resolveId` / `load`: serves the cached data as virtual ES modules.
301
+ * Eager modules (configs, route index, loader map) resolve by exact id.
302
+ * Lazy per-route page modules resolve by `PAGE_MODULE_PREFIX` match.
303
+ * - `configureServer` (dev only, when `data` is not injected): watches
304
+ * `content/` and `config/`, refreshes the in-memory pipeline cache,
305
+ * triggers `reloadModule` for config-only eager updates, runs `runPipeline`
306
+ * when the route set may change, and sends a **full document reload** after
307
+ * granular `.md` edits so React Router picks up fresh loader data (invalidate
308
+ * lazy virtuals for SSR, then **full document reload**).
309
+ *
310
+ * Asset paths: in dev, `virtual:mordoc/assets` emits `/_assets/<basename>`
311
+ * web URLs and `configureServer` registers a middleware that serves those
312
+ * files from `<projectRoot>/config/assets/`. In build, `copyAndRewriteAssets`
313
+ * handles the rewrite before the plugin receives the data.
314
+ */
315
+ export function mordocVitePlugin(options) {
316
+ // Seed the cache from the caller if data was injected; otherwise it
317
+ // gets filled by buildStart's own runPipeline call. Either way, every
318
+ // hook below sees a populated `data` by the time it runs.
319
+ let data = options.data ?? null;
320
+ return {
321
+ name: 'mordoc',
322
+ async buildStart() {
323
+ // Skip the pipeline if the caller already supplied data — the build
324
+ // command does this so the client and SSR Vite passes share one
325
+ // pipeline result. Dev (no `data`) still runs it here.
326
+ if (!data) {
327
+ data = await runPipeline(options.projectRoot);
328
+ }
329
+ },
330
+ configureServer(server) {
331
+ if (options.data) {
332
+ return;
333
+ }
334
+ const projectRoot = options.projectRoot;
335
+ let debounceTimer = null;
336
+ const pending = new Map();
337
+ const flush = async () => {
338
+ debounceTimer = null;
339
+ if (pending.size === 0)
340
+ return;
341
+ if (!data) {
342
+ debounceTimer = setTimeout(flush, 50);
343
+ return;
344
+ }
345
+ const batch = new Map(pending);
346
+ pending.clear();
347
+ try {
348
+ await applyMordocWatchBatch(server, projectRoot, batch, () => data, (next) => {
349
+ data = next;
350
+ });
351
+ }
352
+ catch (err) {
353
+ console.error('[mordoc] watch update failed:', err);
354
+ try {
355
+ const recovered = await runPipeline(projectRoot);
356
+ data = recovered;
357
+ await reloadAllMordocVirtualModules(server, recovered.pages);
358
+ server.ws.send({ type: 'full-reload', path: '*' });
359
+ }
360
+ catch (recoverErr) {
361
+ console.error('[mordoc] watch recovery failed:', recoverErr);
362
+ }
363
+ }
364
+ };
365
+ const schedule = (absPath, event) => {
366
+ pending.set(absPath, event);
367
+ if (debounceTimer)
368
+ clearTimeout(debounceTimer);
369
+ debounceTimer = setTimeout(flush, 75);
370
+ };
371
+ server.watcher.add(path.join(projectRoot, 'content'));
372
+ server.watcher.add(path.join(projectRoot, 'config'));
373
+ server.watcher.on('all', (event, rawPath) => {
374
+ if (event !== 'add' && event !== 'change' && event !== 'unlink')
375
+ return;
376
+ const absPath = path.normalize(String(rawPath));
377
+ const rel = forwardProjectRel(projectRoot, absPath);
378
+ if (!rel)
379
+ return;
380
+ if (!rel.startsWith('content/') && !rel.startsWith('config/'))
381
+ return;
382
+ schedule(absPath, event);
383
+ });
384
+ },
385
+ resolveId(id) {
386
+ if (id === THEME_CSS_ID) {
387
+ const themePath = path.join(options.projectRoot, 'config', 'theme.css');
388
+ return fs.existsSync(themePath) ? themePath : RESOLVED_THEME_CSS_EMPTY;
389
+ }
390
+ if (EAGER_SET.has(id) || isPageModuleId(id)) {
391
+ return RESOLVED_PREFIX + id;
392
+ }
393
+ return null;
394
+ },
395
+ load(id) {
396
+ if (id === RESOLVED_THEME_CSS_EMPTY)
397
+ return '';
398
+ if (!id.startsWith(RESOLVED_PREFIX))
399
+ return null;
400
+ const virtualId = id.slice(RESOLVED_PREFIX.length);
401
+ const isEager = EAGER_SET.has(virtualId);
402
+ const isPage = isPageModuleId(virtualId);
403
+ if (!isEager && !isPage)
404
+ return null;
405
+ if (!data) {
406
+ // buildStart populates `data` before any load can happen; this
407
+ // guard exists only to surface an unexpected lifecycle ordering
408
+ // rather than silently emit a broken module.
409
+ throw new Error(`mordoc plugin: load("${id}") called before buildStart populated data.`);
410
+ }
411
+ if (isEager) {
412
+ // In dev (no injected data), rewrite asset disk paths to /_assets/ URLs
413
+ // so the browser can fetch them via the dev asset middleware.
414
+ if (virtualId === 'virtual:mordoc/assets' && !options.data) {
415
+ return generateVirtualModule(virtualId, {
416
+ ...data,
417
+ assets: rewriteAssetsForDev(data.assets),
418
+ });
419
+ }
420
+ return generateVirtualModule(virtualId, data);
421
+ }
422
+ const routePath = routePathFromPageModuleId(virtualId);
423
+ const source = generatePageModule(routePath, data);
424
+ if (source === null) {
425
+ // Reaching here means a consumer imported a page module for a
426
+ // routePath that isn't in the pipeline output. The static
427
+ // `page-loaders` map only emits entries for known pages, so this
428
+ // should be unreachable in normal operation.
429
+ throw new Error(`mordoc plugin: no page found for routePath "${routePath}" (id: ${id}).`);
430
+ }
431
+ return source;
432
+ },
433
+ };
434
+ }
435
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/vite/plugin.ts"],"names":[],"mappings":"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"}