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.
- package/bin/cli.js +16 -0
- package/dist/build/index.d.ts +83 -0
- package/dist/build/index.d.ts.map +1 -0
- package/dist/build/index.js +1553 -0
- package/dist/build/index.js.map +1 -0
- package/dist/build/manifest-generator.d.ts +34 -0
- package/dist/build/manifest-generator.d.ts.map +1 -0
- package/dist/build/manifest-generator.js +86 -0
- package/dist/build/manifest-generator.js.map +1 -0
- package/dist/build/security.test.d.ts +6 -0
- package/dist/build/security.test.d.ts.map +1 -0
- package/dist/build/security.test.js +88 -0
- package/dist/build/security.test.js.map +1 -0
- package/dist/build/types.d.ts +21 -0
- package/dist/build/types.d.ts.map +1 -0
- package/dist/build/types.js +5 -0
- package/dist/build/types.js.map +1 -0
- package/dist/build/vite-config.test.d.ts +2 -0
- package/dist/build/vite-config.test.d.ts.map +1 -0
- package/dist/build/vite-config.test.js +53 -0
- package/dist/build/vite-config.test.js.map +1 -0
- package/dist/build/vite-markdown-plugin.d.ts +13 -0
- package/dist/build/vite-markdown-plugin.d.ts.map +1 -0
- package/dist/build/vite-markdown-plugin.js +134 -0
- package/dist/build/vite-markdown-plugin.js.map +1 -0
- package/dist/build/vite-markdown-plugin.test.d.ts +2 -0
- package/dist/build/vite-markdown-plugin.test.d.ts.map +1 -0
- package/dist/build/vite-markdown-plugin.test.js +41 -0
- package/dist/build/vite-markdown-plugin.test.js.map +1 -0
- package/dist/cli/index.d.ts +6 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +75 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/app-root.d.ts +11 -0
- package/dist/config/app-root.d.ts.map +1 -0
- package/dist/config/app-root.js +24 -0
- package/dist/config/app-root.js.map +1 -0
- package/dist/config/app-root.test.d.ts +2 -0
- package/dist/config/app-root.test.d.ts.map +1 -0
- package/dist/config/app-root.test.js +71 -0
- package/dist/config/app-root.test.js.map +1 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +6 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +25 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +187 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/loader.test.d.ts +2 -0
- package/dist/config/loader.test.d.ts.map +1 -0
- package/dist/config/loader.test.js +24 -0
- package/dist/config/loader.test.js.map +1 -0
- package/dist/config/types.d.ts +149 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +5 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config/validation.d.ts +188 -0
- package/dist/config/validation.d.ts.map +1 -0
- package/dist/config/validation.js +139 -0
- package/dist/config/validation.js.map +1 -0
- package/dist/content/index.d.ts +6 -0
- package/dist/content/index.d.ts.map +1 -0
- package/dist/content/index.js +6 -0
- package/dist/content/index.js.map +1 -0
- package/dist/content/registry.d.ts +29 -0
- package/dist/content/registry.d.ts.map +1 -0
- package/dist/content/registry.js +45 -0
- package/dist/content/registry.js.map +1 -0
- package/dist/content/scanner.d.ts +9 -0
- package/dist/content/scanner.d.ts.map +1 -0
- package/dist/content/scanner.js +115 -0
- package/dist/content/scanner.js.map +1 -0
- package/dist/content/types.d.ts +41 -0
- package/dist/content/types.d.ts.map +1 -0
- package/dist/content/types.js +5 -0
- package/dist/content/types.js.map +1 -0
- package/dist/dev/index.d.ts +18 -0
- package/dist/dev/index.d.ts.map +1 -0
- package/dist/dev/index.js +93 -0
- package/dist/dev/index.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/markdown/code.d.ts +79 -0
- package/dist/markdown/code.d.ts.map +1 -0
- package/dist/markdown/code.js +305 -0
- package/dist/markdown/code.js.map +1 -0
- package/dist/markdown/containers.d.ts +17 -0
- package/dist/markdown/containers.d.ts.map +1 -0
- package/dist/markdown/containers.js +143 -0
- package/dist/markdown/containers.js.map +1 -0
- package/dist/markdown/includes.d.ts +18 -0
- package/dist/markdown/includes.d.ts.map +1 -0
- package/dist/markdown/includes.js +9 -0
- package/dist/markdown/includes.js.map +1 -0
- package/dist/markdown/index.d.ts +8 -0
- package/dist/markdown/index.d.ts.map +1 -0
- package/dist/markdown/index.js +8 -0
- package/dist/markdown/index.js.map +1 -0
- package/dist/markdown/loader.d.ts +31 -0
- package/dist/markdown/loader.d.ts.map +1 -0
- package/dist/markdown/loader.js +325 -0
- package/dist/markdown/loader.js.map +1 -0
- package/dist/markdown/preserve-tags.d.ts +16 -0
- package/dist/markdown/preserve-tags.d.ts.map +1 -0
- package/dist/markdown/preserve-tags.js +233 -0
- package/dist/markdown/preserve-tags.js.map +1 -0
- package/dist/markdown/renderer.d.ts +28 -0
- package/dist/markdown/renderer.d.ts.map +1 -0
- package/dist/markdown/renderer.js +146 -0
- package/dist/markdown/renderer.js.map +1 -0
- package/dist/markdown/tag-validator.d.ts +64 -0
- package/dist/markdown/tag-validator.d.ts.map +1 -0
- package/dist/markdown/tag-validator.js +118 -0
- package/dist/markdown/tag-validator.js.map +1 -0
- package/dist/markdown/types.d.ts +44 -0
- package/dist/markdown/types.d.ts.map +1 -0
- package/dist/markdown/types.js +5 -0
- package/dist/markdown/types.js.map +1 -0
- package/dist/plugin/compat.d.ts +14 -0
- package/dist/plugin/compat.d.ts.map +1 -0
- package/dist/plugin/compat.js +78 -0
- package/dist/plugin/compat.js.map +1 -0
- package/dist/plugin/context.d.ts +38 -0
- package/dist/plugin/context.d.ts.map +1 -0
- package/dist/plugin/context.js +103 -0
- package/dist/plugin/context.js.map +1 -0
- package/dist/plugin/index.d.ts +6 -0
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/plugin/index.js +6 -0
- package/dist/plugin/index.js.map +1 -0
- package/dist/plugin/manager.d.ts +112 -0
- package/dist/plugin/manager.d.ts.map +1 -0
- package/dist/plugin/manager.js +385 -0
- package/dist/plugin/manager.js.map +1 -0
- package/dist/plugin/types.d.ts +182 -0
- package/dist/plugin/types.d.ts.map +1 -0
- package/dist/plugin/types.js +5 -0
- package/dist/plugin/types.js.map +1 -0
- package/dist/plugins/blog-index/index.d.ts +18 -0
- package/dist/plugins/blog-index/index.d.ts.map +1 -0
- package/dist/plugins/blog-index/index.js +158 -0
- package/dist/plugins/blog-index/index.js.map +1 -0
- package/dist/plugins/sidenav/index.d.ts +36 -0
- package/dist/plugins/sidenav/index.d.ts.map +1 -0
- package/dist/plugins/sidenav/index.js +86 -0
- package/dist/plugins/sidenav/index.js.map +1 -0
- package/dist/plugins/toc/index.d.ts +38 -0
- package/dist/plugins/toc/index.d.ts.map +1 -0
- package/dist/plugins/toc/index.js +79 -0
- package/dist/plugins/toc/index.js.map +1 -0
- package/dist/preview/index.d.ts +7 -0
- package/dist/preview/index.d.ts.map +1 -0
- package/dist/preview/index.js +25 -0
- package/dist/preview/index.js.map +1 -0
- package/dist/theme/default/build/generate-all.d.ts +9 -0
- package/dist/theme/default/build/generate-all.d.ts.map +1 -0
- package/dist/theme/default/build/generate-all.js +85 -0
- package/dist/theme/default/build/generate-all.js.map +1 -0
- package/dist/theme/default/build/generate-css.d.ts +19 -0
- package/dist/theme/default/build/generate-css.d.ts.map +1 -0
- package/dist/theme/default/build/generate-css.js +199 -0
- package/dist/theme/default/build/generate-css.js.map +1 -0
- package/dist/theme/default/build/index.d.ts +5 -0
- package/dist/theme/default/build/index.d.ts.map +1 -0
- package/dist/theme/default/build/index.js +5 -0
- package/dist/theme/default/build/index.js.map +1 -0
- package/dist/theme/default/design-systems/default.d.ts +12 -0
- package/dist/theme/default/design-systems/default.d.ts.map +1 -0
- package/dist/theme/default/design-systems/default.js +289 -0
- package/dist/theme/default/design-systems/default.js.map +1 -0
- package/dist/theme/default/design-systems/docusaurus.d.ts +12 -0
- package/dist/theme/default/design-systems/docusaurus.d.ts.map +1 -0
- package/dist/theme/default/design-systems/docusaurus.js +299 -0
- package/dist/theme/default/design-systems/docusaurus.js.map +1 -0
- package/dist/theme/default/design-systems/index.d.ts +50 -0
- package/dist/theme/default/design-systems/index.d.ts.map +1 -0
- package/dist/theme/default/design-systems/index.js +54 -0
- package/dist/theme/default/design-systems/index.js.map +1 -0
- package/dist/theme/default/design-systems/rspress.d.ts +12 -0
- package/dist/theme/default/design-systems/rspress.d.ts.map +1 -0
- package/dist/theme/default/design-systems/rspress.js +299 -0
- package/dist/theme/default/design-systems/rspress.js.map +1 -0
- package/dist/theme/default/design-systems/types.d.ts +238 -0
- package/dist/theme/default/design-systems/types.d.ts.map +1 -0
- package/dist/theme/default/design-systems/types.js +6 -0
- package/dist/theme/default/design-systems/types.js.map +1 -0
- package/dist/theme/default/design-systems/vitepress.d.ts +12 -0
- package/dist/theme/default/design-systems/vitepress.d.ts.map +1 -0
- package/dist/theme/default/design-systems/vitepress.js +299 -0
- package/dist/theme/default/design-systems/vitepress.js.map +1 -0
- package/dist/theme/default/index.d.ts +60 -0
- package/dist/theme/default/index.d.ts.map +1 -0
- package/dist/theme/default/index.js +44 -0
- package/dist/theme/default/index.js.map +1 -0
- package/dist/theme/default/theme.d.ts +14 -0
- package/dist/theme/default/theme.d.ts.map +1 -0
- package/dist/theme/default/theme.js +58 -0
- package/dist/theme/default/theme.js.map +1 -0
- package/dist/theme/index.d.ts +6 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +6 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/loader.d.ts +21 -0
- package/dist/theme/loader.d.ts.map +1 -0
- package/dist/theme/loader.js +125 -0
- package/dist/theme/loader.js.map +1 -0
- package/dist/theme/types.d.ts +73 -0
- package/dist/theme/types.d.ts.map +1 -0
- package/dist/theme/types.js +5 -0
- package/dist/theme/types.js.map +1 -0
- package/dist/vite/index.d.ts +6 -0
- package/dist/vite/index.d.ts.map +1 -0
- package/dist/vite/index.js +6 -0
- package/dist/vite/index.js.map +1 -0
- package/dist/vite/markdownPlugin.d.ts +15 -0
- package/dist/vite/markdownPlugin.d.ts.map +1 -0
- package/dist/vite/markdownPlugin.js +111 -0
- package/dist/vite/markdownPlugin.js.map +1 -0
- package/dist/vite/plugin.d.ts +18 -0
- package/dist/vite/plugin.d.ts.map +1 -0
- package/dist/vite/plugin.js +94 -0
- package/dist/vite/plugin.js.map +1 -0
- package/marko.json +3 -0
- package/package.json +109 -0
- package/src/theme/default/build/generate-all.ts +99 -0
- package/src/theme/default/build/generate-css.ts +234 -0
- package/src/theme/default/build/index.ts +5 -0
- package/src/theme/default/components/doc-footer.marko +180 -0
- package/src/theme/default/components/footer.marko +32 -0
- package/src/theme/default/components/header.marko +49 -0
- package/src/theme/default/components/nav-bar.marko +191 -0
- package/src/theme/default/components/page-header.marko +20 -0
- package/src/theme/default/components/reading-progress.marko +36 -0
- package/src/theme/default/components/search.marko +239 -0
- package/src/theme/default/components/sidebar.marko +211 -0
- package/src/theme/default/components/site-footer.marko +211 -0
- package/src/theme/default/components/skip-link.marko +49 -0
- package/src/theme/default/components/theme/theme-aside-bottom.marko +1 -0
- package/src/theme/default/components/theme/theme-aside-top.marko +1 -0
- package/src/theme/default/components/theme/theme-body-bottom.marko +1 -0
- package/src/theme/default/components/theme/theme-body-top.marko +1 -0
- package/src/theme/default/components/theme/theme-doc-bottom.marko +1 -0
- package/src/theme/default/components/theme/theme-doc-footer-after.marko +1 -0
- package/src/theme/default/components/theme/theme-doc-footer-before.marko +1 -0
- package/src/theme/default/components/theme/theme-doc-top.marko +1 -0
- package/src/theme/default/components/theme/theme-head-bottom.marko +1 -0
- package/src/theme/default/components/theme/theme-head-top.marko +1 -0
- package/src/theme/default/components/theme/theme-home-features-after.marko +1 -0
- package/src/theme/default/components/theme/theme-home-hero-after.marko +1 -0
- package/src/theme/default/components/theme/theme-home-hero-before.marko +1 -0
- package/src/theme/default/components/theme/theme-navbar-center.marko +5 -0
- package/src/theme/default/components/theme/theme-navbar-end.marko +30 -0
- package/src/theme/default/components/theme/theme-navbar-start.marko +1 -0
- package/src/theme/default/components/theme/theme-page-bottom.marko +1 -0
- package/src/theme/default/components/theme/theme-page-top.marko +1 -0
- package/src/theme/default/components/theme/theme-sidebar-bottom.marko +1 -0
- package/src/theme/default/components/theme/theme-sidebar-top.marko +1 -0
- package/src/theme/default/components/theme/theme-toc-item.marko +1 -0
- package/src/theme/default/components/theme-toggle.marko +122 -0
- package/src/theme/default/components/toc.marko +140 -0
- package/src/theme/default/design-systems/default.ts +331 -0
- package/src/theme/default/design-systems/docusaurus.ts +341 -0
- package/src/theme/default/design-systems/index.ts +67 -0
- package/src/theme/default/design-systems/rspress.ts +341 -0
- package/src/theme/default/design-systems/types.ts +296 -0
- package/src/theme/default/design-systems/vitepress.ts +341 -0
- package/src/theme/default/index.ts +107 -0
- package/src/theme/default/layouts/blog.marko +65 -0
- package/src/theme/default/layouts/content-page.marko +41 -0
- package/src/theme/default/layouts/default.marko +209 -0
- package/src/theme/default/layouts/docs.marko +81 -0
- package/src/theme/default/layouts/home-page.marko +19 -0
- package/src/theme/default/layouts/page.marko +51 -0
- package/src/theme/default/public/theme-default.css +1081 -0
- package/src/theme/default/public/theme-docusaurus.css +1081 -0
- package/src/theme/default/public/theme-vitepress.css +1081 -0
- package/src/theme/default/public/theme.css +2 -0
- package/src/theme/default/routes/+layout.marko +57 -0
- package/src/theme/default/styles/main.css +249 -0
- package/src/theme/default/styles-base.css +757 -0
- package/src/theme/default/styles.css +899 -0
- package/src/theme/default/taglib.json +18 -0
- package/src/theme/default/tags/doc-footer.marko +180 -0
- package/src/theme/default/tags/footer.marko +32 -0
- package/src/theme/default/tags/header.marko +49 -0
- package/src/theme/default/tags/nav-bar.marko +191 -0
- package/src/theme/default/tags/page-header.marko +20 -0
- package/src/theme/default/tags/reading-progress.marko +36 -0
- package/src/theme/default/tags/search.marko +239 -0
- package/src/theme/default/tags/sidebar.marko +211 -0
- package/src/theme/default/tags/site-footer.marko +211 -0
- package/src/theme/default/tags/skip-link.marko +49 -0
- package/src/theme/default/tags/theme-aside-bottom.marko +1 -0
- package/src/theme/default/tags/theme-aside-top.marko +1 -0
- package/src/theme/default/tags/theme-body-bottom.marko +1 -0
- package/src/theme/default/tags/theme-body-top.marko +1 -0
- package/src/theme/default/tags/theme-doc-bottom.marko +1 -0
- package/src/theme/default/tags/theme-doc-footer-after.marko +1 -0
- package/src/theme/default/tags/theme-doc-footer-before.marko +1 -0
- package/src/theme/default/tags/theme-doc-top.marko +1 -0
- package/src/theme/default/tags/theme-head-bottom.marko +1 -0
- package/src/theme/default/tags/theme-head-top.marko +1 -0
- package/src/theme/default/tags/theme-home-features-after.marko +1 -0
- package/src/theme/default/tags/theme-home-hero-after.marko +1 -0
- package/src/theme/default/tags/theme-home-hero-before.marko +1 -0
- package/src/theme/default/tags/theme-navbar-center.marko +5 -0
- package/src/theme/default/tags/theme-navbar-end.marko +30 -0
- package/src/theme/default/tags/theme-navbar-start.marko +1 -0
- package/src/theme/default/tags/theme-page-bottom.marko +1 -0
- package/src/theme/default/tags/theme-page-top.marko +1 -0
- package/src/theme/default/tags/theme-sidebar-bottom.marko +1 -0
- package/src/theme/default/tags/theme-sidebar-top.marko +1 -0
- package/src/theme/default/tags/theme-toc-item.marko +1 -0
- package/src/theme/default/tags/theme-toggle.marko +122 -0
- package/src/theme/default/tags/toc.marko +140 -0
- package/src/theme/default/theme.ts +83 -0
- package/templates/blog-post.marko.template +13 -0
- package/templates/catch-all-handler.js.template +90 -0
- package/templates/catch-all-page.marko.template +69 -0
- package/templates/doc.marko.template +6 -0
- package/templates/example-tags/README.md +212 -0
- package/templates/example-tags/alert-box.marko +98 -0
- package/templates/example-tags/button-primary.marko +28 -0
- package/templates/example-tags/button-secondary.marko +28 -0
- package/templates/example-tags/button.marko +6 -0
- package/templates/example-tags/card-body.marko +8 -0
- package/templates/example-tags/card-footer.marko +7 -0
- package/templates/example-tags/card-header.marko +7 -0
- package/templates/example-tags/card.marko +20 -0
- package/templates/example-tags/icon.marko +149 -0
- package/templates/layout.marko.template +64 -0
- 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 @@
|
|
|
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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"}
|