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 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Plugin module exports
3
+ */
4
+ export * from './manager.js';
5
+ export * from './types.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Plugin manager for MarkoPress
3
+ * Manages plugin lifecycle, dependencies, and hook execution
4
+ */
5
+ import type { MarkoPressPlugin, PluginConfig, PluginContext, BuildContext, ContentManifest, RouteManifest, RouteConfig } from './types.js';
6
+ import type { ContentModule } from '../content/registry.js';
7
+ import type { ResolvedConfig } from '../config/index.js';
8
+ import MarkdownIt from 'markdown-it';
9
+ export interface PluginLoadResult {
10
+ plugin: MarkoPressPlugin;
11
+ config: PluginConfig;
12
+ error?: Error;
13
+ }
14
+ export declare class PluginManager {
15
+ private plugins;
16
+ private config;
17
+ private pluginLoadOrder;
18
+ private loadResults;
19
+ private allContent;
20
+ private contentActions;
21
+ constructor(config: ResolvedConfig);
22
+ /**
23
+ * Load plugins from configuration with dependency resolution
24
+ */
25
+ loadPlugins(pluginConfigs: PluginConfig[]): Promise<void>;
26
+ /**
27
+ * Resolve plugin dependencies using topological sort
28
+ */
29
+ private resolvePluginDependencies;
30
+ /**
31
+ * Get plugin name from config
32
+ */
33
+ private getPluginName;
34
+ /**
35
+ * Get plugin dependencies
36
+ */
37
+ private getPluginDependencies;
38
+ /**
39
+ * Resolve plugin name to import path
40
+ * Built-in plugins are resolved from markopress/plugins/*
41
+ * External plugins are resolved by package name
42
+ */
43
+ private resolvePluginPath;
44
+ /**
45
+ * Load plugin module without executing it
46
+ */
47
+ private loadPluginModule;
48
+ /**
49
+ * Load a single plugin with error isolation
50
+ */
51
+ private loadPlugin;
52
+ /**
53
+ * Get all loaded plugins
54
+ */
55
+ getPlugins(): MarkoPressPlugin[];
56
+ /**
57
+ * Get plugin load results (including errors)
58
+ */
59
+ getLoadResults(): PluginLoadResult[];
60
+ /**
61
+ * Execute markdown hooks on all plugins
62
+ */
63
+ execMarkdownHooks(md: MarkdownIt): Promise<void>;
64
+ /**
65
+ * Execute extendRoutes hooks on all plugins
66
+ */
67
+ execExtendRoutesHooks(routes: RouteManifest): Promise<RouteManifest>;
68
+ /**
69
+ * Execute loadContent hooks on all plugins
70
+ * Allows plugins to load content from external sources
71
+ */
72
+ execLoadContentHooks(): Promise<void>;
73
+ /**
74
+ * Execute enhanceModules hooks on all plugins
75
+ * Allows plugins to enhance content modules with metadata
76
+ */
77
+ execEnhanceModulesHooks(modules: ContentModule[]): Promise<void>;
78
+ /**
79
+ * Execute contentLoaded hooks with enhanced context
80
+ */
81
+ execContentLoadedHooks(manifest?: ContentManifest): Promise<void>;
82
+ /**
83
+ * Execute allContentLoaded hooks on all plugins
84
+ * Called after all plugins have processed their content
85
+ */
86
+ execAllContentLoadedHooks(routes: RouteManifest): Promise<void>;
87
+ /**
88
+ * Execute postBuild hooks on all plugins
89
+ */
90
+ execPostBuildHooks(outDir: string, routes: RouteManifest, assets: string[]): Promise<void>;
91
+ /**
92
+ * Get plugin-generated routes
93
+ */
94
+ getPluginRoutes(): RouteConfig[];
95
+ /**
96
+ * Get plugin data
97
+ */
98
+ getPluginData(): Map<string, unknown>;
99
+ /**
100
+ * Clear plugin state
101
+ */
102
+ clear(): void;
103
+ /**
104
+ * Create plugin context
105
+ */
106
+ createPluginContext(): PluginContext;
107
+ /**
108
+ * Create build context
109
+ */
110
+ createBuildContext(manifest: ContentManifest, routes: RouteManifest): BuildContext;
111
+ }
112
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/plugin/manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,eAAe,EACf,aAAa,EAEb,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,UAAU,MAAM,aAAa,CAAC;AAIrC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,cAAc,CAA4B;gBAEtC,MAAM,EAAE,cAAc;IAIlC;;OAEG;IACG,WAAW,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB/D;;OAEG;YACW,yBAAyB;IAmDvC;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;OAEG;YACW,qBAAqB;IAYnC;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;YACW,gBAAgB;IAiB9B;;OAEG;YACW,UAAU;IAuDxB;;OAEG;IACH,UAAU,IAAI,gBAAgB,EAAE;IAIhC;;OAEG;IACH,cAAc,IAAI,gBAAgB,EAAE;IAIpC;;OAEG;IACG,iBAAiB,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAetD;;OAEG;IACG,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAmB1E;;;OAGG;IACG,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB3C;;;OAGG;IACG,uBAAuB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBtE;;OAEG;IACG,sBAAsB,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBvE;;;OAGG;IACG,yBAAyB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBrE;;OAEG;IACG,kBAAkB,CACtB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,IAAI,CAAC;IAqBhB;;OAEG;IACH,eAAe,IAAI,WAAW,EAAE;IAIhC;;OAEG;IACH,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAIrC;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,mBAAmB,IAAI,aAAa;IAWpC;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,GAAG,YAAY;CASnF"}
@@ -0,0 +1,385 @@
1
+ /**
2
+ * Plugin manager for MarkoPress
3
+ * Manages plugin lifecycle, dependencies, and hook execution
4
+ */
5
+ import MarkdownIt from 'markdown-it';
6
+ import { AllContentImpl, ContentActionsImpl } from './context.js';
7
+ import { wrapLegacyPlugin } from './compat.js';
8
+ export class PluginManager {
9
+ plugins = [];
10
+ config;
11
+ pluginLoadOrder = [];
12
+ loadResults = [];
13
+ allContent = new AllContentImpl();
14
+ contentActions = new ContentActionsImpl();
15
+ constructor(config) {
16
+ this.config = config;
17
+ }
18
+ /**
19
+ * Load plugins from configuration with dependency resolution
20
+ */
21
+ async loadPlugins(pluginConfigs) {
22
+ // Resolve plugin dependencies
23
+ const orderedConfigs = await this.resolvePluginDependencies(pluginConfigs);
24
+ // Load plugins in dependency order
25
+ for (const pluginConfig of orderedConfigs) {
26
+ const result = await this.loadPlugin(pluginConfig);
27
+ if (result) {
28
+ // Wrap plugin for backward compatibility
29
+ const wrappedPlugin = wrapLegacyPlugin(result.plugin);
30
+ this.plugins.push(wrappedPlugin);
31
+ this.loadResults.push(result);
32
+ this.pluginLoadOrder.push(wrappedPlugin.name);
33
+ }
34
+ }
35
+ console.log(`✓ Loaded ${this.plugins.length} plugins: ${this.pluginLoadOrder.join(', ')}`);
36
+ }
37
+ /**
38
+ * Resolve plugin dependencies using topological sort
39
+ */
40
+ async resolvePluginDependencies(pluginConfigs) {
41
+ const visited = new Set();
42
+ const visiting = new Set();
43
+ const sorted = [];
44
+ const pluginMap = new Map();
45
+ // Map plugin names to configs
46
+ for (const config of pluginConfigs) {
47
+ const name = this.getPluginName(config);
48
+ pluginMap.set(name, config);
49
+ }
50
+ const visit = async (name) => {
51
+ if (visited.has(name)) {
52
+ return;
53
+ }
54
+ if (visiting.has(name)) {
55
+ throw new Error(`Circular dependency detected among plugins: ${name}`);
56
+ }
57
+ visiting.add(name);
58
+ const config = pluginMap.get(name);
59
+ if (!config) {
60
+ throw new Error(`Plugin not found: ${name}`);
61
+ }
62
+ // Get plugin dependencies
63
+ const deps = await this.getPluginDependencies(config);
64
+ for (const dep of deps) {
65
+ if (pluginMap.has(dep)) {
66
+ await visit(dep);
67
+ }
68
+ }
69
+ visiting.delete(name);
70
+ visited.add(name);
71
+ sorted.push(config);
72
+ };
73
+ // Visit all plugins
74
+ for (const name of pluginMap.keys()) {
75
+ await visit(name);
76
+ }
77
+ return sorted;
78
+ }
79
+ /**
80
+ * Get plugin name from config
81
+ */
82
+ getPluginName(config) {
83
+ if (typeof config === 'string') {
84
+ return config;
85
+ }
86
+ else if (Array.isArray(config)) {
87
+ return config[0];
88
+ }
89
+ else {
90
+ return config.name;
91
+ }
92
+ }
93
+ /**
94
+ * Get plugin dependencies
95
+ */
96
+ async getPluginDependencies(config) {
97
+ try {
98
+ const plugin = await this.loadPluginModule(config);
99
+ if (plugin && plugin.dependencies) {
100
+ return plugin.dependencies;
101
+ }
102
+ }
103
+ catch {
104
+ // Ignore errors during dependency checking
105
+ }
106
+ return [];
107
+ }
108
+ /**
109
+ * Resolve plugin name to import path
110
+ * Built-in plugins are resolved from markopress/plugins/*
111
+ * External plugins are resolved by package name
112
+ */
113
+ resolvePluginPath(name) {
114
+ // Built-in plugins - simple names like 'sidenav', 'toc', 'blog-index'
115
+ const builtInPlugins = ['sidenav', 'toc', 'blog-index'];
116
+ if (builtInPlugins.includes(name)) {
117
+ return `../plugins/${name}/index.js`;
118
+ }
119
+ return name;
120
+ }
121
+ /**
122
+ * Load plugin module without executing it
123
+ */
124
+ async loadPluginModule(config) {
125
+ try {
126
+ if (typeof config === 'string') {
127
+ const module = await import(this.resolvePluginPath(config));
128
+ return module.default;
129
+ }
130
+ else if (Array.isArray(config)) {
131
+ const [name] = config;
132
+ const module = await import(this.resolvePluginPath(name));
133
+ return module.default;
134
+ }
135
+ else {
136
+ return config;
137
+ }
138
+ }
139
+ catch {
140
+ return null;
141
+ }
142
+ }
143
+ /**
144
+ * Load a single plugin with error isolation
145
+ */
146
+ async loadPlugin(pluginConfig) {
147
+ const pluginName = this.getPluginName(pluginConfig);
148
+ try {
149
+ let plugin;
150
+ if (typeof pluginConfig === 'string') {
151
+ // Load from package name (resolve built-in or external)
152
+ const module = await import(this.resolvePluginPath(pluginConfig));
153
+ // Check if default export is a function (plugin factory)
154
+ plugin = typeof module.default === 'function'
155
+ ? await module.default()
156
+ : module.default;
157
+ }
158
+ else if (Array.isArray(pluginConfig)) {
159
+ // Load with options
160
+ const [name, options] = pluginConfig;
161
+ const module = await import(this.resolvePluginPath(name));
162
+ plugin = typeof module.default === 'function'
163
+ ? await module.default(options)
164
+ : module.default;
165
+ }
166
+ else {
167
+ // Inline plugin
168
+ plugin = pluginConfig;
169
+ }
170
+ if (!plugin || !plugin.name) {
171
+ throw new Error(`Invalid plugin: ${pluginName} - must have a 'name' property`);
172
+ }
173
+ // Execute config hook if present
174
+ if (plugin.config) {
175
+ const originalConfig = { ...this.config };
176
+ try {
177
+ this.config = await plugin.config(this.config);
178
+ }
179
+ catch (error) {
180
+ console.error(`Plugin ${plugin.name} config hook failed, using original config:`, error);
181
+ this.config = originalConfig;
182
+ }
183
+ }
184
+ return { plugin, config: pluginConfig };
185
+ }
186
+ catch (error) {
187
+ const errorMsg = error instanceof Error ? error.message : String(error);
188
+ console.error(`Failed to load plugin ${pluginName}: ${errorMsg}`);
189
+ return {
190
+ plugin: { name: pluginName },
191
+ config: pluginConfig,
192
+ error: error instanceof Error ? error : new Error(errorMsg),
193
+ };
194
+ }
195
+ }
196
+ /**
197
+ * Get all loaded plugins
198
+ */
199
+ getPlugins() {
200
+ return this.plugins;
201
+ }
202
+ /**
203
+ * Get plugin load results (including errors)
204
+ */
205
+ getLoadResults() {
206
+ return this.loadResults;
207
+ }
208
+ /**
209
+ * Execute markdown hooks on all plugins
210
+ */
211
+ async execMarkdownHooks(md) {
212
+ for (const plugin of this.plugins) {
213
+ if (plugin.extendMarkdown) {
214
+ try {
215
+ await plugin.extendMarkdown(md);
216
+ }
217
+ catch (error) {
218
+ console.error(`Plugin ${plugin.name} extendMarkdown hook failed:`, error);
219
+ }
220
+ }
221
+ }
222
+ }
223
+ /**
224
+ * Execute extendRoutes hooks on all plugins
225
+ */
226
+ async execExtendRoutesHooks(routes) {
227
+ let result = routes;
228
+ for (const plugin of this.plugins) {
229
+ if (plugin.extendRoutes) {
230
+ try {
231
+ result = await plugin.extendRoutes(result) || result;
232
+ }
233
+ catch (error) {
234
+ console.error(`Plugin ${plugin.name} extendRoutes hook failed:`, error);
235
+ }
236
+ }
237
+ }
238
+ return result;
239
+ }
240
+ /**
241
+ * Execute loadContent hooks on all plugins
242
+ * Allows plugins to load content from external sources
243
+ */
244
+ async execLoadContentHooks() {
245
+ for (const plugin of this.plugins) {
246
+ if (plugin.loadContent) {
247
+ try {
248
+ const content = await plugin.loadContent();
249
+ this.allContent.addPluginContent(plugin.name, content);
250
+ }
251
+ catch (error) {
252
+ console.error(`Plugin ${plugin.name} loadContent hook failed:`, error);
253
+ }
254
+ }
255
+ }
256
+ }
257
+ /**
258
+ * Execute enhanceModules hooks on all plugins
259
+ * Allows plugins to enhance content modules with metadata
260
+ */
261
+ async execEnhanceModulesHooks(modules) {
262
+ for (const plugin of this.plugins) {
263
+ if (plugin.enhanceModules) {
264
+ try {
265
+ // Filter modules based on plugin's modules declaration
266
+ let modulesToEnhance = modules;
267
+ if (plugin.modules && plugin.modules.length > 0) {
268
+ modulesToEnhance = modules.filter(m => plugin.modules.includes(m.id));
269
+ }
270
+ await plugin.enhanceModules(modulesToEnhance);
271
+ }
272
+ catch (error) {
273
+ console.error(`Plugin ${plugin.name} enhanceModules hook failed:`, error);
274
+ }
275
+ }
276
+ }
277
+ }
278
+ /**
279
+ * Execute contentLoaded hooks with enhanced context
280
+ */
281
+ async execContentLoadedHooks(manifest) {
282
+ // No need to merge manifest - plugins work directly with dynamic modules
283
+ for (const plugin of this.plugins) {
284
+ if (plugin.contentLoaded) {
285
+ try {
286
+ // Get plugin's own content
287
+ const pluginContent = this.allContent.getContent(plugin.name)[0] || {};
288
+ await plugin.contentLoaded({
289
+ content: pluginContent,
290
+ allContent: this.allContent,
291
+ actions: this.contentActions,
292
+ });
293
+ }
294
+ catch (error) {
295
+ console.error(`Plugin ${plugin.name} contentLoaded hook failed:`, error);
296
+ }
297
+ }
298
+ }
299
+ }
300
+ /**
301
+ * Execute allContentLoaded hooks on all plugins
302
+ * Called after all plugins have processed their content
303
+ */
304
+ async execAllContentLoadedHooks(routes) {
305
+ for (const plugin of this.plugins) {
306
+ if (plugin.allContentLoaded) {
307
+ try {
308
+ await plugin.allContentLoaded({
309
+ allContent: this.allContent,
310
+ routes,
311
+ actions: this.contentActions,
312
+ });
313
+ }
314
+ catch (error) {
315
+ console.error(`Plugin ${plugin.name} allContentLoaded hook failed:`, error);
316
+ }
317
+ }
318
+ }
319
+ }
320
+ /**
321
+ * Execute postBuild hooks on all plugins
322
+ */
323
+ async execPostBuildHooks(outDir, routes, assets) {
324
+ // Execute postBuild hooks
325
+ for (const plugin of this.plugins) {
326
+ if (plugin.postBuild) {
327
+ try {
328
+ await plugin.postBuild({
329
+ outDir,
330
+ routes,
331
+ assets,
332
+ allContent: this.allContent,
333
+ });
334
+ }
335
+ catch (error) {
336
+ console.error(`Plugin ${plugin.name} postBuild hook failed:`, error);
337
+ }
338
+ }
339
+ }
340
+ }
341
+ /**
342
+ * Get plugin-generated routes
343
+ */
344
+ getPluginRoutes() {
345
+ return this.contentActions.getAllRoutes();
346
+ }
347
+ /**
348
+ * Get plugin data
349
+ */
350
+ getPluginData() {
351
+ return this.contentActions.getData();
352
+ }
353
+ /**
354
+ * Clear plugin state
355
+ */
356
+ clear() {
357
+ this.allContent = new AllContentImpl();
358
+ this.contentActions = new ContentActionsImpl();
359
+ }
360
+ /**
361
+ * Create plugin context
362
+ */
363
+ createPluginContext() {
364
+ return {
365
+ config: this.config,
366
+ utils: {
367
+ log: (msg) => console.log(`[markopress] ${msg}`),
368
+ warn: (msg) => console.warn(`[markopress] ${msg}`),
369
+ error: (msg) => console.error(`[markopress] ${msg}`),
370
+ },
371
+ };
372
+ }
373
+ /**
374
+ * Create build context
375
+ */
376
+ createBuildContext(manifest, routes) {
377
+ const baseContext = this.createPluginContext();
378
+ return {
379
+ ...baseContext,
380
+ content: manifest,
381
+ routes,
382
+ };
383
+ }
384
+ }
385
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/plugin/manager.ts"],"names":[],"mappings":"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"}