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.
Files changed (243) hide show
  1. package/README.md +240 -0
  2. package/bin/cli.js +81 -0
  3. package/dist/build/Builder.d.ts +91 -0
  4. package/dist/build/Builder.d.ts.map +1 -0
  5. package/dist/build/Builder.js +391 -0
  6. package/dist/build/Builder.js.map +1 -0
  7. package/dist/build/ClientBundler.d.ts +36 -0
  8. package/dist/build/ClientBundler.d.ts.map +1 -0
  9. package/dist/build/ClientBundler.js +132 -0
  10. package/dist/build/ClientBundler.js.map +1 -0
  11. package/dist/build/HtmlGenerator.d.ts +46 -0
  12. package/dist/build/HtmlGenerator.d.ts.map +1 -0
  13. package/dist/build/HtmlGenerator.js +200 -0
  14. package/dist/build/HtmlGenerator.js.map +1 -0
  15. package/dist/build/SearchIndexer.d.ts +31 -0
  16. package/dist/build/SearchIndexer.d.ts.map +1 -0
  17. package/dist/build/SearchIndexer.js +116 -0
  18. package/dist/build/SearchIndexer.js.map +1 -0
  19. package/dist/cli/build.d.ts +20 -0
  20. package/dist/cli/build.d.ts.map +1 -0
  21. package/dist/cli/build.js +111 -0
  22. package/dist/cli/build.js.map +1 -0
  23. package/dist/cli/create-app.d.ts +14 -0
  24. package/dist/cli/create-app.d.ts.map +1 -0
  25. package/dist/cli/create-app.js +216 -0
  26. package/dist/cli/create-app.js.map +1 -0
  27. package/dist/cli/dev.d.ts +20 -0
  28. package/dist/cli/dev.d.ts.map +1 -0
  29. package/dist/cli/dev.js +169 -0
  30. package/dist/cli/dev.js.map +1 -0
  31. package/dist/client/App.d.ts +17 -0
  32. package/dist/client/App.d.ts.map +1 -0
  33. package/dist/client/App.js +94 -0
  34. package/dist/client/App.js.map +1 -0
  35. package/dist/client/contexts/ConfigContext.d.ts +22 -0
  36. package/dist/client/contexts/ConfigContext.d.ts.map +1 -0
  37. package/dist/client/contexts/ConfigContext.js +27 -0
  38. package/dist/client/contexts/ConfigContext.js.map +1 -0
  39. package/dist/client/contexts/ContentContext.d.ts +31 -0
  40. package/dist/client/contexts/ContentContext.d.ts.map +1 -0
  41. package/dist/client/contexts/ContentContext.js +46 -0
  42. package/dist/client/contexts/ContentContext.js.map +1 -0
  43. package/dist/client/contexts/SearchContext.d.ts +38 -0
  44. package/dist/client/contexts/SearchContext.d.ts.map +1 -0
  45. package/dist/client/contexts/SearchContext.js +207 -0
  46. package/dist/client/contexts/SearchContext.js.map +1 -0
  47. package/dist/client/contexts/ThemeContext.d.ts +23 -0
  48. package/dist/client/contexts/ThemeContext.d.ts.map +1 -0
  49. package/dist/client/contexts/ThemeContext.js +62 -0
  50. package/dist/client/contexts/ThemeContext.js.map +1 -0
  51. package/dist/client/hooks/useContent.d.ts +12 -0
  52. package/dist/client/hooks/useContent.d.ts.map +1 -0
  53. package/dist/client/hooks/useContent.js +74 -0
  54. package/dist/client/hooks/useContent.js.map +1 -0
  55. package/dist/client/hooks/useNavigation.d.ts +15 -0
  56. package/dist/client/hooks/useNavigation.d.ts.map +1 -0
  57. package/dist/client/hooks/useNavigation.js +101 -0
  58. package/dist/client/hooks/useNavigation.js.map +1 -0
  59. package/dist/client/hooks/useSearch.d.ts +22 -0
  60. package/dist/client/hooks/useSearch.d.ts.map +1 -0
  61. package/dist/client/hooks/useSearch.js +64 -0
  62. package/dist/client/hooks/useSearch.js.map +1 -0
  63. package/dist/client/main.d.ts +5 -0
  64. package/dist/client/main.d.ts.map +1 -0
  65. package/dist/client/main.js +66 -0
  66. package/dist/client/main.js.map +1 -0
  67. package/dist/components/Callout.d.ts +9 -0
  68. package/dist/components/Callout.d.ts.map +1 -0
  69. package/dist/components/Callout.js +24 -0
  70. package/dist/components/Callout.js.map +1 -0
  71. package/dist/components/Card.d.ts +10 -0
  72. package/dist/components/Card.d.ts.map +1 -0
  73. package/dist/components/Card.js +15 -0
  74. package/dist/components/Card.js.map +1 -0
  75. package/dist/components/CardGrid.d.ts +8 -0
  76. package/dist/components/CardGrid.d.ts.map +1 -0
  77. package/dist/components/CardGrid.js +9 -0
  78. package/dist/components/CardGrid.js.map +1 -0
  79. package/dist/components/CodeBlock.d.ts +24 -0
  80. package/dist/components/CodeBlock.d.ts.map +1 -0
  81. package/dist/components/CodeBlock.js +76 -0
  82. package/dist/components/CodeBlock.js.map +1 -0
  83. package/dist/components/ContentPage.d.ts +9 -0
  84. package/dist/components/ContentPage.d.ts.map +1 -0
  85. package/dist/components/ContentPage.js +36 -0
  86. package/dist/components/ContentPage.js.map +1 -0
  87. package/dist/components/Header.d.ts +14 -0
  88. package/dist/components/Header.d.ts.map +1 -0
  89. package/dist/components/Header.js +30 -0
  90. package/dist/components/Header.js.map +1 -0
  91. package/dist/components/Heading.d.ts +16 -0
  92. package/dist/components/Heading.d.ts.map +1 -0
  93. package/dist/components/Heading.js +31 -0
  94. package/dist/components/Heading.js.map +1 -0
  95. package/dist/components/Image.d.ts +8 -0
  96. package/dist/components/Image.d.ts.map +1 -0
  97. package/dist/components/Image.js +24 -0
  98. package/dist/components/Image.js.map +1 -0
  99. package/dist/components/Layout.d.ts +14 -0
  100. package/dist/components/Layout.d.ts.map +1 -0
  101. package/dist/components/Layout.js +32 -0
  102. package/dist/components/Layout.js.map +1 -0
  103. package/dist/components/MarkdocRenderer.d.ts +15 -0
  104. package/dist/components/MarkdocRenderer.d.ts.map +1 -0
  105. package/dist/components/MarkdocRenderer.js +73 -0
  106. package/dist/components/MarkdocRenderer.js.map +1 -0
  107. package/dist/components/MobileMenu.d.ts +14 -0
  108. package/dist/components/MobileMenu.d.ts.map +1 -0
  109. package/dist/components/MobileMenu.js +45 -0
  110. package/dist/components/MobileMenu.js.map +1 -0
  111. package/dist/components/PageNavigation.d.ts +9 -0
  112. package/dist/components/PageNavigation.d.ts.map +1 -0
  113. package/dist/components/PageNavigation.js +23 -0
  114. package/dist/components/PageNavigation.js.map +1 -0
  115. package/dist/components/SearchModal.d.ts +9 -0
  116. package/dist/components/SearchModal.d.ts.map +1 -0
  117. package/dist/components/SearchModal.js +74 -0
  118. package/dist/components/SearchModal.js.map +1 -0
  119. package/dist/components/SideNav.d.ts +9 -0
  120. package/dist/components/SideNav.d.ts.map +1 -0
  121. package/dist/components/SideNav.js +66 -0
  122. package/dist/components/SideNav.js.map +1 -0
  123. package/dist/components/TableOfContents.d.ts +10 -0
  124. package/dist/components/TableOfContents.d.ts.map +1 -0
  125. package/dist/components/TableOfContents.js +151 -0
  126. package/dist/components/TableOfContents.js.map +1 -0
  127. package/dist/config/ConfigLoader.d.ts +50 -0
  128. package/dist/config/ConfigLoader.d.ts.map +1 -0
  129. package/dist/config/ConfigLoader.js +214 -0
  130. package/dist/config/ConfigLoader.js.map +1 -0
  131. package/dist/config/StyleCompiler.d.ts +17 -0
  132. package/dist/config/StyleCompiler.d.ts.map +1 -0
  133. package/dist/config/StyleCompiler.js +116 -0
  134. package/dist/config/StyleCompiler.js.map +1 -0
  135. package/dist/config/ThemeGenerator.d.ts +14 -0
  136. package/dist/config/ThemeGenerator.d.ts.map +1 -0
  137. package/dist/config/ThemeGenerator.js +129 -0
  138. package/dist/config/ThemeGenerator.js.map +1 -0
  139. package/dist/content/ContentLoader.d.ts +70 -0
  140. package/dist/content/ContentLoader.d.ts.map +1 -0
  141. package/dist/content/ContentLoader.js +146 -0
  142. package/dist/content/ContentLoader.js.map +1 -0
  143. package/dist/content/ContentProcessor.d.ts +84 -0
  144. package/dist/content/ContentProcessor.d.ts.map +1 -0
  145. package/dist/content/ContentProcessor.js +380 -0
  146. package/dist/content/ContentProcessor.js.map +1 -0
  147. package/dist/content/RouteManager.d.ts +69 -0
  148. package/dist/content/RouteManager.d.ts.map +1 -0
  149. package/dist/content/RouteManager.js +143 -0
  150. package/dist/content/RouteManager.js.map +1 -0
  151. package/dist/styles/components/callout.d.ts +11 -0
  152. package/dist/styles/components/callout.d.ts.map +1 -0
  153. package/dist/styles/components/callout.js +83 -0
  154. package/dist/styles/components/callout.js.map +1 -0
  155. package/dist/styles/components/card.d.ts +11 -0
  156. package/dist/styles/components/card.d.ts.map +1 -0
  157. package/dist/styles/components/card.js +179 -0
  158. package/dist/styles/components/card.js.map +1 -0
  159. package/dist/styles/components/codeblock.d.ts +11 -0
  160. package/dist/styles/components/codeblock.d.ts.map +1 -0
  161. package/dist/styles/components/codeblock.js +249 -0
  162. package/dist/styles/components/codeblock.js.map +1 -0
  163. package/dist/styles/components/content.d.ts +11 -0
  164. package/dist/styles/components/content.d.ts.map +1 -0
  165. package/dist/styles/components/content.js +198 -0
  166. package/dist/styles/components/content.js.map +1 -0
  167. package/dist/styles/components/fonts.d.ts +11 -0
  168. package/dist/styles/components/fonts.d.ts.map +1 -0
  169. package/dist/styles/components/fonts.js +34 -0
  170. package/dist/styles/components/fonts.js.map +1 -0
  171. package/dist/styles/components/header.d.ts +11 -0
  172. package/dist/styles/components/header.d.ts.map +1 -0
  173. package/dist/styles/components/header.js +293 -0
  174. package/dist/styles/components/header.js.map +1 -0
  175. package/dist/styles/components/heading.d.ts +11 -0
  176. package/dist/styles/components/heading.d.ts.map +1 -0
  177. package/dist/styles/components/heading.js +115 -0
  178. package/dist/styles/components/heading.js.map +1 -0
  179. package/dist/styles/components/layout.d.ts +11 -0
  180. package/dist/styles/components/layout.d.ts.map +1 -0
  181. package/dist/styles/components/layout.js +79 -0
  182. package/dist/styles/components/layout.js.map +1 -0
  183. package/dist/styles/components/mobilemenu.d.ts +11 -0
  184. package/dist/styles/components/mobilemenu.d.ts.map +1 -0
  185. package/dist/styles/components/mobilemenu.js +112 -0
  186. package/dist/styles/components/mobilemenu.js.map +1 -0
  187. package/dist/styles/components/reset.d.ts +11 -0
  188. package/dist/styles/components/reset.d.ts.map +1 -0
  189. package/dist/styles/components/reset.js +131 -0
  190. package/dist/styles/components/reset.js.map +1 -0
  191. package/dist/styles/components/searchmodal.d.ts +11 -0
  192. package/dist/styles/components/searchmodal.d.ts.map +1 -0
  193. package/dist/styles/components/searchmodal.js +333 -0
  194. package/dist/styles/components/searchmodal.js.map +1 -0
  195. package/dist/styles/components/sidenav.d.ts +11 -0
  196. package/dist/styles/components/sidenav.d.ts.map +1 -0
  197. package/dist/styles/components/sidenav.js +209 -0
  198. package/dist/styles/components/sidenav.js.map +1 -0
  199. package/dist/styles/components/toc.d.ts +11 -0
  200. package/dist/styles/components/toc.d.ts.map +1 -0
  201. package/dist/styles/components/toc.js +112 -0
  202. package/dist/styles/components/toc.js.map +1 -0
  203. package/dist/styles/components/typography.d.ts +11 -0
  204. package/dist/styles/components/typography.d.ts.map +1 -0
  205. package/dist/styles/components/typography.js +247 -0
  206. package/dist/styles/components/typography.js.map +1 -0
  207. package/dist/styles/components/utility.d.ts +11 -0
  208. package/dist/styles/components/utility.d.ts.map +1 -0
  209. package/dist/styles/components/utility.js +231 -0
  210. package/dist/styles/components/utility.js.map +1 -0
  211. package/dist/styles/types.d.ts +79 -0
  212. package/dist/styles/types.d.ts.map +1 -0
  213. package/dist/styles/types.js +7 -0
  214. package/dist/styles/types.js.map +1 -0
  215. package/dist/styles/utils.d.ts +21 -0
  216. package/dist/styles/utils.d.ts.map +1 -0
  217. package/dist/styles/utils.js +50 -0
  218. package/dist/styles/utils.js.map +1 -0
  219. package/dist/styles/variables/main.d.ts +15 -0
  220. package/dist/styles/variables/main.d.ts.map +1 -0
  221. package/dist/styles/variables/main.js +116 -0
  222. package/dist/styles/variables/main.js.map +1 -0
  223. package/dist/types/config.d.ts +43 -0
  224. package/dist/types/config.d.ts.map +1 -0
  225. package/dist/types/config.js +7 -0
  226. package/dist/types/config.js.map +1 -0
  227. package/dist/types/content.d.ts +46 -0
  228. package/dist/types/content.d.ts.map +1 -0
  229. package/dist/types/content.js +7 -0
  230. package/dist/types/content.js.map +1 -0
  231. package/dist/types/navigation.d.ts +45 -0
  232. package/dist/types/navigation.d.ts.map +1 -0
  233. package/dist/types/navigation.js +7 -0
  234. package/dist/types/navigation.js.map +1 -0
  235. package/dist/utils/language-utils.d.ts +41 -0
  236. package/dist/utils/language-utils.d.ts.map +1 -0
  237. package/dist/utils/language-utils.js +79 -0
  238. package/dist/utils/language-utils.js.map +1 -0
  239. package/dist/utils/slugify.d.ts +20 -0
  240. package/dist/utils/slugify.d.ts.map +1 -0
  241. package/dist/utils/slugify.js +44 -0
  242. package/dist/utils/slugify.js.map +1 -0
  243. 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
+ '&': '&amp;',
160
+ '<': '&lt;',
161
+ '>': '&gt;',
162
+ '"': '&quot;',
163
+ "'": '&#39;',
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"}