markopress 0.0.1

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 (335) hide show
  1. package/bin/cli.js +16 -0
  2. package/dist/build/index.d.ts +83 -0
  3. package/dist/build/index.d.ts.map +1 -0
  4. package/dist/build/index.js +1553 -0
  5. package/dist/build/index.js.map +1 -0
  6. package/dist/build/manifest-generator.d.ts +34 -0
  7. package/dist/build/manifest-generator.d.ts.map +1 -0
  8. package/dist/build/manifest-generator.js +86 -0
  9. package/dist/build/manifest-generator.js.map +1 -0
  10. package/dist/build/security.test.d.ts +6 -0
  11. package/dist/build/security.test.d.ts.map +1 -0
  12. package/dist/build/security.test.js +88 -0
  13. package/dist/build/security.test.js.map +1 -0
  14. package/dist/build/types.d.ts +21 -0
  15. package/dist/build/types.d.ts.map +1 -0
  16. package/dist/build/types.js +5 -0
  17. package/dist/build/types.js.map +1 -0
  18. package/dist/build/vite-config.test.d.ts +2 -0
  19. package/dist/build/vite-config.test.d.ts.map +1 -0
  20. package/dist/build/vite-config.test.js +53 -0
  21. package/dist/build/vite-config.test.js.map +1 -0
  22. package/dist/build/vite-markdown-plugin.d.ts +13 -0
  23. package/dist/build/vite-markdown-plugin.d.ts.map +1 -0
  24. package/dist/build/vite-markdown-plugin.js +134 -0
  25. package/dist/build/vite-markdown-plugin.js.map +1 -0
  26. package/dist/build/vite-markdown-plugin.test.d.ts +2 -0
  27. package/dist/build/vite-markdown-plugin.test.d.ts.map +1 -0
  28. package/dist/build/vite-markdown-plugin.test.js +41 -0
  29. package/dist/build/vite-markdown-plugin.test.js.map +1 -0
  30. package/dist/cli/index.d.ts +6 -0
  31. package/dist/cli/index.d.ts.map +1 -0
  32. package/dist/cli/index.js +75 -0
  33. package/dist/cli/index.js.map +1 -0
  34. package/dist/config/app-root.d.ts +11 -0
  35. package/dist/config/app-root.d.ts.map +1 -0
  36. package/dist/config/app-root.js +24 -0
  37. package/dist/config/app-root.js.map +1 -0
  38. package/dist/config/app-root.test.d.ts +2 -0
  39. package/dist/config/app-root.test.d.ts.map +1 -0
  40. package/dist/config/app-root.test.js +71 -0
  41. package/dist/config/app-root.test.js.map +1 -0
  42. package/dist/config/index.d.ts +6 -0
  43. package/dist/config/index.d.ts.map +1 -0
  44. package/dist/config/index.js +6 -0
  45. package/dist/config/index.js.map +1 -0
  46. package/dist/config/loader.d.ts +25 -0
  47. package/dist/config/loader.d.ts.map +1 -0
  48. package/dist/config/loader.js +187 -0
  49. package/dist/config/loader.js.map +1 -0
  50. package/dist/config/loader.test.d.ts +2 -0
  51. package/dist/config/loader.test.d.ts.map +1 -0
  52. package/dist/config/loader.test.js +24 -0
  53. package/dist/config/loader.test.js.map +1 -0
  54. package/dist/config/types.d.ts +149 -0
  55. package/dist/config/types.d.ts.map +1 -0
  56. package/dist/config/types.js +5 -0
  57. package/dist/config/types.js.map +1 -0
  58. package/dist/config/validation.d.ts +188 -0
  59. package/dist/config/validation.d.ts.map +1 -0
  60. package/dist/config/validation.js +139 -0
  61. package/dist/config/validation.js.map +1 -0
  62. package/dist/content/index.d.ts +6 -0
  63. package/dist/content/index.d.ts.map +1 -0
  64. package/dist/content/index.js +6 -0
  65. package/dist/content/index.js.map +1 -0
  66. package/dist/content/registry.d.ts +29 -0
  67. package/dist/content/registry.d.ts.map +1 -0
  68. package/dist/content/registry.js +45 -0
  69. package/dist/content/registry.js.map +1 -0
  70. package/dist/content/scanner.d.ts +9 -0
  71. package/dist/content/scanner.d.ts.map +1 -0
  72. package/dist/content/scanner.js +115 -0
  73. package/dist/content/scanner.js.map +1 -0
  74. package/dist/content/types.d.ts +41 -0
  75. package/dist/content/types.d.ts.map +1 -0
  76. package/dist/content/types.js +5 -0
  77. package/dist/content/types.js.map +1 -0
  78. package/dist/dev/index.d.ts +18 -0
  79. package/dist/dev/index.d.ts.map +1 -0
  80. package/dist/dev/index.js +93 -0
  81. package/dist/dev/index.js.map +1 -0
  82. package/dist/index.d.ts +14 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +17 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/markdown/code.d.ts +79 -0
  87. package/dist/markdown/code.d.ts.map +1 -0
  88. package/dist/markdown/code.js +305 -0
  89. package/dist/markdown/code.js.map +1 -0
  90. package/dist/markdown/containers.d.ts +17 -0
  91. package/dist/markdown/containers.d.ts.map +1 -0
  92. package/dist/markdown/containers.js +143 -0
  93. package/dist/markdown/containers.js.map +1 -0
  94. package/dist/markdown/includes.d.ts +18 -0
  95. package/dist/markdown/includes.d.ts.map +1 -0
  96. package/dist/markdown/includes.js +9 -0
  97. package/dist/markdown/includes.js.map +1 -0
  98. package/dist/markdown/index.d.ts +8 -0
  99. package/dist/markdown/index.d.ts.map +1 -0
  100. package/dist/markdown/index.js +8 -0
  101. package/dist/markdown/index.js.map +1 -0
  102. package/dist/markdown/loader.d.ts +31 -0
  103. package/dist/markdown/loader.d.ts.map +1 -0
  104. package/dist/markdown/loader.js +325 -0
  105. package/dist/markdown/loader.js.map +1 -0
  106. package/dist/markdown/preserve-tags.d.ts +16 -0
  107. package/dist/markdown/preserve-tags.d.ts.map +1 -0
  108. package/dist/markdown/preserve-tags.js +233 -0
  109. package/dist/markdown/preserve-tags.js.map +1 -0
  110. package/dist/markdown/renderer.d.ts +28 -0
  111. package/dist/markdown/renderer.d.ts.map +1 -0
  112. package/dist/markdown/renderer.js +146 -0
  113. package/dist/markdown/renderer.js.map +1 -0
  114. package/dist/markdown/tag-validator.d.ts +64 -0
  115. package/dist/markdown/tag-validator.d.ts.map +1 -0
  116. package/dist/markdown/tag-validator.js +118 -0
  117. package/dist/markdown/tag-validator.js.map +1 -0
  118. package/dist/markdown/types.d.ts +44 -0
  119. package/dist/markdown/types.d.ts.map +1 -0
  120. package/dist/markdown/types.js +5 -0
  121. package/dist/markdown/types.js.map +1 -0
  122. package/dist/plugin/compat.d.ts +14 -0
  123. package/dist/plugin/compat.d.ts.map +1 -0
  124. package/dist/plugin/compat.js +78 -0
  125. package/dist/plugin/compat.js.map +1 -0
  126. package/dist/plugin/context.d.ts +38 -0
  127. package/dist/plugin/context.d.ts.map +1 -0
  128. package/dist/plugin/context.js +103 -0
  129. package/dist/plugin/context.js.map +1 -0
  130. package/dist/plugin/index.d.ts +6 -0
  131. package/dist/plugin/index.d.ts.map +1 -0
  132. package/dist/plugin/index.js +6 -0
  133. package/dist/plugin/index.js.map +1 -0
  134. package/dist/plugin/manager.d.ts +112 -0
  135. package/dist/plugin/manager.d.ts.map +1 -0
  136. package/dist/plugin/manager.js +385 -0
  137. package/dist/plugin/manager.js.map +1 -0
  138. package/dist/plugin/types.d.ts +182 -0
  139. package/dist/plugin/types.d.ts.map +1 -0
  140. package/dist/plugin/types.js +5 -0
  141. package/dist/plugin/types.js.map +1 -0
  142. package/dist/plugins/blog-index/index.d.ts +18 -0
  143. package/dist/plugins/blog-index/index.d.ts.map +1 -0
  144. package/dist/plugins/blog-index/index.js +158 -0
  145. package/dist/plugins/blog-index/index.js.map +1 -0
  146. package/dist/plugins/sidenav/index.d.ts +36 -0
  147. package/dist/plugins/sidenav/index.d.ts.map +1 -0
  148. package/dist/plugins/sidenav/index.js +86 -0
  149. package/dist/plugins/sidenav/index.js.map +1 -0
  150. package/dist/plugins/toc/index.d.ts +38 -0
  151. package/dist/plugins/toc/index.d.ts.map +1 -0
  152. package/dist/plugins/toc/index.js +79 -0
  153. package/dist/plugins/toc/index.js.map +1 -0
  154. package/dist/preview/index.d.ts +7 -0
  155. package/dist/preview/index.d.ts.map +1 -0
  156. package/dist/preview/index.js +25 -0
  157. package/dist/preview/index.js.map +1 -0
  158. package/dist/theme/default/build/generate-all.d.ts +9 -0
  159. package/dist/theme/default/build/generate-all.d.ts.map +1 -0
  160. package/dist/theme/default/build/generate-all.js +85 -0
  161. package/dist/theme/default/build/generate-all.js.map +1 -0
  162. package/dist/theme/default/build/generate-css.d.ts +19 -0
  163. package/dist/theme/default/build/generate-css.d.ts.map +1 -0
  164. package/dist/theme/default/build/generate-css.js +199 -0
  165. package/dist/theme/default/build/generate-css.js.map +1 -0
  166. package/dist/theme/default/build/index.d.ts +5 -0
  167. package/dist/theme/default/build/index.d.ts.map +1 -0
  168. package/dist/theme/default/build/index.js +5 -0
  169. package/dist/theme/default/build/index.js.map +1 -0
  170. package/dist/theme/default/design-systems/default.d.ts +12 -0
  171. package/dist/theme/default/design-systems/default.d.ts.map +1 -0
  172. package/dist/theme/default/design-systems/default.js +289 -0
  173. package/dist/theme/default/design-systems/default.js.map +1 -0
  174. package/dist/theme/default/design-systems/docusaurus.d.ts +12 -0
  175. package/dist/theme/default/design-systems/docusaurus.d.ts.map +1 -0
  176. package/dist/theme/default/design-systems/docusaurus.js +299 -0
  177. package/dist/theme/default/design-systems/docusaurus.js.map +1 -0
  178. package/dist/theme/default/design-systems/index.d.ts +50 -0
  179. package/dist/theme/default/design-systems/index.d.ts.map +1 -0
  180. package/dist/theme/default/design-systems/index.js +54 -0
  181. package/dist/theme/default/design-systems/index.js.map +1 -0
  182. package/dist/theme/default/design-systems/rspress.d.ts +12 -0
  183. package/dist/theme/default/design-systems/rspress.d.ts.map +1 -0
  184. package/dist/theme/default/design-systems/rspress.js +299 -0
  185. package/dist/theme/default/design-systems/rspress.js.map +1 -0
  186. package/dist/theme/default/design-systems/types.d.ts +238 -0
  187. package/dist/theme/default/design-systems/types.d.ts.map +1 -0
  188. package/dist/theme/default/design-systems/types.js +6 -0
  189. package/dist/theme/default/design-systems/types.js.map +1 -0
  190. package/dist/theme/default/design-systems/vitepress.d.ts +12 -0
  191. package/dist/theme/default/design-systems/vitepress.d.ts.map +1 -0
  192. package/dist/theme/default/design-systems/vitepress.js +299 -0
  193. package/dist/theme/default/design-systems/vitepress.js.map +1 -0
  194. package/dist/theme/default/index.d.ts +60 -0
  195. package/dist/theme/default/index.d.ts.map +1 -0
  196. package/dist/theme/default/index.js +44 -0
  197. package/dist/theme/default/index.js.map +1 -0
  198. package/dist/theme/default/theme.d.ts +14 -0
  199. package/dist/theme/default/theme.d.ts.map +1 -0
  200. package/dist/theme/default/theme.js +58 -0
  201. package/dist/theme/default/theme.js.map +1 -0
  202. package/dist/theme/index.d.ts +6 -0
  203. package/dist/theme/index.d.ts.map +1 -0
  204. package/dist/theme/index.js +6 -0
  205. package/dist/theme/index.js.map +1 -0
  206. package/dist/theme/loader.d.ts +21 -0
  207. package/dist/theme/loader.d.ts.map +1 -0
  208. package/dist/theme/loader.js +125 -0
  209. package/dist/theme/loader.js.map +1 -0
  210. package/dist/theme/types.d.ts +73 -0
  211. package/dist/theme/types.d.ts.map +1 -0
  212. package/dist/theme/types.js +5 -0
  213. package/dist/theme/types.js.map +1 -0
  214. package/dist/vite/index.d.ts +6 -0
  215. package/dist/vite/index.d.ts.map +1 -0
  216. package/dist/vite/index.js +6 -0
  217. package/dist/vite/index.js.map +1 -0
  218. package/dist/vite/markdownPlugin.d.ts +15 -0
  219. package/dist/vite/markdownPlugin.d.ts.map +1 -0
  220. package/dist/vite/markdownPlugin.js +111 -0
  221. package/dist/vite/markdownPlugin.js.map +1 -0
  222. package/dist/vite/plugin.d.ts +18 -0
  223. package/dist/vite/plugin.d.ts.map +1 -0
  224. package/dist/vite/plugin.js +94 -0
  225. package/dist/vite/plugin.js.map +1 -0
  226. package/marko.json +3 -0
  227. package/package.json +109 -0
  228. package/src/theme/default/build/generate-all.ts +99 -0
  229. package/src/theme/default/build/generate-css.ts +234 -0
  230. package/src/theme/default/build/index.ts +5 -0
  231. package/src/theme/default/components/doc-footer.marko +180 -0
  232. package/src/theme/default/components/footer.marko +32 -0
  233. package/src/theme/default/components/header.marko +49 -0
  234. package/src/theme/default/components/nav-bar.marko +191 -0
  235. package/src/theme/default/components/page-header.marko +20 -0
  236. package/src/theme/default/components/reading-progress.marko +36 -0
  237. package/src/theme/default/components/search.marko +239 -0
  238. package/src/theme/default/components/sidebar.marko +211 -0
  239. package/src/theme/default/components/site-footer.marko +211 -0
  240. package/src/theme/default/components/skip-link.marko +49 -0
  241. package/src/theme/default/components/theme/theme-aside-bottom.marko +1 -0
  242. package/src/theme/default/components/theme/theme-aside-top.marko +1 -0
  243. package/src/theme/default/components/theme/theme-body-bottom.marko +1 -0
  244. package/src/theme/default/components/theme/theme-body-top.marko +1 -0
  245. package/src/theme/default/components/theme/theme-doc-bottom.marko +1 -0
  246. package/src/theme/default/components/theme/theme-doc-footer-after.marko +1 -0
  247. package/src/theme/default/components/theme/theme-doc-footer-before.marko +1 -0
  248. package/src/theme/default/components/theme/theme-doc-top.marko +1 -0
  249. package/src/theme/default/components/theme/theme-head-bottom.marko +1 -0
  250. package/src/theme/default/components/theme/theme-head-top.marko +1 -0
  251. package/src/theme/default/components/theme/theme-home-features-after.marko +1 -0
  252. package/src/theme/default/components/theme/theme-home-hero-after.marko +1 -0
  253. package/src/theme/default/components/theme/theme-home-hero-before.marko +1 -0
  254. package/src/theme/default/components/theme/theme-navbar-center.marko +5 -0
  255. package/src/theme/default/components/theme/theme-navbar-end.marko +30 -0
  256. package/src/theme/default/components/theme/theme-navbar-start.marko +1 -0
  257. package/src/theme/default/components/theme/theme-page-bottom.marko +1 -0
  258. package/src/theme/default/components/theme/theme-page-top.marko +1 -0
  259. package/src/theme/default/components/theme/theme-sidebar-bottom.marko +1 -0
  260. package/src/theme/default/components/theme/theme-sidebar-top.marko +1 -0
  261. package/src/theme/default/components/theme/theme-toc-item.marko +1 -0
  262. package/src/theme/default/components/theme-toggle.marko +122 -0
  263. package/src/theme/default/components/toc.marko +140 -0
  264. package/src/theme/default/design-systems/default.ts +331 -0
  265. package/src/theme/default/design-systems/docusaurus.ts +341 -0
  266. package/src/theme/default/design-systems/index.ts +67 -0
  267. package/src/theme/default/design-systems/rspress.ts +341 -0
  268. package/src/theme/default/design-systems/types.ts +296 -0
  269. package/src/theme/default/design-systems/vitepress.ts +341 -0
  270. package/src/theme/default/index.ts +107 -0
  271. package/src/theme/default/layouts/blog.marko +65 -0
  272. package/src/theme/default/layouts/content-page.marko +41 -0
  273. package/src/theme/default/layouts/default.marko +209 -0
  274. package/src/theme/default/layouts/docs.marko +81 -0
  275. package/src/theme/default/layouts/home-page.marko +19 -0
  276. package/src/theme/default/layouts/page.marko +51 -0
  277. package/src/theme/default/public/theme-default.css +1081 -0
  278. package/src/theme/default/public/theme-docusaurus.css +1081 -0
  279. package/src/theme/default/public/theme-vitepress.css +1081 -0
  280. package/src/theme/default/public/theme.css +2 -0
  281. package/src/theme/default/routes/+layout.marko +57 -0
  282. package/src/theme/default/styles/main.css +249 -0
  283. package/src/theme/default/styles-base.css +757 -0
  284. package/src/theme/default/styles.css +899 -0
  285. package/src/theme/default/taglib.json +18 -0
  286. package/src/theme/default/tags/doc-footer.marko +180 -0
  287. package/src/theme/default/tags/footer.marko +32 -0
  288. package/src/theme/default/tags/header.marko +49 -0
  289. package/src/theme/default/tags/nav-bar.marko +191 -0
  290. package/src/theme/default/tags/page-header.marko +20 -0
  291. package/src/theme/default/tags/reading-progress.marko +36 -0
  292. package/src/theme/default/tags/search.marko +239 -0
  293. package/src/theme/default/tags/sidebar.marko +211 -0
  294. package/src/theme/default/tags/site-footer.marko +211 -0
  295. package/src/theme/default/tags/skip-link.marko +49 -0
  296. package/src/theme/default/tags/theme-aside-bottom.marko +1 -0
  297. package/src/theme/default/tags/theme-aside-top.marko +1 -0
  298. package/src/theme/default/tags/theme-body-bottom.marko +1 -0
  299. package/src/theme/default/tags/theme-body-top.marko +1 -0
  300. package/src/theme/default/tags/theme-doc-bottom.marko +1 -0
  301. package/src/theme/default/tags/theme-doc-footer-after.marko +1 -0
  302. package/src/theme/default/tags/theme-doc-footer-before.marko +1 -0
  303. package/src/theme/default/tags/theme-doc-top.marko +1 -0
  304. package/src/theme/default/tags/theme-head-bottom.marko +1 -0
  305. package/src/theme/default/tags/theme-head-top.marko +1 -0
  306. package/src/theme/default/tags/theme-home-features-after.marko +1 -0
  307. package/src/theme/default/tags/theme-home-hero-after.marko +1 -0
  308. package/src/theme/default/tags/theme-home-hero-before.marko +1 -0
  309. package/src/theme/default/tags/theme-navbar-center.marko +5 -0
  310. package/src/theme/default/tags/theme-navbar-end.marko +30 -0
  311. package/src/theme/default/tags/theme-navbar-start.marko +1 -0
  312. package/src/theme/default/tags/theme-page-bottom.marko +1 -0
  313. package/src/theme/default/tags/theme-page-top.marko +1 -0
  314. package/src/theme/default/tags/theme-sidebar-bottom.marko +1 -0
  315. package/src/theme/default/tags/theme-sidebar-top.marko +1 -0
  316. package/src/theme/default/tags/theme-toc-item.marko +1 -0
  317. package/src/theme/default/tags/theme-toggle.marko +122 -0
  318. package/src/theme/default/tags/toc.marko +140 -0
  319. package/src/theme/default/theme.ts +83 -0
  320. package/templates/blog-post.marko.template +13 -0
  321. package/templates/catch-all-handler.js.template +90 -0
  322. package/templates/catch-all-page.marko.template +69 -0
  323. package/templates/doc.marko.template +6 -0
  324. package/templates/example-tags/README.md +212 -0
  325. package/templates/example-tags/alert-box.marko +98 -0
  326. package/templates/example-tags/button-primary.marko +28 -0
  327. package/templates/example-tags/button-secondary.marko +28 -0
  328. package/templates/example-tags/button.marko +6 -0
  329. package/templates/example-tags/card-body.marko +8 -0
  330. package/templates/example-tags/card-footer.marko +7 -0
  331. package/templates/example-tags/card-header.marko +7 -0
  332. package/templates/example-tags/card.marko +20 -0
  333. package/templates/example-tags/icon.marko +149 -0
  334. package/templates/layout.marko.template +64 -0
  335. package/templates/page.marko.template +6 -0
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Request-time markdown renderer
3
+ * Lazy-loads MarkdownIt + Shiki on first use
4
+ * Used by route handlers to render markdown on demand
5
+ */
6
+ import matter from 'gray-matter';
7
+ import MarkdownIt from 'markdown-it';
8
+ import { getMarkdownIt } from './loader.js';
9
+ /**
10
+ * Cached MarkdownIt instance (lazy-loaded on first use)
11
+ */
12
+ let mdInstance = null;
13
+ let mdOptions;
14
+ /**
15
+ * Render markdown source to HTML at request time
16
+ *
17
+ * This function lazy-loads MarkdownIt + Shiki on first call,
18
+ * then reuses the instance for subsequent renders.
19
+ *
20
+ * @param source - Raw markdown source with frontmatter
21
+ * @param options - Markdown parsing options (only used on first call)
22
+ * @returns Processed markdown with frontmatter, HTML, and headers
23
+ */
24
+ export async function renderMarkdown(source, options) {
25
+ // Lazy init MarkdownIt (one-time cost)
26
+ if (!mdInstance) {
27
+ // Always enable markoTags for component support
28
+ const opts = {
29
+ ...options,
30
+ markoTags: {
31
+ enabled: true,
32
+ ...options?.markoTags
33
+ }
34
+ };
35
+ mdInstance = await getMarkdownIt(opts);
36
+ mdOptions = opts;
37
+ }
38
+ // Parse frontmatter
39
+ const { data: frontmatter, content: rawContent, excerpt } = matter(source, {
40
+ excerpt: true,
41
+ excerpt_separator: '<!-- more -->',
42
+ });
43
+ // Render markdown to HTML
44
+ const html = mdInstance.render(rawContent);
45
+ // Extract headers for TOC
46
+ const headers = extractHeaders(rawContent);
47
+ return {
48
+ frontmatter,
49
+ content: rawContent,
50
+ html,
51
+ excerpt,
52
+ headers: buildHeaderTree(headers),
53
+ };
54
+ }
55
+ /**
56
+ * Reset the cached MarkdownIt instance
57
+ * Useful for testing or when options change
58
+ */
59
+ export function resetRendererCache() {
60
+ mdInstance = null;
61
+ mdOptions = undefined;
62
+ }
63
+ /**
64
+ * Get the current MarkdownIt instance if initialized
65
+ */
66
+ export function getRendererInstance() {
67
+ return mdInstance;
68
+ }
69
+ /**
70
+ * Strip markdown formatting from text for cleaner TOC entries
71
+ */
72
+ function stripMarkdownFormatting(text) {
73
+ return text
74
+ .replace(/`([^`]+)`/g, '$1')
75
+ .replace(/\*\*\*\+([^*]+)\*\*\+/g, '$1')
76
+ .replace(/___+([^_]+)___+/g, '$1')
77
+ .replace(/\*\*([^*]+)\*\*/g, '$1')
78
+ .replace(/__([^_]+)__/g, '$1')
79
+ .replace(/\*([^*]+)\*/g, '$1')
80
+ .replace(/_([^_]+)_/g, '$1')
81
+ .replace(/\[([^\]]+)\]\([^)]+\)/g, '$1')
82
+ .replace(/\[([^\]]+)\]\[[^\]]+\]/g, '$1')
83
+ .trim();
84
+ }
85
+ /**
86
+ * Extract headers from markdown content
87
+ */
88
+ function extractHeaders(content) {
89
+ const headers = [];
90
+ const withoutCodeBlocks = content
91
+ .replace(/```[\s\S]*?```/g, '')
92
+ .replace(/~~~[\s\S]*?~~~/g, '')
93
+ .replace(/^(\t| {4}).+$/gm, '');
94
+ const headerRegex = /^(#{1,6})\s+(.+)$/gm;
95
+ let match;
96
+ while ((match = headerRegex.exec(withoutCodeBlocks)) !== null) {
97
+ const level = match[1].length;
98
+ const rawTitle = match[2].trim();
99
+ const title = stripMarkdownFormatting(rawTitle);
100
+ const slug = slugify(rawTitle);
101
+ headers.push({ level, title, slug });
102
+ }
103
+ return headers;
104
+ }
105
+ /**
106
+ * Build header tree from flat list
107
+ */
108
+ function buildHeaderTree(headers) {
109
+ const result = [];
110
+ const stack = [];
111
+ for (const header of headers) {
112
+ const node = {
113
+ level: header.level,
114
+ title: header.title,
115
+ slug: header.slug,
116
+ children: [],
117
+ };
118
+ while (stack.length > 0 && stack[stack.length - 1].level >= header.level) {
119
+ stack.pop();
120
+ }
121
+ if (stack.length === 0) {
122
+ result.push(node);
123
+ }
124
+ else {
125
+ stack[stack.length - 1].children.push(node);
126
+ }
127
+ stack.push(node);
128
+ }
129
+ return result;
130
+ }
131
+ /**
132
+ * Slugify text for URL-safe IDs
133
+ */
134
+ function slugify(text) {
135
+ return text
136
+ .trim()
137
+ .replace(/([a-z])([A-Z])/g, '$1-$2')
138
+ .replace(/([0-9])([a-zA-Z])/g, '$1-$2')
139
+ .replace(/([a-zA-Z])([0-9])/g, '$1-$2')
140
+ .toLowerCase()
141
+ .replace(/\s+/g, '-')
142
+ .replace(/[^\w\u00A0-\uFFFF\-]+/g, '')
143
+ .replace(/^-+|-+$/g, '')
144
+ .replace(/-+/g, '-');
145
+ }
146
+ //# sourceMappingURL=renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/markdown/renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Tag Validator for Marko components in markdown
3
+ *
4
+ * Tracks all detected Marko tags during the build process,
5
+ * scans the tags/ directory for available components,
6
+ * and validates that all detected tags have corresponding component files.
7
+ */
8
+ export interface DetectedTag {
9
+ /** Tag name (kebab-case, e.g., "alert-box") */
10
+ tagName: string;
11
+ /** File path where tag was used */
12
+ fileName: string;
13
+ /** Line number where tag was used */
14
+ lineNumber: number;
15
+ }
16
+ export interface ValidationResult {
17
+ /** True if all detected tags have corresponding component files */
18
+ success: boolean;
19
+ /** List of missing tags with their usage locations */
20
+ missingTags: DetectedTag[];
21
+ }
22
+ export declare class TagValidator {
23
+ private detectedTags;
24
+ private availableTags;
25
+ /**
26
+ * Add a detected tag for tracking
27
+ */
28
+ addDetectedTag(tagName: string, fileName: string, lineNumber: number): void;
29
+ /**
30
+ * Scan tags directory to find all available Marko components
31
+ */
32
+ loadAvailableTags(tagsDir: string): Promise<void>;
33
+ /**
34
+ * Get count of available tags
35
+ */
36
+ getAvailableTagsCount(): number;
37
+ /**
38
+ * Get list of available tags
39
+ */
40
+ getAvailableTags(): string[];
41
+ /**
42
+ * Get all detected tags (grouped by tag name)
43
+ */
44
+ getDetectedTags(): Map<string, DetectedTag[]>;
45
+ /**
46
+ * Validate that all detected tags exist in the tags directory
47
+ *
48
+ * @returns Validation result with success flag and list of missing tags
49
+ */
50
+ validate(): ValidationResult;
51
+ /**
52
+ * Clear state for new build
53
+ */
54
+ reset(): void;
55
+ }
56
+ /**
57
+ * Format validation error message
58
+ */
59
+ export declare function formatValidationError(missingTags: DetectedTag[]): string;
60
+ /**
61
+ * Create a global validator instance
62
+ */
63
+ export declare const globalTagValidator: TagValidator;
64
+ //# sourceMappingURL=tag-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag-validator.d.ts","sourceRoot":"","sources":["../../src/markdown/tag-validator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,MAAM,WAAW,WAAW;IAC1B,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAEhB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IAEjB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,mEAAmE;IACnE,OAAO,EAAE,OAAO,CAAC;IAEjB,sDAAsD;IACtD,WAAW,EAAE,WAAW,EAAE,CAAC;CAC5B;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,YAAY,CAAyC;IAC7D,OAAO,CAAC,aAAa,CAA0B;IAE/C;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAY3E;;OAEG;IACG,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBvD;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAI/B;;OAEG;IACH,gBAAgB,IAAI,MAAM,EAAE;IAI5B;;OAEG;IACH,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IAI7C;;;;OAIG;IACH,QAAQ,IAAI,gBAAgB;IAiB5B;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,MAAM,CAoBxE;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,cAAqB,CAAC"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Tag Validator for Marko components in markdown
3
+ *
4
+ * Tracks all detected Marko tags during the build process,
5
+ * scans the tags/ directory for available components,
6
+ * and validates that all detected tags have corresponding component files.
7
+ */
8
+ import { promises as fs } from 'node:fs';
9
+ import path from 'node:path';
10
+ export class TagValidator {
11
+ detectedTags = new Map();
12
+ availableTags = new Set();
13
+ /**
14
+ * Add a detected tag for tracking
15
+ */
16
+ addDetectedTag(tagName, fileName, lineNumber) {
17
+ const normalized = tagName.toLowerCase();
18
+ if (!this.detectedTags.has(normalized)) {
19
+ this.detectedTags.set(normalized, []);
20
+ }
21
+ this.detectedTags.get(normalized).push({
22
+ tagName: normalized,
23
+ fileName,
24
+ lineNumber,
25
+ });
26
+ }
27
+ /**
28
+ * Scan tags directory to find all available Marko components
29
+ */
30
+ async loadAvailableTags(tagsDir) {
31
+ try {
32
+ await fs.access(tagsDir);
33
+ }
34
+ catch {
35
+ // Directory doesn't exist, that's OK (no tags available)
36
+ console.warn(`Warning: tags directory not found at ${tagsDir}`);
37
+ return;
38
+ }
39
+ const files = await fs.readdir(tagsDir);
40
+ for (const file of files) {
41
+ if (file.endsWith('.marko')) {
42
+ const tagName = file.replace('.marko', '');
43
+ this.availableTags.add(tagName);
44
+ }
45
+ }
46
+ }
47
+ /**
48
+ * Get count of available tags
49
+ */
50
+ getAvailableTagsCount() {
51
+ return this.availableTags.size;
52
+ }
53
+ /**
54
+ * Get list of available tags
55
+ */
56
+ getAvailableTags() {
57
+ return Array.from(this.availableTags).sort();
58
+ }
59
+ /**
60
+ * Get all detected tags (grouped by tag name)
61
+ */
62
+ getDetectedTags() {
63
+ return this.detectedTags;
64
+ }
65
+ /**
66
+ * Validate that all detected tags exist in the tags directory
67
+ *
68
+ * @returns Validation result with success flag and list of missing tags
69
+ */
70
+ validate() {
71
+ const missingTags = [];
72
+ // Check each detected tag
73
+ for (const [tagName, occurrences] of this.detectedTags) {
74
+ if (!this.availableTags.has(tagName)) {
75
+ // Tag is missing - add all occurrences
76
+ missingTags.push(...occurrences);
77
+ }
78
+ }
79
+ return {
80
+ success: missingTags.length === 0,
81
+ missingTags,
82
+ };
83
+ }
84
+ /**
85
+ * Clear state for new build
86
+ */
87
+ reset() {
88
+ this.detectedTags.clear();
89
+ this.availableTags.clear();
90
+ }
91
+ }
92
+ /**
93
+ * Format validation error message
94
+ */
95
+ export function formatValidationError(missingTags) {
96
+ // Group by tag name
97
+ const uniqueTags = new Map();
98
+ for (const tag of missingTags) {
99
+ if (!uniqueTags.has(tag.tagName)) {
100
+ uniqueTags.set(tag.tagName, []);
101
+ }
102
+ uniqueTags.get(tag.tagName).push(tag);
103
+ }
104
+ let output = '\n❌ Marko tags not found:\n';
105
+ for (const [tagName, occurrences] of uniqueTags) {
106
+ output += `\n <${tagName}> used in:\n`;
107
+ for (const occ of occurrences) {
108
+ output += ` ${occ.fileName}:${occ.lineNumber}\n`;
109
+ }
110
+ }
111
+ output += '\nCreate missing files in tags/ directory or remove tags from markdown.\n';
112
+ return output;
113
+ }
114
+ /**
115
+ * Create a global validator instance
116
+ */
117
+ export const globalTagValidator = new TagValidator();
118
+ //# sourceMappingURL=tag-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag-validator.js","sourceRoot":"","sources":["../../src/markdown/tag-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Markdown processing types
3
+ */
4
+ export interface MarkdownOptions {
5
+ lineNumbers?: boolean;
6
+ theme?: {
7
+ light?: string;
8
+ dark?: string;
9
+ };
10
+ /**
11
+ * Marko tags support
12
+ */
13
+ markoTags?: {
14
+ /** Enable Marko tags in markdown (default: false) */
15
+ enabled?: boolean;
16
+ /** Directory containing Marko component files (default: 'tags/') */
17
+ tagsDir?: string;
18
+ };
19
+ }
20
+ export interface MarkdownProcessor {
21
+ process(src: string, filePath?: string): Promise<ProcessedMarkdown>;
22
+ }
23
+ export interface ProcessedMarkdown {
24
+ frontmatter: Record<string, unknown>;
25
+ content: string;
26
+ html: string;
27
+ headers: Header[];
28
+ excerpt?: string;
29
+ }
30
+ export interface Header {
31
+ level: number;
32
+ title: string;
33
+ slug: string;
34
+ children: Header[];
35
+ }
36
+ export interface MarkdownEnv {
37
+ path?: string;
38
+ relativePath?: string;
39
+ rootDir?: string;
40
+ filePath?: string;
41
+ /** Enable TOC extraction for this file (default: false) */
42
+ extractToc?: boolean;
43
+ }
44
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/markdown/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE;QACN,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IAEF;;OAEG;IACH,SAAS,CAAC,EAAE;QACV,qDAAqD;QACrD,OAAO,CAAC,EAAE,OAAO,CAAC;QAElB,oEAAoE;QACpE,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Markdown processing types
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/markdown/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Backward compatibility utilities for plugins
3
+ */
4
+ import type { MarkoPressPlugin } from './types.js';
5
+ /**
6
+ * Wrap legacy plugin to support new hooks
7
+ * Ensures old plugins work without modification
8
+ */
9
+ export declare function wrapLegacyPlugin(plugin: any): MarkoPressPlugin;
10
+ /**
11
+ * Check if plugin is using legacy signature
12
+ */
13
+ export declare function isLegacyPlugin(plugin: any): boolean;
14
+ //# sourceMappingURL=compat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compat.d.ts","sourceRoot":"","sources":["../../src/plugin/compat.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAInD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,GAAG,gBAAgB,CAqD9D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAmBnD"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Backward compatibility utilities for plugins
3
+ */
4
+ /**
5
+ * Wrap legacy plugin to support new hooks
6
+ * Ensures old plugins work without modification
7
+ */
8
+ export function wrapLegacyPlugin(plugin) {
9
+ // If plugin already has new hooks, return as-is
10
+ if (plugin.loadContent || plugin.allContentLoaded || plugin.postBuild) {
11
+ return plugin;
12
+ }
13
+ // Wrap old contentLoaded signature
14
+ const originalContentLoaded = plugin.contentLoaded;
15
+ if (originalContentLoaded) {
16
+ plugin.contentLoaded = function (ctx) {
17
+ // Old signature: contentLoaded(ctx: ContentContext)
18
+ // New signature: contentLoaded(ctx: { content, allContent, actions })
19
+ // Check if using old signature (has addPage, addPost but no allContent)
20
+ if (ctx.addPage && ctx.addPost && !ctx.allContent) {
21
+ // Old plugin - provide backward compatible context
22
+ return originalContentLoaded.call(this, ctx);
23
+ }
24
+ else {
25
+ // New signature - call as-is
26
+ return originalContentLoaded.call(this, ctx);
27
+ }
28
+ };
29
+ }
30
+ // Convert beforeBuild to allContentLoaded (for migration)
31
+ if (plugin.beforeBuild && !plugin.allContentLoaded) {
32
+ const originalBeforeBuild = plugin.beforeBuild;
33
+ plugin.allContentLoaded = function (ctx) {
34
+ // Map old beforeBuild context to new allContentLoaded context
35
+ const oldContext = {
36
+ content: ctx.allContent,
37
+ routes: ctx.routes,
38
+ config: ctx.config,
39
+ };
40
+ return originalBeforeBuild.call(this, oldContext);
41
+ };
42
+ }
43
+ // Convert afterBuild to postBuild (for migration)
44
+ if (plugin.afterBuild && !plugin.postBuild) {
45
+ const originalAfterBuild = plugin.afterBuild;
46
+ plugin.postBuild = function (ctx) {
47
+ // Map old afterBuild context to new postBuild context
48
+ const oldContext = {
49
+ outDir: ctx.outDir,
50
+ routes: ctx.routes,
51
+ content: ctx.allContent,
52
+ };
53
+ return originalAfterBuild.call(this, oldContext);
54
+ };
55
+ }
56
+ return plugin;
57
+ }
58
+ /**
59
+ * Check if plugin is using legacy signature
60
+ */
61
+ export function isLegacyPlugin(plugin) {
62
+ // Check if plugin has old contentLoaded signature but not new one
63
+ if (plugin.contentLoaded) {
64
+ // Can't determine without checking the function signature
65
+ // We'll detect at runtime
66
+ return false;
67
+ }
68
+ // Has beforeBuild but not allContentLoaded -> likely legacy
69
+ if (plugin.beforeBuild && !plugin.allContentLoaded) {
70
+ return true;
71
+ }
72
+ // Has afterBuild but not postBuild -> likely legacy
73
+ if (plugin.afterBuild && !plugin.postBuild) {
74
+ return true;
75
+ }
76
+ return false;
77
+ }
78
+ //# sourceMappingURL=compat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compat.js","sourceRoot":"","sources":["../../src/plugin/compat.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAW;IAC1C,gDAAgD;IAChD,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACtE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,mCAAmC;IACnC,MAAM,qBAAqB,GAAG,MAAM,CAAC,aAAa,CAAC;IACnD,IAAI,qBAAqB,EAAE,CAAC;QAC1B,MAAM,CAAC,aAAa,GAAG,UAAS,GAAQ;YACtC,oDAAoD;YACpD,sEAAsE;YAEtE,wEAAwE;YACxE,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;gBAClD,mDAAmD;gBACnD,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,6BAA6B;gBAC7B,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED,0DAA0D;IAC1D,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACnD,MAAM,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAAC;QAC/C,MAAM,CAAC,gBAAgB,GAAG,UAAS,GAAQ;YACzC,8DAA8D;YAC9D,MAAM,UAAU,GAAG;gBACjB,OAAO,EAAE,GAAG,CAAC,UAAU;gBACvB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,MAAM,EAAE,GAAG,CAAC,MAAM;aACnB,CAAC;YACF,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACpD,CAAC,CAAC;IACJ,CAAC;IAED,kDAAkD;IAClD,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAC3C,MAAM,kBAAkB,GAAG,MAAM,CAAC,UAAU,CAAC;QAC7C,MAAM,CAAC,SAAS,GAAG,UAAS,GAAQ;YAClC,sDAAsD;YACtD,MAAM,UAAU,GAAG;gBACjB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,OAAO,EAAE,GAAG,CAAC,UAAU;aACxB,CAAC;YACF,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACnD,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,MAA0B,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAW;IACxC,kEAAkE;IAClE,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,0DAA0D;QAC1D,0BAA0B;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4DAA4D;IAC5D,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oDAAoD;IACpD,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Plugin context implementations
3
+ * Provides isolated contexts for each plugin lifecycle stage
4
+ */
5
+ import type { PluginContent, AllContent, ContentActions, RouteConfig } from './types.js';
6
+ import type { ContentFile } from '../content/types.js';
7
+ /**
8
+ * AllContent implementation
9
+ * Aggregates content from all plugins
10
+ */
11
+ export declare class AllContentImpl implements AllContent {
12
+ private contentMap;
13
+ private pageCache?;
14
+ private docCache?;
15
+ private postCache?;
16
+ addPluginContent(pluginName: string, content: PluginContent | null): void;
17
+ private invalidateCache;
18
+ getPages(): ContentFile[];
19
+ getDocs(): ContentFile[];
20
+ getPosts(): ContentFile[];
21
+ getContent(type: string): unknown[];
22
+ clear(): void;
23
+ }
24
+ /**
25
+ * Content actions implementation
26
+ * Manages routes and data added by plugins
27
+ */
28
+ export declare class ContentActionsImpl implements ContentActions {
29
+ private routes;
30
+ private data;
31
+ addRoute(route: RouteConfig): void;
32
+ addData(key: string, value: unknown): void;
33
+ getRoute(path: string): RouteConfig | undefined;
34
+ getAllRoutes(): RouteConfig[];
35
+ getData(): Map<string, unknown>;
36
+ clear(): void;
37
+ }
38
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/plugin/context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,cAAc,EACd,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;GAGG;AACH,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,SAAS,CAAC,CAAgB;IAClC,OAAO,CAAC,QAAQ,CAAC,CAAgB;IACjC,OAAO,CAAC,SAAS,CAAC,CAAgB;IAElC,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI;IAOzE,OAAO,CAAC,eAAe;IAMvB,QAAQ,IAAI,WAAW,EAAE;IAazB,OAAO,IAAI,WAAW,EAAE;IAaxB,QAAQ,IAAI,WAAW,EAAE;IAazB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE;IAUnC,KAAK,IAAI,IAAI;CAId;AAED;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,IAAI,CAA8B;IAE1C,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAKlC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI1C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI/C,YAAY,IAAI,WAAW,EAAE;IAI7B,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAI/B,KAAK,IAAI,IAAI;CAId"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Plugin context implementations
3
+ * Provides isolated contexts for each plugin lifecycle stage
4
+ */
5
+ /**
6
+ * AllContent implementation
7
+ * Aggregates content from all plugins
8
+ */
9
+ export class AllContentImpl {
10
+ contentMap = new Map();
11
+ pageCache;
12
+ docCache;
13
+ postCache;
14
+ addPluginContent(pluginName, content) {
15
+ if (content) {
16
+ this.contentMap.set(pluginName, content);
17
+ this.invalidateCache();
18
+ }
19
+ }
20
+ invalidateCache() {
21
+ this.pageCache = undefined;
22
+ this.docCache = undefined;
23
+ this.postCache = undefined;
24
+ }
25
+ getPages() {
26
+ if (!this.pageCache) {
27
+ const pages = [];
28
+ for (const content of this.contentMap.values()) {
29
+ if (content.pages) {
30
+ pages.push(...content.pages);
31
+ }
32
+ }
33
+ this.pageCache = pages;
34
+ }
35
+ return this.pageCache;
36
+ }
37
+ getDocs() {
38
+ if (!this.docCache) {
39
+ const docs = [];
40
+ for (const content of this.contentMap.values()) {
41
+ if (content.docs) {
42
+ docs.push(...content.docs);
43
+ }
44
+ }
45
+ this.docCache = docs;
46
+ }
47
+ return this.docCache;
48
+ }
49
+ getPosts() {
50
+ if (!this.postCache) {
51
+ const posts = [];
52
+ for (const content of this.contentMap.values()) {
53
+ if (content.blog) {
54
+ posts.push(...content.blog);
55
+ }
56
+ }
57
+ this.postCache = posts;
58
+ }
59
+ return this.postCache;
60
+ }
61
+ getContent(type) {
62
+ const items = [];
63
+ for (const content of this.contentMap.values()) {
64
+ if (content[type]) {
65
+ items.push(...content[type]);
66
+ }
67
+ }
68
+ return items;
69
+ }
70
+ clear() {
71
+ this.contentMap.clear();
72
+ this.invalidateCache();
73
+ }
74
+ }
75
+ /**
76
+ * Content actions implementation
77
+ * Manages routes and data added by plugins
78
+ */
79
+ export class ContentActionsImpl {
80
+ routes = new Map();
81
+ data = new Map();
82
+ addRoute(route) {
83
+ const key = `${route.path}-${route.component || 'default'}`;
84
+ this.routes.set(key, route);
85
+ }
86
+ addData(key, value) {
87
+ this.data.set(key, value);
88
+ }
89
+ getRoute(path) {
90
+ return Array.from(this.routes.values()).find(r => r.path === path);
91
+ }
92
+ getAllRoutes() {
93
+ return Array.from(this.routes.values());
94
+ }
95
+ getData() {
96
+ return this.data;
97
+ }
98
+ clear() {
99
+ this.routes.clear();
100
+ this.data.clear();
101
+ }
102
+ }
103
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/plugin/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Plugin module exports
3
+ */
4
+ export * from './manager.js';
5
+ export * from './types.js';
6
+ //# sourceMappingURL=index.d.ts.map