mordoc 0.1.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/README.md +240 -0
- package/bin/cli.js +81 -0
- package/dist/build/Builder.d.ts +91 -0
- package/dist/build/Builder.d.ts.map +1 -0
- package/dist/build/Builder.js +391 -0
- package/dist/build/Builder.js.map +1 -0
- package/dist/build/ClientBundler.d.ts +36 -0
- package/dist/build/ClientBundler.d.ts.map +1 -0
- package/dist/build/ClientBundler.js +132 -0
- package/dist/build/ClientBundler.js.map +1 -0
- package/dist/build/HtmlGenerator.d.ts +46 -0
- package/dist/build/HtmlGenerator.d.ts.map +1 -0
- package/dist/build/HtmlGenerator.js +200 -0
- package/dist/build/HtmlGenerator.js.map +1 -0
- package/dist/build/SearchIndexer.d.ts +31 -0
- package/dist/build/SearchIndexer.d.ts.map +1 -0
- package/dist/build/SearchIndexer.js +116 -0
- package/dist/build/SearchIndexer.js.map +1 -0
- package/dist/cli/build.d.ts +20 -0
- package/dist/cli/build.d.ts.map +1 -0
- package/dist/cli/build.js +111 -0
- package/dist/cli/build.js.map +1 -0
- package/dist/cli/create-app.d.ts +14 -0
- package/dist/cli/create-app.d.ts.map +1 -0
- package/dist/cli/create-app.js +216 -0
- package/dist/cli/create-app.js.map +1 -0
- package/dist/cli/dev.d.ts +20 -0
- package/dist/cli/dev.d.ts.map +1 -0
- package/dist/cli/dev.js +169 -0
- package/dist/cli/dev.js.map +1 -0
- package/dist/client/App.d.ts +17 -0
- package/dist/client/App.d.ts.map +1 -0
- package/dist/client/App.js +94 -0
- package/dist/client/App.js.map +1 -0
- package/dist/client/contexts/ConfigContext.d.ts +22 -0
- package/dist/client/contexts/ConfigContext.d.ts.map +1 -0
- package/dist/client/contexts/ConfigContext.js +27 -0
- package/dist/client/contexts/ConfigContext.js.map +1 -0
- package/dist/client/contexts/ContentContext.d.ts +31 -0
- package/dist/client/contexts/ContentContext.d.ts.map +1 -0
- package/dist/client/contexts/ContentContext.js +46 -0
- package/dist/client/contexts/ContentContext.js.map +1 -0
- package/dist/client/contexts/SearchContext.d.ts +38 -0
- package/dist/client/contexts/SearchContext.d.ts.map +1 -0
- package/dist/client/contexts/SearchContext.js +207 -0
- package/dist/client/contexts/SearchContext.js.map +1 -0
- package/dist/client/contexts/ThemeContext.d.ts +23 -0
- package/dist/client/contexts/ThemeContext.d.ts.map +1 -0
- package/dist/client/contexts/ThemeContext.js +62 -0
- package/dist/client/contexts/ThemeContext.js.map +1 -0
- package/dist/client/hooks/useContent.d.ts +12 -0
- package/dist/client/hooks/useContent.d.ts.map +1 -0
- package/dist/client/hooks/useContent.js +74 -0
- package/dist/client/hooks/useContent.js.map +1 -0
- package/dist/client/hooks/useNavigation.d.ts +15 -0
- package/dist/client/hooks/useNavigation.d.ts.map +1 -0
- package/dist/client/hooks/useNavigation.js +101 -0
- package/dist/client/hooks/useNavigation.js.map +1 -0
- package/dist/client/hooks/useSearch.d.ts +22 -0
- package/dist/client/hooks/useSearch.d.ts.map +1 -0
- package/dist/client/hooks/useSearch.js +64 -0
- package/dist/client/hooks/useSearch.js.map +1 -0
- package/dist/client/main.d.ts +5 -0
- package/dist/client/main.d.ts.map +1 -0
- package/dist/client/main.js +66 -0
- package/dist/client/main.js.map +1 -0
- package/dist/components/Callout.d.ts +9 -0
- package/dist/components/Callout.d.ts.map +1 -0
- package/dist/components/Callout.js +24 -0
- package/dist/components/Callout.js.map +1 -0
- package/dist/components/Card.d.ts +10 -0
- package/dist/components/Card.d.ts.map +1 -0
- package/dist/components/Card.js +15 -0
- package/dist/components/Card.js.map +1 -0
- package/dist/components/CardGrid.d.ts +8 -0
- package/dist/components/CardGrid.d.ts.map +1 -0
- package/dist/components/CardGrid.js +9 -0
- package/dist/components/CardGrid.js.map +1 -0
- package/dist/components/CodeBlock.d.ts +24 -0
- package/dist/components/CodeBlock.d.ts.map +1 -0
- package/dist/components/CodeBlock.js +76 -0
- package/dist/components/CodeBlock.js.map +1 -0
- package/dist/components/ContentPage.d.ts +9 -0
- package/dist/components/ContentPage.d.ts.map +1 -0
- package/dist/components/ContentPage.js +36 -0
- package/dist/components/ContentPage.js.map +1 -0
- package/dist/components/Header.d.ts +14 -0
- package/dist/components/Header.d.ts.map +1 -0
- package/dist/components/Header.js +30 -0
- package/dist/components/Header.js.map +1 -0
- package/dist/components/Heading.d.ts +16 -0
- package/dist/components/Heading.d.ts.map +1 -0
- package/dist/components/Heading.js +31 -0
- package/dist/components/Heading.js.map +1 -0
- package/dist/components/Image.d.ts +8 -0
- package/dist/components/Image.d.ts.map +1 -0
- package/dist/components/Image.js +24 -0
- package/dist/components/Image.js.map +1 -0
- package/dist/components/Layout.d.ts +14 -0
- package/dist/components/Layout.d.ts.map +1 -0
- package/dist/components/Layout.js +32 -0
- package/dist/components/Layout.js.map +1 -0
- package/dist/components/MarkdocRenderer.d.ts +15 -0
- package/dist/components/MarkdocRenderer.d.ts.map +1 -0
- package/dist/components/MarkdocRenderer.js +73 -0
- package/dist/components/MarkdocRenderer.js.map +1 -0
- package/dist/components/MobileMenu.d.ts +14 -0
- package/dist/components/MobileMenu.d.ts.map +1 -0
- package/dist/components/MobileMenu.js +45 -0
- package/dist/components/MobileMenu.js.map +1 -0
- package/dist/components/PageNavigation.d.ts +9 -0
- package/dist/components/PageNavigation.d.ts.map +1 -0
- package/dist/components/PageNavigation.js +23 -0
- package/dist/components/PageNavigation.js.map +1 -0
- package/dist/components/SearchModal.d.ts +9 -0
- package/dist/components/SearchModal.d.ts.map +1 -0
- package/dist/components/SearchModal.js +74 -0
- package/dist/components/SearchModal.js.map +1 -0
- package/dist/components/SideNav.d.ts +9 -0
- package/dist/components/SideNav.d.ts.map +1 -0
- package/dist/components/SideNav.js +66 -0
- package/dist/components/SideNav.js.map +1 -0
- package/dist/components/TableOfContents.d.ts +10 -0
- package/dist/components/TableOfContents.d.ts.map +1 -0
- package/dist/components/TableOfContents.js +151 -0
- package/dist/components/TableOfContents.js.map +1 -0
- package/dist/config/ConfigLoader.d.ts +50 -0
- package/dist/config/ConfigLoader.d.ts.map +1 -0
- package/dist/config/ConfigLoader.js +214 -0
- package/dist/config/ConfigLoader.js.map +1 -0
- package/dist/config/StyleCompiler.d.ts +17 -0
- package/dist/config/StyleCompiler.d.ts.map +1 -0
- package/dist/config/StyleCompiler.js +116 -0
- package/dist/config/StyleCompiler.js.map +1 -0
- package/dist/config/ThemeGenerator.d.ts +14 -0
- package/dist/config/ThemeGenerator.d.ts.map +1 -0
- package/dist/config/ThemeGenerator.js +129 -0
- package/dist/config/ThemeGenerator.js.map +1 -0
- package/dist/content/ContentLoader.d.ts +70 -0
- package/dist/content/ContentLoader.d.ts.map +1 -0
- package/dist/content/ContentLoader.js +146 -0
- package/dist/content/ContentLoader.js.map +1 -0
- package/dist/content/ContentProcessor.d.ts +84 -0
- package/dist/content/ContentProcessor.d.ts.map +1 -0
- package/dist/content/ContentProcessor.js +380 -0
- package/dist/content/ContentProcessor.js.map +1 -0
- package/dist/content/RouteManager.d.ts +69 -0
- package/dist/content/RouteManager.d.ts.map +1 -0
- package/dist/content/RouteManager.js +143 -0
- package/dist/content/RouteManager.js.map +1 -0
- package/dist/styles/components/callout.d.ts +11 -0
- package/dist/styles/components/callout.d.ts.map +1 -0
- package/dist/styles/components/callout.js +83 -0
- package/dist/styles/components/callout.js.map +1 -0
- package/dist/styles/components/card.d.ts +11 -0
- package/dist/styles/components/card.d.ts.map +1 -0
- package/dist/styles/components/card.js +179 -0
- package/dist/styles/components/card.js.map +1 -0
- package/dist/styles/components/codeblock.d.ts +11 -0
- package/dist/styles/components/codeblock.d.ts.map +1 -0
- package/dist/styles/components/codeblock.js +249 -0
- package/dist/styles/components/codeblock.js.map +1 -0
- package/dist/styles/components/content.d.ts +11 -0
- package/dist/styles/components/content.d.ts.map +1 -0
- package/dist/styles/components/content.js +198 -0
- package/dist/styles/components/content.js.map +1 -0
- package/dist/styles/components/fonts.d.ts +11 -0
- package/dist/styles/components/fonts.d.ts.map +1 -0
- package/dist/styles/components/fonts.js +34 -0
- package/dist/styles/components/fonts.js.map +1 -0
- package/dist/styles/components/header.d.ts +11 -0
- package/dist/styles/components/header.d.ts.map +1 -0
- package/dist/styles/components/header.js +293 -0
- package/dist/styles/components/header.js.map +1 -0
- package/dist/styles/components/heading.d.ts +11 -0
- package/dist/styles/components/heading.d.ts.map +1 -0
- package/dist/styles/components/heading.js +115 -0
- package/dist/styles/components/heading.js.map +1 -0
- package/dist/styles/components/layout.d.ts +11 -0
- package/dist/styles/components/layout.d.ts.map +1 -0
- package/dist/styles/components/layout.js +79 -0
- package/dist/styles/components/layout.js.map +1 -0
- package/dist/styles/components/mobilemenu.d.ts +11 -0
- package/dist/styles/components/mobilemenu.d.ts.map +1 -0
- package/dist/styles/components/mobilemenu.js +112 -0
- package/dist/styles/components/mobilemenu.js.map +1 -0
- package/dist/styles/components/reset.d.ts +11 -0
- package/dist/styles/components/reset.d.ts.map +1 -0
- package/dist/styles/components/reset.js +131 -0
- package/dist/styles/components/reset.js.map +1 -0
- package/dist/styles/components/searchmodal.d.ts +11 -0
- package/dist/styles/components/searchmodal.d.ts.map +1 -0
- package/dist/styles/components/searchmodal.js +333 -0
- package/dist/styles/components/searchmodal.js.map +1 -0
- package/dist/styles/components/sidenav.d.ts +11 -0
- package/dist/styles/components/sidenav.d.ts.map +1 -0
- package/dist/styles/components/sidenav.js +209 -0
- package/dist/styles/components/sidenav.js.map +1 -0
- package/dist/styles/components/toc.d.ts +11 -0
- package/dist/styles/components/toc.d.ts.map +1 -0
- package/dist/styles/components/toc.js +112 -0
- package/dist/styles/components/toc.js.map +1 -0
- package/dist/styles/components/typography.d.ts +11 -0
- package/dist/styles/components/typography.d.ts.map +1 -0
- package/dist/styles/components/typography.js +247 -0
- package/dist/styles/components/typography.js.map +1 -0
- package/dist/styles/components/utility.d.ts +11 -0
- package/dist/styles/components/utility.d.ts.map +1 -0
- package/dist/styles/components/utility.js +231 -0
- package/dist/styles/components/utility.js.map +1 -0
- package/dist/styles/types.d.ts +79 -0
- package/dist/styles/types.d.ts.map +1 -0
- package/dist/styles/types.js +7 -0
- package/dist/styles/types.js.map +1 -0
- package/dist/styles/utils.d.ts +21 -0
- package/dist/styles/utils.d.ts.map +1 -0
- package/dist/styles/utils.js +50 -0
- package/dist/styles/utils.js.map +1 -0
- package/dist/styles/variables/main.d.ts +15 -0
- package/dist/styles/variables/main.d.ts.map +1 -0
- package/dist/styles/variables/main.js +116 -0
- package/dist/styles/variables/main.js.map +1 -0
- package/dist/types/config.d.ts +43 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +7 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/content.d.ts +46 -0
- package/dist/types/content.d.ts.map +1 -0
- package/dist/types/content.js +7 -0
- package/dist/types/content.js.map +1 -0
- package/dist/types/navigation.d.ts +45 -0
- package/dist/types/navigation.d.ts.map +1 -0
- package/dist/types/navigation.js +7 -0
- package/dist/types/navigation.js.map +1 -0
- package/dist/utils/language-utils.d.ts +41 -0
- package/dist/utils/language-utils.d.ts.map +1 -0
- package/dist/utils/language-utils.js +79 -0
- package/dist/utils/language-utils.js.map +1 -0
- package/dist/utils/slugify.d.ts +20 -0
- package/dist/utils/slugify.d.ts.map +1 -0
- package/dist/utils/slugify.js +44 -0
- package/dist/utils/slugify.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* HtmlGenerator - Generates static HTML files using React SSR
|
|
4
|
+
* Creates pre-rendered HTML for each content page
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.HtmlGenerator = void 0;
|
|
11
|
+
const react_1 = __importDefault(require("react"));
|
|
12
|
+
const server_1 = __importDefault(require("react-dom/server"));
|
|
13
|
+
const react_router_1 = require("react-router");
|
|
14
|
+
const App_1 = __importDefault(require("../client/App"));
|
|
15
|
+
const ConfigContext_1 = require("../client/contexts/ConfigContext");
|
|
16
|
+
const ContentContext_1 = require("../client/contexts/ContentContext");
|
|
17
|
+
const SearchContext_1 = require("../client/contexts/SearchContext");
|
|
18
|
+
class HtmlGenerator {
|
|
19
|
+
constructor(options) {
|
|
20
|
+
this.siteConfig = options.siteConfig;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Generate HTML for a content page
|
|
24
|
+
* @param content - Processed content
|
|
25
|
+
* @returns Complete HTML string
|
|
26
|
+
*/
|
|
27
|
+
generatePage(content) {
|
|
28
|
+
// Build full URL for this page
|
|
29
|
+
const pageUrl = this.siteConfig.metadata.baseUrl + content.metadata.path;
|
|
30
|
+
// Generate HTML structure
|
|
31
|
+
const html = `<!DOCTYPE html>
|
|
32
|
+
<html lang="${content.metadata.language}">
|
|
33
|
+
<head>
|
|
34
|
+
${this.generateHead(content, pageUrl)}
|
|
35
|
+
</head>
|
|
36
|
+
<body>
|
|
37
|
+
<div id="root">${this.generateBody(content)}</div>
|
|
38
|
+
${this.generateScripts(content)}
|
|
39
|
+
</body>
|
|
40
|
+
</html>`;
|
|
41
|
+
return html;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Generate <head> section with metadata and asset links
|
|
45
|
+
*/
|
|
46
|
+
generateHead(content, pageUrl) {
|
|
47
|
+
const { metadata } = content;
|
|
48
|
+
const { frontmatter } = metadata;
|
|
49
|
+
const title = `${frontmatter.title} | ${this.siteConfig.metadata.title}`;
|
|
50
|
+
const description = frontmatter.description || this.siteConfig.metadata.description || '';
|
|
51
|
+
const headParts = [];
|
|
52
|
+
// Basic meta tags
|
|
53
|
+
headParts.push(`<meta charset="UTF-8">`);
|
|
54
|
+
headParts.push(`<meta name="viewport" content="width=device-width, initial-scale=1.0">`);
|
|
55
|
+
headParts.push(`<title>${this.escapeHtml(title)}</title>`);
|
|
56
|
+
if (description) {
|
|
57
|
+
headParts.push(`<meta name="description" content="${this.escapeHtml(description)}">`);
|
|
58
|
+
}
|
|
59
|
+
// Author
|
|
60
|
+
const author = frontmatter.author;
|
|
61
|
+
if (author) {
|
|
62
|
+
headParts.push(`<meta name="author" content="${this.escapeHtml(author)}">`);
|
|
63
|
+
}
|
|
64
|
+
// Keywords
|
|
65
|
+
const keywords = frontmatter.tags || this.siteConfig.metadata.keywords;
|
|
66
|
+
if (keywords && keywords.length > 0) {
|
|
67
|
+
headParts.push(`<meta name="keywords" content="${keywords.join(', ')}">`);
|
|
68
|
+
}
|
|
69
|
+
// Open Graph tags for social sharing
|
|
70
|
+
headParts.push(`<meta property="og:title" content="${this.escapeHtml(frontmatter.title)}">`);
|
|
71
|
+
if (description) {
|
|
72
|
+
headParts.push(`<meta property="og:description" content="${this.escapeHtml(description)}">`);
|
|
73
|
+
}
|
|
74
|
+
headParts.push(`<meta property="og:url" content="${pageUrl}">`);
|
|
75
|
+
headParts.push(`<meta property="og:type" content="article">`);
|
|
76
|
+
// Twitter Card tags
|
|
77
|
+
headParts.push(`<meta name="twitter:card" content="summary">`);
|
|
78
|
+
headParts.push(`<meta name="twitter:title" content="${this.escapeHtml(frontmatter.title)}">`);
|
|
79
|
+
if (description) {
|
|
80
|
+
headParts.push(`<meta name="twitter:description" content="${this.escapeHtml(description)}">`);
|
|
81
|
+
}
|
|
82
|
+
// Canonical URL
|
|
83
|
+
headParts.push(`<link rel="canonical" href="${pageUrl}">`);
|
|
84
|
+
// Favicon
|
|
85
|
+
if (this.siteConfig.assets.favicon) {
|
|
86
|
+
headParts.push(`<link rel="icon" href="${this.siteConfig.assetsPath}/${this.siteConfig.assets.favicon}">`);
|
|
87
|
+
}
|
|
88
|
+
// Theme initialization script (MUST be before stylesheets)
|
|
89
|
+
headParts.push(this.generateThemeScript());
|
|
90
|
+
// Stylesheets
|
|
91
|
+
headParts.push(`<link rel="stylesheet" href="${this.siteConfig.assetsPath}/theme.css">`);
|
|
92
|
+
headParts.push(`<link rel="stylesheet" href="${this.siteConfig.assetsPath}/styles.css">`);
|
|
93
|
+
// Pagefind CSS (for search)
|
|
94
|
+
headParts.push(`<link rel="stylesheet" href="/pagefind/pagefind-ui.css">`);
|
|
95
|
+
return headParts.map(part => ` ${part}`).join('\n');
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Generate theme initialization script
|
|
99
|
+
* This runs before React hydrates to prevent flash of wrong theme
|
|
100
|
+
*/
|
|
101
|
+
generateThemeScript() {
|
|
102
|
+
return `<script>
|
|
103
|
+
(function() {
|
|
104
|
+
try {
|
|
105
|
+
var theme = localStorage.getItem('theme');
|
|
106
|
+
if (!theme) {
|
|
107
|
+
theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
|
108
|
+
}
|
|
109
|
+
document.documentElement.setAttribute('data-theme', theme);
|
|
110
|
+
} catch (e) {}
|
|
111
|
+
})();
|
|
112
|
+
</script>`;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Generate body content with full React SSR
|
|
116
|
+
* Renders the complete App component tree including Layout, Header, SideNav, etc.
|
|
117
|
+
*/
|
|
118
|
+
generateBody(content) {
|
|
119
|
+
const pagePath = content.metadata.path;
|
|
120
|
+
// Render the full React component tree with StaticRouter
|
|
121
|
+
const bodyHtml = server_1.default.renderToString(react_1.default.createElement(react_router_1.StaticRouter, { location: pagePath }, react_1.default.createElement(ConfigContext_1.ConfigProvider, { config: this.siteConfig, children: react_1.default.createElement(ContentContext_1.ContentProvider, { initialContent: content, children: react_1.default.createElement(SearchContext_1.SearchProvider, { children: react_1.default.createElement(App_1.default, {
|
|
122
|
+
siteConfig: this.siteConfig,
|
|
123
|
+
initialContent: content,
|
|
124
|
+
isServerRender: true
|
|
125
|
+
})
|
|
126
|
+
})
|
|
127
|
+
})
|
|
128
|
+
})));
|
|
129
|
+
return bodyHtml;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Generate script tags for client-side hydration
|
|
133
|
+
*/
|
|
134
|
+
generateScripts(content) {
|
|
135
|
+
const scripts = [];
|
|
136
|
+
// Inject content data for client-side hydration
|
|
137
|
+
const contentData = {
|
|
138
|
+
metadata: content.metadata,
|
|
139
|
+
renderable: content.renderable,
|
|
140
|
+
};
|
|
141
|
+
scripts.push(` <script id="__CONTENT_DATA__" type="application/json">`);
|
|
142
|
+
scripts.push(` ${JSON.stringify(contentData)}`);
|
|
143
|
+
scripts.push(` </script>`);
|
|
144
|
+
// Inject site config for client
|
|
145
|
+
scripts.push(` <script id="__SITE_CONFIG__" type="application/json">`);
|
|
146
|
+
scripts.push(` ${JSON.stringify(this.siteConfig)}`);
|
|
147
|
+
scripts.push(` </script>`);
|
|
148
|
+
// Client-side React bundle
|
|
149
|
+
scripts.push(` <script src="${this.siteConfig.assetsPath}/main.js" defer></script>`);
|
|
150
|
+
// Pagefind search script
|
|
151
|
+
scripts.push(` <script src="/pagefind/pagefind-ui.js" defer></script>`);
|
|
152
|
+
return scripts.join('\n');
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Escape HTML special characters
|
|
156
|
+
*/
|
|
157
|
+
escapeHtml(text) {
|
|
158
|
+
const htmlEscapeMap = {
|
|
159
|
+
'&': '&',
|
|
160
|
+
'<': '<',
|
|
161
|
+
'>': '>',
|
|
162
|
+
'"': '"',
|
|
163
|
+
"'": ''',
|
|
164
|
+
};
|
|
165
|
+
return text.replace(/[&<>"']/g, (char) => htmlEscapeMap[char]);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Generate a simple 404 page
|
|
169
|
+
*/
|
|
170
|
+
generate404Page() {
|
|
171
|
+
const html = `<!DOCTYPE html>
|
|
172
|
+
<html lang="${this.siteConfig.defaultLanguage}">
|
|
173
|
+
<head>
|
|
174
|
+
<meta charset="UTF-8">
|
|
175
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
176
|
+
<title>404 - Page Not Found | ${this.escapeHtml(this.siteConfig.metadata.title)}</title>
|
|
177
|
+
${this.generateThemeScript()}
|
|
178
|
+
<link rel="stylesheet" href="${this.siteConfig.assetsPath}/theme.css">
|
|
179
|
+
<link rel="stylesheet" href="${this.siteConfig.assetsPath}/styles.css">
|
|
180
|
+
</head>
|
|
181
|
+
<body>
|
|
182
|
+
<div id="root">
|
|
183
|
+
<div class="page-container">
|
|
184
|
+
<main class="content-main">
|
|
185
|
+
<div class="container" style="text-align: center; padding: 4rem 0;">
|
|
186
|
+
<h1>404</h1>
|
|
187
|
+
<p>Page not found</p>
|
|
188
|
+
<a href="/">Go to home</a>
|
|
189
|
+
</div>
|
|
190
|
+
</main>
|
|
191
|
+
</div>
|
|
192
|
+
</div>
|
|
193
|
+
<script src="${this.siteConfig.assetsPath}/main.js" defer></script>
|
|
194
|
+
</body>
|
|
195
|
+
</html>`;
|
|
196
|
+
return html;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
exports.HtmlGenerator = HtmlGenerator;
|
|
200
|
+
//# sourceMappingURL=HtmlGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HtmlGenerator.js","sourceRoot":"","sources":["../../src/build/HtmlGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SearchIndexer - Generates Pagefind search index
|
|
3
|
+
* Executes Pagefind CLI binary directly
|
|
4
|
+
*/
|
|
5
|
+
export interface SearchIndexerOptions {
|
|
6
|
+
outputDir: string;
|
|
7
|
+
verbose?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare class SearchIndexer {
|
|
10
|
+
private outputDir;
|
|
11
|
+
private verbose;
|
|
12
|
+
constructor(options: SearchIndexerOptions);
|
|
13
|
+
/**
|
|
14
|
+
* Generate search index using Pagefind CLI binary
|
|
15
|
+
*/
|
|
16
|
+
generateIndex(): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Resolve the path to Pagefind binary
|
|
19
|
+
* Replicates the logic from pagefind's resolveBinary.js
|
|
20
|
+
*/
|
|
21
|
+
private resolveBinaryPath;
|
|
22
|
+
/**
|
|
23
|
+
* Log index statistics
|
|
24
|
+
*/
|
|
25
|
+
private logIndexStats;
|
|
26
|
+
/**
|
|
27
|
+
* Log message if verbose
|
|
28
|
+
*/
|
|
29
|
+
private log;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=SearchIndexer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchIndexer.d.ts","sourceRoot":"","sources":["../../src/build/SearchIndexer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,EAAE,oBAAoB;IAKzC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAwCpC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA8BzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAyBrB;;OAEG;IACH,OAAO,CAAC,GAAG;CAKZ"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SearchIndexer - Generates Pagefind search index
|
|
4
|
+
* Executes Pagefind CLI binary directly
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.SearchIndexer = void 0;
|
|
11
|
+
const child_process_1 = require("child_process");
|
|
12
|
+
const fs_1 = __importDefault(require("fs"));
|
|
13
|
+
const path_1 = __importDefault(require("path"));
|
|
14
|
+
class SearchIndexer {
|
|
15
|
+
constructor(options) {
|
|
16
|
+
this.outputDir = options.outputDir;
|
|
17
|
+
this.verbose = options.verbose ?? false;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Generate search index using Pagefind CLI binary
|
|
21
|
+
*/
|
|
22
|
+
async generateIndex() {
|
|
23
|
+
try {
|
|
24
|
+
this.log('Running Pagefind indexer...');
|
|
25
|
+
// Check if output directory exists
|
|
26
|
+
if (!fs_1.default.existsSync(this.outputDir)) {
|
|
27
|
+
throw new Error(`Output directory not found: ${this.outputDir}`);
|
|
28
|
+
}
|
|
29
|
+
// Get the path to the Pagefind binary using the same method as Pagefind's CLI wrapper
|
|
30
|
+
const binaryPath = this.resolveBinaryPath(['pagefind_extended', 'pagefind']);
|
|
31
|
+
// Run Pagefind indexer
|
|
32
|
+
const command = `"${binaryPath}" --source "${this.outputDir}" --bundle-dir pagefind`;
|
|
33
|
+
this.log(`Executing: ${command}`);
|
|
34
|
+
(0, child_process_1.execSync)(command, {
|
|
35
|
+
stdio: this.verbose ? 'inherit' : 'pipe',
|
|
36
|
+
encoding: 'utf-8',
|
|
37
|
+
});
|
|
38
|
+
// Verify that pagefind directory was created
|
|
39
|
+
const pagefindDir = path_1.default.join(this.outputDir, 'pagefind');
|
|
40
|
+
if (!fs_1.default.existsSync(pagefindDir)) {
|
|
41
|
+
throw new Error('Pagefind indexing completed but pagefind directory was not created');
|
|
42
|
+
}
|
|
43
|
+
this.log('✓ Search index generated successfully');
|
|
44
|
+
// Log index stats if verbose
|
|
45
|
+
if (this.verbose) {
|
|
46
|
+
this.logIndexStats(pagefindDir);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
51
|
+
throw new Error(`Failed to generate search index: ${errorMessage}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Resolve the path to Pagefind binary
|
|
56
|
+
* Replicates the logic from pagefind's resolveBinary.js
|
|
57
|
+
*/
|
|
58
|
+
resolveBinaryPath(execnames) {
|
|
59
|
+
// Check environment variables first
|
|
60
|
+
for (const execname of execnames) {
|
|
61
|
+
const envVar = process.env[`${execname.toUpperCase()}_BINARY_PATH`];
|
|
62
|
+
if (envVar)
|
|
63
|
+
return envVar;
|
|
64
|
+
}
|
|
65
|
+
const cpu = process.env.npm_config_arch || require('os').arch();
|
|
66
|
+
const platform = process.platform === 'win32' ? 'windows' : process.platform;
|
|
67
|
+
for (const execname of execnames) {
|
|
68
|
+
const executable = platform === 'windows' ? `${execname}.exe` : execname;
|
|
69
|
+
try {
|
|
70
|
+
// Try to resolve the platform-specific package
|
|
71
|
+
const binaryPath = require.resolve(`@pagefind/${platform}-${cpu}/bin/${executable}`);
|
|
72
|
+
return binaryPath;
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
// Continue to next execname
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
throw new Error(`Failed to find Pagefind binary for platform ${platform}-${cpu}. ` +
|
|
79
|
+
`Please ensure @pagefind/${platform}-${cpu} is installed.`);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Log index statistics
|
|
83
|
+
*/
|
|
84
|
+
logIndexStats(pagefindDir) {
|
|
85
|
+
try {
|
|
86
|
+
const files = fs_1.default.readdirSync(pagefindDir);
|
|
87
|
+
const indexFiles = files.filter(f => f.endsWith('.pf_index'));
|
|
88
|
+
const fragmentFiles = files.filter(f => f.endsWith('.pf_fragment'));
|
|
89
|
+
this.log(` - Index files: ${indexFiles.length}`);
|
|
90
|
+
this.log(` - Fragment files: ${fragmentFiles.length}`);
|
|
91
|
+
// Calculate total size
|
|
92
|
+
let totalSize = 0;
|
|
93
|
+
files.forEach(file => {
|
|
94
|
+
const filePath = path_1.default.join(pagefindDir, file);
|
|
95
|
+
if (fs_1.default.statSync(filePath).isFile()) {
|
|
96
|
+
totalSize += fs_1.default.statSync(filePath).size;
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
const sizeMB = (totalSize / 1024 / 1024).toFixed(2);
|
|
100
|
+
this.log(` - Total index size: ${sizeMB} MB`);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
// Ignore errors in stats logging
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Log message if verbose
|
|
108
|
+
*/
|
|
109
|
+
log(message) {
|
|
110
|
+
if (this.verbose) {
|
|
111
|
+
console.log(message);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
exports.SearchIndexer = SearchIndexer;
|
|
116
|
+
//# sourceMappingURL=SearchIndexer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchIndexer.js","sourceRoot":"","sources":["../../src/build/SearchIndexer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build command - Generates static site from content
|
|
3
|
+
* Usage: mordoc build [options]
|
|
4
|
+
*/
|
|
5
|
+
export interface BuildCommandOptions {
|
|
6
|
+
projectRoot?: string;
|
|
7
|
+
outputDir?: string;
|
|
8
|
+
verbose?: boolean;
|
|
9
|
+
drafts?: boolean;
|
|
10
|
+
clean?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Execute the build command
|
|
14
|
+
*/
|
|
15
|
+
export declare function build(options?: BuildCommandOptions): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Parse command-line arguments for build command
|
|
18
|
+
*/
|
|
19
|
+
export declare function parseBuildArgs(args: string[]): BuildCommandOptions;
|
|
20
|
+
//# sourceMappingURL=build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,KAAK,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC5E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAyClE"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Build command - Generates static site from content
|
|
4
|
+
* Usage: mordoc build [options]
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.build = build;
|
|
11
|
+
exports.parseBuildArgs = parseBuildArgs;
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
13
|
+
const Builder_1 = require("../build/Builder");
|
|
14
|
+
/**
|
|
15
|
+
* Execute the build command
|
|
16
|
+
*/
|
|
17
|
+
async function build(options = {}) {
|
|
18
|
+
const startTime = Date.now();
|
|
19
|
+
try {
|
|
20
|
+
// Get project root (current working directory by default)
|
|
21
|
+
const projectRoot = options.projectRoot || process.cwd();
|
|
22
|
+
// Resolve output directory
|
|
23
|
+
const outputDir = options.outputDir
|
|
24
|
+
? path_1.default.resolve(projectRoot, options.outputDir)
|
|
25
|
+
: path_1.default.join(projectRoot, 'dist');
|
|
26
|
+
// Create builder instance
|
|
27
|
+
const builder = new Builder_1.Builder({
|
|
28
|
+
projectRoot,
|
|
29
|
+
outputDir,
|
|
30
|
+
clean: options.clean ?? true,
|
|
31
|
+
includeDrafts: options.drafts ?? false,
|
|
32
|
+
verbose: options.verbose ?? false,
|
|
33
|
+
});
|
|
34
|
+
// Execute build
|
|
35
|
+
await builder.build();
|
|
36
|
+
// Calculate build time
|
|
37
|
+
const buildTime = ((Date.now() - startTime) / 1000).toFixed(2);
|
|
38
|
+
console.log(`\n⚡ Build completed in ${buildTime}s`);
|
|
39
|
+
process.exit(0);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
console.error('\n❌ Build failed:');
|
|
43
|
+
console.error(error.message);
|
|
44
|
+
if (options.verbose) {
|
|
45
|
+
console.error('\nStack trace:');
|
|
46
|
+
console.error(error.stack);
|
|
47
|
+
}
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Parse command-line arguments for build command
|
|
53
|
+
*/
|
|
54
|
+
function parseBuildArgs(args) {
|
|
55
|
+
const options = {};
|
|
56
|
+
for (let i = 0; i < args.length; i++) {
|
|
57
|
+
const arg = args[i];
|
|
58
|
+
switch (arg) {
|
|
59
|
+
case '--output':
|
|
60
|
+
case '-o':
|
|
61
|
+
options.outputDir = args[++i];
|
|
62
|
+
break;
|
|
63
|
+
case '--verbose':
|
|
64
|
+
case '-v':
|
|
65
|
+
options.verbose = true;
|
|
66
|
+
break;
|
|
67
|
+
case '--drafts':
|
|
68
|
+
case '-d':
|
|
69
|
+
options.drafts = true;
|
|
70
|
+
break;
|
|
71
|
+
case '--no-clean':
|
|
72
|
+
options.clean = false;
|
|
73
|
+
break;
|
|
74
|
+
case '--help':
|
|
75
|
+
case '-h':
|
|
76
|
+
showBuildHelp();
|
|
77
|
+
process.exit(0);
|
|
78
|
+
break;
|
|
79
|
+
default:
|
|
80
|
+
if (arg.startsWith('-')) {
|
|
81
|
+
console.warn(`Warning: Unknown option ${arg}`);
|
|
82
|
+
}
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return options;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Show help text for build command
|
|
90
|
+
*/
|
|
91
|
+
function showBuildHelp() {
|
|
92
|
+
console.log(`
|
|
93
|
+
mordoc build - Generate static documentation site
|
|
94
|
+
|
|
95
|
+
Usage:
|
|
96
|
+
mordoc build [options]
|
|
97
|
+
|
|
98
|
+
Options:
|
|
99
|
+
-o, --output <dir> Output directory (default: dist)
|
|
100
|
+
-v, --verbose Enable verbose logging
|
|
101
|
+
-d, --drafts Include draft content in build
|
|
102
|
+
--no-clean Don't clean output directory before build
|
|
103
|
+
-h, --help Show this help message
|
|
104
|
+
|
|
105
|
+
Examples:
|
|
106
|
+
mordoc build
|
|
107
|
+
mordoc build --output build
|
|
108
|
+
mordoc build --verbose --drafts
|
|
109
|
+
`);
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create App command - Scaffolds a new Mordoc project
|
|
3
|
+
* Usage: createApp(projectName, options)
|
|
4
|
+
*/
|
|
5
|
+
export interface CreateAppOptions {
|
|
6
|
+
template?: string;
|
|
7
|
+
skipInstall?: boolean;
|
|
8
|
+
skipGit?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Create a new Mordoc documentation project
|
|
12
|
+
*/
|
|
13
|
+
export declare function createApp(projectName: string, options?: CreateAppOptions): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=create-app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-app.d.ts","sourceRoot":"","sources":["../../src/cli/create-app.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAuDf"}
|