zengen 0.1.0

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.
@@ -0,0 +1,407 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.TemplateEngine = void 0;
37
+ const fs = __importStar(require("fs/promises"));
38
+ const path = __importStar(require("path"));
39
+ class TemplateEngine {
40
+ constructor() {
41
+ this.defaultTemplate = `<!DOCTYPE html>
42
+ <html lang="zh-CN">
43
+ <head>
44
+ <meta charset="UTF-8">
45
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
46
+ <title>{{title}}</title>
47
+ <style>
48
+ * {
49
+ margin: 0;
50
+ padding: 0;
51
+ box-sizing: border-box;
52
+ }
53
+
54
+ body {
55
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
56
+ line-height: 1.6;
57
+ color: #333;
58
+ background: #f8f9fa;
59
+ display: flex;
60
+ min-height: 100vh;
61
+ }
62
+
63
+ .sidebar {
64
+ width: 280px;
65
+ background: #fff;
66
+ border-right: 1px solid #e9ecef;
67
+ padding: 2rem 1rem;
68
+ overflow-y: auto;
69
+ position: fixed;
70
+ height: 100vh;
71
+ left: 0;
72
+ top: 0;
73
+ }
74
+
75
+ .sidebar-header {
76
+ margin-bottom: 2rem;
77
+ padding-bottom: 1rem;
78
+ border-bottom: 1px solid #e9ecef;
79
+ }
80
+
81
+ .sidebar-header h1 {
82
+ font-size: 1.5rem;
83
+ font-weight: 600;
84
+ color: #212529;
85
+ }
86
+
87
+ .sidebar-header p {
88
+ color: #6c757d;
89
+ font-size: 0.875rem;
90
+ margin-top: 0.5rem;
91
+ }
92
+
93
+ .nav-list {
94
+ list-style: none;
95
+ }
96
+
97
+ .nav-item {
98
+ margin-bottom: 0.5rem;
99
+ }
100
+
101
+ .nav-link {
102
+ display: block;
103
+ padding: 0.5rem 1rem;
104
+ color: #495057;
105
+ text-decoration: none;
106
+ border-radius: 4px;
107
+ transition: all 0.2s;
108
+ }
109
+
110
+ .nav-link:hover {
111
+ background: #e9ecef;
112
+ color: #212529;
113
+ }
114
+
115
+ .nav-link.active {
116
+ background: #007bff;
117
+ color: white;
118
+ }
119
+
120
+ .nav-submenu {
121
+ list-style: none;
122
+ margin-left: 1rem;
123
+ margin-top: 0.25rem;
124
+ }
125
+
126
+ .content {
127
+ flex: 1;
128
+ margin-left: 280px;
129
+ padding: 3rem 4rem;
130
+ max-width: 900px;
131
+ }
132
+
133
+ .content-header {
134
+ margin-bottom: 2rem;
135
+ padding-bottom: 1rem;
136
+ border-bottom: 1px solid #e9ecef;
137
+ }
138
+
139
+ .content-header h1 {
140
+ font-size: 2.5rem;
141
+ font-weight: 700;
142
+ color: #212529;
143
+ margin-bottom: 0.5rem;
144
+ }
145
+
146
+ .content-header .meta {
147
+ color: #6c757d;
148
+ font-size: 0.875rem;
149
+ }
150
+
151
+ .content-body {
152
+ font-size: 1.125rem;
153
+ line-height: 1.8;
154
+ }
155
+
156
+ .content-body h1 {
157
+ font-size: 2rem;
158
+ margin: 2rem 0 1rem;
159
+ color: #212529;
160
+ }
161
+
162
+ .content-body h2 {
163
+ font-size: 1.75rem;
164
+ margin: 1.75rem 0 0.875rem;
165
+ color: #343a40;
166
+ }
167
+
168
+ .content-body h3 {
169
+ font-size: 1.5rem;
170
+ margin: 1.5rem 0 0.75rem;
171
+ color: #495057;
172
+ }
173
+
174
+ .content-body p {
175
+ margin: 1rem 0;
176
+ }
177
+
178
+ .content-body ul, .content-body ol {
179
+ margin: 1rem 0 1rem 2rem;
180
+ }
181
+
182
+ .content-body li {
183
+ margin: 0.5rem 0;
184
+ }
185
+
186
+ .content-body blockquote {
187
+ border-left: 4px solid #007bff;
188
+ padding: 0.5rem 1rem;
189
+ margin: 1rem 0;
190
+ background: #f8f9fa;
191
+ color: #495057;
192
+ }
193
+
194
+ .content-body code {
195
+ background: #f8f9fa;
196
+ padding: 0.2rem 0.4rem;
197
+ border-radius: 3px;
198
+ font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
199
+ font-size: 0.875em;
200
+ }
201
+
202
+ .content-body pre {
203
+ background: #f8f9fa;
204
+ padding: 1rem;
205
+ border-radius: 6px;
206
+ overflow-x: auto;
207
+ margin: 1rem 0;
208
+ }
209
+
210
+ .content-body pre code {
211
+ background: none;
212
+ padding: 0;
213
+ }
214
+
215
+ .content-body table {
216
+ width: 100%;
217
+ border-collapse: collapse;
218
+ margin: 1rem 0;
219
+ }
220
+
221
+ .content-body th, .content-body td {
222
+ border: 1px solid #dee2e6;
223
+ padding: 0.75rem;
224
+ text-align: left;
225
+ }
226
+
227
+ .content-body th {
228
+ background: #f8f9fa;
229
+ font-weight: 600;
230
+ }
231
+
232
+ .content-body img {
233
+ max-width: 100%;
234
+ height: auto;
235
+ border-radius: 6px;
236
+ margin: 1rem 0;
237
+ }
238
+
239
+ .content-body a {
240
+ color: #007bff;
241
+ text-decoration: none;
242
+ }
243
+
244
+ .content-body a:hover {
245
+ text-decoration: underline;
246
+ }
247
+
248
+ .footer {
249
+ margin-top: 3rem;
250
+ padding-top: 2rem;
251
+ border-top: 1px solid #e9ecef;
252
+ color: #6c757d;
253
+ font-size: 0.875rem;
254
+ text-align: center;
255
+ }
256
+
257
+ @media (max-width: 768px) {
258
+ body {
259
+ flex-direction: column;
260
+ }
261
+
262
+ .sidebar {
263
+ width: 100%;
264
+ height: auto;
265
+ position: static;
266
+ border-right: none;
267
+ border-bottom: 1px solid #e9ecef;
268
+ }
269
+
270
+ .content {
271
+ margin-left: 0;
272
+ padding: 2rem;
273
+ }
274
+ }
275
+ </style>
276
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/styles/github.min.css">
277
+ </head>
278
+ <body>
279
+ <nav class="sidebar">
280
+ <div class="sidebar-header">
281
+ <h1>ZEN Documentation</h1>
282
+ <p>A minimalist Markdown documentation site builder</p>
283
+ </div>
284
+ {{navigation}}
285
+ </nav>
286
+
287
+ <main class="content">
288
+ <header class="content-header">
289
+ <h1>{{title}}</h1>
290
+ {{#if metadata}}
291
+ <div class="meta">
292
+ {{#if metadata.author}}By {{metadata.author}} • {{/if}}
293
+ {{#if metadata.date}}{{metadata.date}}{{/if}}
294
+ </div>
295
+ {{/if}}
296
+ </header>
297
+
298
+ <article class="content-body">
299
+ {{{content}}}
300
+ </article>
301
+
302
+ <footer class="footer">
303
+ <p>Generated by <strong>ZEN</strong> • <a href="https://github.com/yourusername/zen" target="_blank">View on GitHub</a></p>
304
+ </footer>
305
+ </main>
306
+
307
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/highlight.min.js"></script>
308
+ <script>hljs.highlightAll();</script>
309
+ </body>
310
+ </html>`;
311
+ }
312
+ /**
313
+ * 生成导航 HTML
314
+ */
315
+ generateNavigationHtml(navigation, currentPath) {
316
+ const renderItem = (item) => {
317
+ const isActive = currentPath === item.path;
318
+ const activeClass = isActive ? 'active' : '';
319
+ let html = `<li class="nav-item">`;
320
+ html += `<a href="${item.path}" class="nav-link ${activeClass}">${item.title}</a>`;
321
+ if (item.children && item.children.length > 0) {
322
+ html += `<ul class="nav-submenu">`;
323
+ html += item.children.map(child => renderItem(child)).join('');
324
+ html += `</ul>`;
325
+ }
326
+ html += `</li>`;
327
+ return html;
328
+ };
329
+ return `<ul class="nav-list">${navigation.map(item => renderItem(item)).join('')}</ul>`;
330
+ }
331
+ /**
332
+ * 简单的模板变量替换
333
+ */
334
+ renderTemplate(template, data) {
335
+ let result = template;
336
+ // 替换导航
337
+ const navigationHtml = this.generateNavigationHtml(data.navigation, data.currentPath);
338
+ result = result.replace('{{navigation}}', navigationHtml);
339
+ // 替换其他变量
340
+ result = result.replace('{{title}}', data.title || 'Untitled');
341
+ result = result.replace('{{{content}}}', data.content || '');
342
+ // 处理 metadata
343
+ if (data.metadata) {
344
+ // 简单的 metadata 替换逻辑
345
+ for (const [key, value] of Object.entries(data.metadata)) {
346
+ const placeholder = `{{metadata.${key}}}`;
347
+ if (result.includes(placeholder)) {
348
+ result = result.replace(new RegExp(placeholder, 'g'), String(value));
349
+ }
350
+ }
351
+ // 替换 metadata 对象为 JSON(如果需要)
352
+ if (result.includes('{{metadata}}')) {
353
+ result = result.replace('{{metadata}}', JSON.stringify(data.metadata));
354
+ }
355
+ }
356
+ // 移除未使用的 metadata 占位符
357
+ result = result.replace(/\{\{metadata\.[^}]*\}\}/g, '');
358
+ return result;
359
+ }
360
+ /**
361
+ * 渲染模板
362
+ */
363
+ async render(data, templatePath) {
364
+ let template = this.defaultTemplate;
365
+ if (templatePath) {
366
+ try {
367
+ template = await fs.readFile(templatePath, 'utf-8');
368
+ }
369
+ catch (error) {
370
+ console.warn(`Failed to load custom template from ${templatePath}, using default template:`, error);
371
+ }
372
+ }
373
+ return this.renderTemplate(template, data);
374
+ }
375
+ /**
376
+ * 从文件信息生成模板数据
377
+ */
378
+ generateTemplateData(fileInfo, navigation) {
379
+ return {
380
+ title: fileInfo.metadata?.title || fileInfo.name,
381
+ content: fileInfo.html || '',
382
+ navigation,
383
+ metadata: fileInfo.metadata,
384
+ currentPath: `/${fileInfo.relativePath.replace(/\.md$/, '.html')}`
385
+ };
386
+ }
387
+ /**
388
+ * 生成输出文件路径
389
+ */
390
+ getOutputPath(fileInfo, outDir) {
391
+ const htmlFileName = `${fileInfo.name}.html`;
392
+ const relativeDir = path.dirname(fileInfo.relativePath);
393
+ return path.join(outDir, relativeDir, htmlFileName);
394
+ }
395
+ /**
396
+ * 保存渲染结果到文件
397
+ */
398
+ async saveToFile(html, outputPath) {
399
+ // 确保目录存在
400
+ const dir = path.dirname(outputPath);
401
+ await fs.mkdir(dir, { recursive: true });
402
+ // 写入文件
403
+ await fs.writeFile(outputPath, html, 'utf-8');
404
+ }
405
+ }
406
+ exports.TemplateEngine = TemplateEngine;
407
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ export interface BuildOptions {
2
+ srcDir: string;
3
+ outDir: string;
4
+ template?: string;
5
+ watch?: boolean;
6
+ verbose?: boolean;
7
+ }
8
+ export interface FileInfo {
9
+ path: string;
10
+ relativePath: string;
11
+ name: string;
12
+ ext: string;
13
+ content: string;
14
+ html?: string;
15
+ metadata?: Record<string, any>;
16
+ }
17
+ export interface NavigationItem {
18
+ title: string;
19
+ path: string;
20
+ children?: NavigationItem[];
21
+ }
22
+ export interface TemplateData {
23
+ title: string;
24
+ content: string;
25
+ navigation: NavigationItem[];
26
+ metadata?: Record<string, any>;
27
+ currentPath?: string;
28
+ }
29
+ export interface MarkdownProcessor {
30
+ beforeParse?(content: string, fileInfo: FileInfo): string | Promise<string>;
31
+ afterParse?(html: string, fileInfo: FileInfo): string | Promise<string>;
32
+ }
33
+ export interface ZenConfig {
34
+ srcDir?: string;
35
+ outDir?: string;
36
+ template?: string;
37
+ i18n?: {
38
+ sourceLang: string;
39
+ targetLangs: string[];
40
+ apiKey?: string;
41
+ };
42
+ processors?: MarkdownProcessor[];
43
+ includePattern?: string;
44
+ excludePattern?: string;
45
+ }
46
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5E,UAAU,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACzE;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "zengen",
3
+ "version": "0.1.0",
4
+ "description": "ZEN - A minimalist Markdown documentation site builder",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "bin": {
8
+ "zengen": "dist/cli.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "dev": "ts-node src/cli.ts",
13
+ "test": "echo \"Error: no test specified\" && exit 1",
14
+ "prepublishOnly": "npm run build"
15
+ },
16
+ "keywords": [
17
+ "markdown",
18
+ "static-site",
19
+ "documentation",
20
+ "cli"
21
+ ],
22
+ "author": "ZEN Team",
23
+ "license": "ISC",
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "git+https://github.com/zccz14/ZEN.git"
27
+ },
28
+ "bugs": {
29
+ "url": "https://github.com/zccz14/ZEN/issues"
30
+ },
31
+ "homepage": "https://github.com/zccz14/ZEN#readme",
32
+ "devDependencies": {
33
+ "@types/chokidar": "^1.7.5",
34
+ "@types/node": "^25.0.3",
35
+ "@types/yaml": "^1.9.6",
36
+ "ts-node": "^10.9.2",
37
+ "typescript": "^5.9.3"
38
+ },
39
+ "dependencies": {
40
+ "chokidar": "^5.0.0",
41
+ "commander": "^14.0.2",
42
+ "highlight.js": "^11.11.1",
43
+ "marked": "^17.0.1"
44
+ }
45
+ }