zengen 0.1.36 → 0.2.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.
Files changed (153) hide show
  1. package/.github/workflows/pages.yml +1 -1
  2. package/.zen/meta.json +128 -30
  3. package/.zen/src/en-US/01d04f7c17b4a541ead9d759d877b30b403e15b849182a49eb1f62bd29ecd18c.md +120 -0
  4. package/.zen/src/en-US/1b798c44a4f353e47296ca83d5905e37e6aba3e90bbd9bc3b3d34fc12059a2ca.md +75 -0
  5. package/.zen/src/en-US/1e96be58d76c60056b708eb5bd8b8b81d7b5845d9cfe0b879d85068a5f11df3a.md +189 -0
  6. package/.zen/src/en-US/5ec990146b35e00de2630559126ee07f7cdcddeb23b0e8cab3d85b4181353e26.md +53 -0
  7. package/.zen/src/en-US/6124ea88edec5bde737b26b21f71ecfeffe4e73151784856edf813ee231a4baa.md +11 -0
  8. package/.zen/src/en-US/80ae9bed74fc6348a7c1fe9f33e86b65f5d919169721f77bcf0e1bc29fbdb4f9.md +61 -0
  9. package/.zen/src/en-US/f0c2799126931ccd113a0c45b1e623870b0d4f4f400becf6dd877da8f1011517.md +41 -0
  10. package/.zen/src/en-US/fdfca9b960d0eaa8b2b96fe988ead7481d2c0b16f66ebc94fb477139b4178cdc.md +65 -0
  11. package/.zen/src/zh-Hans/01d04f7c17b4a541ead9d759d877b30b403e15b849182a49eb1f62bd29ecd18c.md +120 -0
  12. package/.zen/src/zh-Hans/1b798c44a4f353e47296ca83d5905e37e6aba3e90bbd9bc3b3d34fc12059a2ca.md +77 -0
  13. package/.zen/src/zh-Hans/1e96be58d76c60056b708eb5bd8b8b81d7b5845d9cfe0b879d85068a5f11df3a.md +189 -0
  14. package/.zen/src/zh-Hans/5ec990146b35e00de2630559126ee07f7cdcddeb23b0e8cab3d85b4181353e26.md +55 -0
  15. package/.zen/src/zh-Hans/6124ea88edec5bde737b26b21f71ecfeffe4e73151784856edf813ee231a4baa.md +1 -0
  16. package/.zen/src/zh-Hans/6ad8db715a1b60613fe934fefb29fa981ecad9b63145593accff144d73b44bde.md +175 -0
  17. package/.zen/src/zh-Hans/80ae9bed74fc6348a7c1fe9f33e86b65f5d919169721f77bcf0e1bc29fbdb4f9.md +63 -0
  18. package/.zen/src/zh-Hans/a1580f71c6c6c1ff4a314be72d410a8507af2f087d56360c7f5048d349c21953.md +48 -0
  19. package/.zen/src/zh-Hans/d49012f98c4367b34034063400e2f7826bf0615952210c82396920172d468e2c.md +107 -0
  20. package/.zen/src/zh-Hans/f0c2799126931ccd113a0c45b1e623870b0d4f4f400becf6dd877da8f1011517.md +41 -0
  21. package/.zen/src/zh-Hans/fdfca9b960d0eaa8b2b96fe988ead7481d2c0b16f66ebc94fb477139b4178cdc.md +65 -0
  22. package/assets/templates/default/layout.html +274 -0
  23. package/dist/ai/extractMetadataFromMarkdown.d.ts +8 -0
  24. package/dist/ai/extractMetadataFromMarkdown.d.ts.map +1 -0
  25. package/dist/ai/extractMetadataFromMarkdown.js +88 -0
  26. package/dist/ai/extractMetadataFromMarkdown.js.map +1 -0
  27. package/dist/ai/translateMarkdown.d.ts +8 -0
  28. package/dist/ai/translateMarkdown.d.ts.map +1 -0
  29. package/dist/ai/translateMarkdown.js +29 -0
  30. package/dist/ai/translateMarkdown.js.map +1 -0
  31. package/dist/build/pipeline.d.ts +6 -0
  32. package/dist/build/pipeline.d.ts.map +1 -0
  33. package/dist/build/pipeline.js +218 -0
  34. package/dist/build/pipeline.js.map +1 -0
  35. package/dist/cli.js +10 -118
  36. package/dist/cli.js.map +1 -1
  37. package/dist/findEntries.d.ts +10 -0
  38. package/dist/findEntries.d.ts.map +1 -0
  39. package/dist/findEntries.js +38 -0
  40. package/dist/findEntries.js.map +1 -0
  41. package/dist/index.d.ts +1 -32
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +1 -35
  44. package/dist/index.js.map +1 -1
  45. package/dist/metadata.d.ts +14 -0
  46. package/dist/metadata.d.ts.map +1 -0
  47. package/dist/metadata.js +78 -0
  48. package/dist/metadata.js.map +1 -0
  49. package/dist/paths.d.ts +6 -0
  50. package/dist/paths.d.ts.map +1 -0
  51. package/dist/paths.js +10 -0
  52. package/dist/paths.js.map +1 -0
  53. package/dist/process/extractMetadataByAI.d.ts +5 -0
  54. package/dist/process/extractMetadataByAI.d.ts.map +1 -0
  55. package/dist/process/extractMetadataByAI.js +31 -0
  56. package/dist/process/extractMetadataByAI.js.map +1 -0
  57. package/dist/process/template.d.ts +5 -0
  58. package/dist/process/template.d.ts.map +1 -0
  59. package/dist/process/template.js +188 -0
  60. package/dist/process/template.js.map +1 -0
  61. package/dist/scan/files.d.ts +7 -0
  62. package/dist/scan/files.d.ts.map +1 -0
  63. package/dist/scan/files.js +54 -0
  64. package/dist/scan/files.js.map +1 -0
  65. package/dist/services/openai.d.ts +41 -0
  66. package/dist/services/openai.d.ts.map +1 -0
  67. package/dist/services/openai.js +54 -0
  68. package/dist/services/openai.js.map +1 -0
  69. package/dist/types.d.ts +16 -67
  70. package/dist/types.d.ts.map +1 -1
  71. package/dist/utils/convertMarkdownToHtml.d.ts +7 -0
  72. package/dist/utils/convertMarkdownToHtml.d.ts.map +1 -0
  73. package/dist/utils/convertMarkdownToHtml.js +39 -0
  74. package/dist/utils/convertMarkdownToHtml.js.map +1 -0
  75. package/dist/utils/frontmatter.d.ts +6 -0
  76. package/dist/utils/frontmatter.d.ts.map +1 -0
  77. package/dist/utils/frontmatter.js +22 -0
  78. package/dist/utils/frontmatter.js.map +1 -0
  79. package/docs/deployment/github-pages.md +1 -2
  80. package/docs/guides/best-practices.md +4 -4
  81. package/docs/guides/config.md +0 -5
  82. package/package.json +4 -2
  83. package/src/ai/extractMetadataFromMarkdown.ts +95 -0
  84. package/src/ai/translateMarkdown.ts +29 -0
  85. package/src/build/pipeline.ts +211 -0
  86. package/src/cli.ts +10 -132
  87. package/src/findEntries.ts +37 -0
  88. package/src/index.ts +1 -40
  89. package/src/metadata.ts +44 -0
  90. package/src/paths.ts +7 -0
  91. package/src/process/extractMetadataByAI.ts +29 -0
  92. package/src/process/template.ts +201 -0
  93. package/src/scan/files.ts +17 -0
  94. package/src/services/openai.ts +92 -0
  95. package/src/types.ts +18 -72
  96. package/src/utils/convertMarkdownToHtml.ts +32 -0
  97. package/src/utils/frontmatter.ts +18 -0
  98. package/.zen/translations.json +0 -51
  99. package/dist/ai-client.d.ts +0 -34
  100. package/dist/ai-client.d.ts.map +0 -1
  101. package/dist/ai-client.js +0 -180
  102. package/dist/ai-client.js.map +0 -1
  103. package/dist/ai-processor.d.ts +0 -51
  104. package/dist/ai-processor.d.ts.map +0 -1
  105. package/dist/ai-processor.js +0 -215
  106. package/dist/ai-processor.js.map +0 -1
  107. package/dist/ai-service.d.ts +0 -79
  108. package/dist/ai-service.d.ts.map +0 -1
  109. package/dist/ai-service.js +0 -257
  110. package/dist/ai-service.js.map +0 -1
  111. package/dist/builder.d.ts +0 -70
  112. package/dist/builder.d.ts.map +0 -1
  113. package/dist/builder.js +0 -854
  114. package/dist/builder.js.map +0 -1
  115. package/dist/gitignore.d.ts +0 -41
  116. package/dist/gitignore.d.ts.map +0 -1
  117. package/dist/gitignore.js +0 -202
  118. package/dist/gitignore.js.map +0 -1
  119. package/dist/gitignore.test.d.ts +0 -2
  120. package/dist/gitignore.test.d.ts.map +0 -1
  121. package/dist/gitignore.test.js +0 -309
  122. package/dist/gitignore.test.js.map +0 -1
  123. package/dist/markdown.d.ts +0 -35
  124. package/dist/markdown.d.ts.map +0 -1
  125. package/dist/markdown.js +0 -221
  126. package/dist/markdown.js.map +0 -1
  127. package/dist/navigation.d.ts +0 -46
  128. package/dist/navigation.d.ts.map +0 -1
  129. package/dist/navigation.js +0 -196
  130. package/dist/navigation.js.map +0 -1
  131. package/dist/scanner.d.ts +0 -26
  132. package/dist/scanner.d.ts.map +0 -1
  133. package/dist/scanner.js +0 -190
  134. package/dist/scanner.js.map +0 -1
  135. package/dist/template.d.ts +0 -33
  136. package/dist/template.d.ts.map +0 -1
  137. package/dist/template.js +0 -434
  138. package/dist/template.js.map +0 -1
  139. package/dist/translation-service.d.ts +0 -72
  140. package/dist/translation-service.d.ts.map +0 -1
  141. package/dist/translation-service.js +0 -291
  142. package/dist/translation-service.js.map +0 -1
  143. package/src/ai-client.ts +0 -227
  144. package/src/ai-processor.ts +0 -243
  145. package/src/ai-service.ts +0 -281
  146. package/src/builder.ts +0 -991
  147. package/src/gitignore.test.ts +0 -318
  148. package/src/gitignore.ts +0 -193
  149. package/src/markdown.ts +0 -212
  150. package/src/navigation.ts +0 -237
  151. package/src/scanner.ts +0 -180
  152. package/src/template.ts +0 -425
  153. package/src/translation-service.ts +0 -350
package/dist/cli.js CHANGED
@@ -34,140 +34,38 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  };
35
35
  })();
36
36
  Object.defineProperty(exports, "__esModule", { value: true });
37
- const dotenv_1 = require("dotenv");
38
37
  const clipanion_1 = require("clipanion");
39
- const builder_1 = require("./builder");
38
+ const dotenv_1 = require("dotenv");
39
+ const fs = __importStar(require("fs"));
40
40
  const path = __importStar(require("path"));
41
- const fs = __importStar(require("fs/promises"));
42
- const fsSync = __importStar(require("fs"));
41
+ const pipeline_1 = require("./build/pipeline");
43
42
  // 加载 .env 文件中的环境变量
44
43
  (0, dotenv_1.config)();
45
44
  // 获取版本号 - 从 package.json 读取
46
45
  function getVersion() {
47
- try {
48
- const packageJsonPath = path.join(__dirname, '..', 'package.json');
49
- const packageJson = JSON.parse(fsSync.readFileSync(packageJsonPath, 'utf-8'));
50
- return packageJson.version;
51
- }
52
- catch {
53
- return '0.1.32';
54
- }
55
- }
56
- // 基础命令类
57
- class BaseCommand extends clipanion_1.Command {
58
- async loadConfig(configPath) {
59
- if (!configPath) {
60
- return {};
61
- }
62
- try {
63
- const resolvedPath = path.resolve(configPath);
64
- const configContent = await fs.readFile(resolvedPath, 'utf-8');
65
- return JSON.parse(configContent);
66
- }
67
- catch (error) {
68
- this.context.stderr.write(`❌ Failed to load config file: ${error}\n`);
69
- throw error;
70
- }
71
- }
72
- getOutDir() {
73
- const currentDir = process.cwd();
74
- return path.join(currentDir, '.zen', 'dist');
75
- }
46
+ const packageJsonPath = path.join(__dirname, '..', 'package.json');
47
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
48
+ return packageJson.version;
76
49
  }
77
50
  // Build 命令
78
- class BuildCommand extends BaseCommand {
51
+ class BuildCommand extends clipanion_1.Command {
79
52
  constructor() {
80
53
  super(...arguments);
81
54
  this.template = clipanion_1.Option.String('-t,--template');
82
- this.watch = clipanion_1.Option.Boolean('-w,--watch');
83
- this.serve = clipanion_1.Option.Boolean('-s,--serve');
84
- this.port = clipanion_1.Option.String('-p,--port', '3000');
85
- this.host = clipanion_1.Option.String('--host', 'localhost');
86
55
  this.verbose = clipanion_1.Option.Boolean('-v,--verbose');
87
- this.config = clipanion_1.Option.String('-c,--config');
88
56
  this.baseUrl = clipanion_1.Option.String('--base-url');
89
- this.clean = clipanion_1.Option.Boolean('--clean');
90
- this.ai = clipanion_1.Option.Boolean('--ai', { description: 'Enable AI metadata extraction' });
91
57
  this.lang = clipanion_1.Option.Array('--lang', {
92
58
  description: 'Target languages for translation (e.g., en-US, ja-JP)',
93
59
  });
94
60
  }
95
61
  async execute() {
96
62
  try {
97
- // 加载配置文件
98
- const config = await this.loadConfig(this.config);
99
- // 强制使用当前目录作为 src 目录,输出到 .zen/dist 目录
100
- const currentDir = process.cwd();
101
- const outDir = this.getOutDir();
102
- // 处理 AI 配置:如果指定了 --ai 参数,启用 AI;否则使用配置中的设置
103
- const aiConfig = {
104
- ...config.ai,
105
- enabled: this.ai ? true : config.ai?.enabled,
106
- };
107
- // 处理语言配置:命令行参数优先于配置文件
108
- const targetLangs = this.lang && this.lang.length > 0 ? this.lang : config.i18n?.targetLangs;
109
- const i18nConfig = targetLangs && targetLangs.length > 0
110
- ? {
111
- ...config.i18n,
112
- sourceLang: config.i18n?.sourceLang || 'zh-Hans', // 默认源语言为中文
113
- targetLangs,
114
- }
115
- : undefined;
116
- // 合并命令行参数和配置
117
- const buildOptions = {
118
- srcDir: currentDir,
119
- outDir: outDir,
63
+ await (0, pipeline_1.buildSite)({
120
64
  template: this.template ? path.resolve(this.template) : undefined,
121
- watch: this.watch,
122
- serve: this.serve,
123
- port: parseInt(this.port, 10),
124
- host: this.host,
125
65
  verbose: this.verbose,
126
- baseUrl: this.baseUrl || config.baseUrl,
66
+ baseUrl: this.baseUrl,
127
67
  langs: this.lang,
128
- };
129
- // 创建最终的配置,包含 AI 和 i18n 设置
130
- const finalConfig = {
131
- ...config,
132
- ai: aiConfig.enabled ? aiConfig : undefined,
133
- i18n: i18nConfig,
134
- };
135
- const builder = new builder_1.ZenBuilder(finalConfig);
136
- // 验证配置
137
- const errors = builder.validateConfig(finalConfig);
138
- if (errors.length > 0) {
139
- this.context.stderr.write('❌ Configuration errors:\n');
140
- errors.forEach(error => this.context.stderr.write(` - ${error}\n`));
141
- return 1;
142
- }
143
- // 警告 --serve 选项需要 --watch 选项
144
- if (this.serve && !this.watch) {
145
- this.context.stdout.write('⚠️ Warning: --serve option requires --watch option, ignoring --serve\n');
146
- buildOptions.serve = false;
147
- }
148
- // 清理输出目录
149
- if (this.clean) {
150
- await builder.clean(buildOptions.outDir);
151
- }
152
- // 构建或监听
153
- if (this.watch) {
154
- await builder.watch(buildOptions);
155
- }
156
- else {
157
- // 如果指定了语言参数,使用多语言构建
158
- if (this.lang && this.lang.length > 0) {
159
- const multiLangOptions = {
160
- ...buildOptions,
161
- langs: this.lang,
162
- useMetaData: true,
163
- filterOrphans: true,
164
- };
165
- await builder.buildMultiLang(multiLangOptions);
166
- }
167
- else {
168
- await builder.build(buildOptions);
169
- }
170
- }
68
+ });
171
69
  return 0;
172
70
  }
173
71
  catch (error) {
@@ -185,12 +83,6 @@ BuildCommand.usage = clipanion_1.Command.Usage({
185
83
 
186
84
  Examples:
187
85
  $ zengen build
188
- $ zengen build --watch
189
- $ zengen build --watch --serve
190
- $ zengen build --watch --serve --port 8080
191
- $ zengen build --config zen.config.json
192
- $ zengen build --clean
193
- $ zengen build --ai (requires OPENAI_API_KEY environment variable)
194
86
  $ zengen build --lang en-US --lang ja-JP (translate to English and Japanese)
195
87
  `,
196
88
  });
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAiD;AACjD,mCAAgC;AAChC,uCAAyB;AACzB,2CAA6B;AAC7B,+CAA6C;AAE7C,mBAAmB;AACnB,IAAA,eAAM,GAAE,CAAC;AAET,4BAA4B;AAC5B,SAAS,UAAU;IACjB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1E,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC;AAED,WAAW;AACX,MAAM,YAAa,SAAQ,mBAAO;IAAlC;;QAGE,aAAQ,GAAG,kBAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC1C,YAAO,GAAG,kBAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzC,YAAO,GAAG,kBAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACtC,SAAI,GAAG,kBAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC5B,WAAW,EAAE,uDAAuD;SACrE,CAAC,CAAC;IA6BL,CAAC;IAfC,KAAK,CAAC,OAAO;QACX,IAAI,CAAC;YACH,MAAM,IAAA,oBAAS,EAAC;gBACd,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;gBACjE,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI,CAAC,IAAI;aACjB,CAAC,CAAC;YAEH,OAAO,CAAC,CAAC;QACX,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,KAAK,IAAI,CAAC,CAAC;YACxD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;;AAnCM,kBAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,AAAd,CAAe;AASpB,kBAAK,GAAG,mBAAO,CAAC,KAAK,CAAC;IAC3B,WAAW,EAAE,mEAAmE;IAChF,OAAO,EAAE;;;;;;;KAOR;CACF,CAAC,AAVU,CAUT;AAmBL,YAAY;AACZ,MAAM,GAAG,GAAG,IAAI,eAAG,CAAC;IAClB,UAAU,EAAE,QAAQ;IACpB,WAAW,EAAE,wDAAwD;IACrE,aAAa,EAAE,UAAU,EAAE;CAC5B,CAAC,CAAC;AAEH,OAAO;AACP,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAE3B,SAAS;AACT,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACjC,GAAG,eAAG,CAAC,cAAc;IACrB,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,MAAM,EAAE,OAAO,CAAC,MAAM;IACtB,MAAM,EAAE,OAAO,CAAC,MAAM;CACvB,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * 使用git命令查找所有Markdown文件
3
+ * 使用git ls-files --others --cached --exclude-standard获取所有文件
4
+ * 然后过滤掉.zen目录和只保留.md文件
5
+ *
6
+ * @param dirPath 要扫描的目录路径
7
+ * @returns Promise<string[]> 返回Markdown文件的相对路径数组
8
+ */
9
+ export declare const findMarkdownEntries: (dirPath: string) => Promise<string[]>;
10
+ //# sourceMappingURL=findEntries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findEntries.d.ts","sourceRoot":"","sources":["../src/findEntries.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,CAuB3E,CAAC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findMarkdownEntries = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const util_1 = require("util");
6
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
7
+ /**
8
+ * 使用git命令查找所有Markdown文件
9
+ * 使用git ls-files --others --cached --exclude-standard获取所有文件
10
+ * 然后过滤掉.zen目录和只保留.md文件
11
+ *
12
+ * @param dirPath 要扫描的目录路径
13
+ * @returns Promise<string[]> 返回Markdown文件的相对路径数组
14
+ */
15
+ const findMarkdownEntries = async (dirPath) => {
16
+ try {
17
+ // 使用git命令获取所有文件(包括已跟踪和未跟踪的文件)
18
+ // 在指定的目录下执行git命令
19
+ const { stdout } = await execAsync('git ls-files --others --cached --exclude-standard', {
20
+ cwd: dirPath,
21
+ });
22
+ // 按行分割并过滤
23
+ const files = stdout
24
+ .split('\n')
25
+ .filter(line => line.trim() !== '') // 移除空行
26
+ .filter(file => !file.startsWith('.zen')) // 过滤掉.zen目录下的文件
27
+ .filter(file => file.endsWith('.md')); // 只保留.md文件
28
+ return files;
29
+ }
30
+ catch (error) {
31
+ console.error('Error finding markdown entries:', error);
32
+ // 如果git命令失败,返回空数组
33
+ // 这可以处理没有git仓库或git不可用的情况
34
+ return [];
35
+ }
36
+ };
37
+ exports.findMarkdownEntries = findMarkdownEntries;
38
+ //# sourceMappingURL=findEntries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findEntries.js","sourceRoot":"","sources":["../src/findEntries.ts"],"names":[],"mappings":";;;AAAA,iDAAqC;AACrC,+BAAiC;AAEjC,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAElC;;;;;;;GAOG;AACI,MAAM,mBAAmB,GAAG,KAAK,EAAE,OAAe,EAAqB,EAAE;IAC9E,IAAI,CAAC;QACH,8BAA8B;QAC9B,iBAAiB;QACjB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,mDAAmD,EAAE;YACtF,GAAG,EAAE,OAAO;SACb,CAAC,CAAC;QAEH,UAAU;QACV,MAAM,KAAK,GAAG,MAAM;aACjB,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO;aAC1C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB;aACzD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW;QAEpD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QAExD,kBAAkB;QAClB,yBAAyB;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAvBW,QAAA,mBAAmB,uBAuB9B"}
package/dist/index.d.ts CHANGED
@@ -1,33 +1,2 @@
1
- export { ZenBuilder } from './builder';
2
- export { MarkdownConverter } from './markdown';
3
- export { TemplateEngine } from './template';
4
- export { NavigationGenerator } from './navigation';
5
- export type { BuildOptions, FileInfo, NavigationItem, TemplateData, MarkdownProcessor, ZenConfig, } from './types';
6
- /**
7
- * ZEN 文档构建工具
8
- *
9
- * 一个极简主义的 Markdown 文档站点生成器
10
- *
11
- * @example
12
- * ```typescript
13
- * import { ZenBuilder } from 'zengen';
14
- *
15
- * const builder = new ZenBuilder();
16
- * await builder.build({
17
- * srcDir: './docs',
18
- * outDir: './dist'
19
- * });
20
- * ```
21
- */
22
- import { ZenBuilder } from './builder';
23
- import { MarkdownConverter } from './markdown';
24
- import { TemplateEngine } from './template';
25
- import { NavigationGenerator } from './navigation';
26
- declare const _default: {
27
- Builder: typeof ZenBuilder;
28
- MarkdownConverter: typeof MarkdownConverter;
29
- TemplateEngine: typeof TemplateEngine;
30
- NavigationGenerator: typeof NavigationGenerator;
31
- };
32
- export default _default;
1
+ import './cli';
33
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EACV,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,SAAS,GACV,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;;;;;;;AAEnD,wBAKE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,CAAC"}
package/dist/index.js CHANGED
@@ -1,38 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NavigationGenerator = exports.TemplateEngine = exports.MarkdownConverter = exports.ZenBuilder = void 0;
4
- var builder_1 = require("./builder");
5
- Object.defineProperty(exports, "ZenBuilder", { enumerable: true, get: function () { return builder_1.ZenBuilder; } });
6
- var markdown_1 = require("./markdown");
7
- Object.defineProperty(exports, "MarkdownConverter", { enumerable: true, get: function () { return markdown_1.MarkdownConverter; } });
8
- var template_1 = require("./template");
9
- Object.defineProperty(exports, "TemplateEngine", { enumerable: true, get: function () { return template_1.TemplateEngine; } });
10
- var navigation_1 = require("./navigation");
11
- Object.defineProperty(exports, "NavigationGenerator", { enumerable: true, get: function () { return navigation_1.NavigationGenerator; } });
12
- /**
13
- * ZEN 文档构建工具
14
- *
15
- * 一个极简主义的 Markdown 文档站点生成器
16
- *
17
- * @example
18
- * ```typescript
19
- * import { ZenBuilder } from 'zengen';
20
- *
21
- * const builder = new ZenBuilder();
22
- * await builder.build({
23
- * srcDir: './docs',
24
- * outDir: './dist'
25
- * });
26
- * ```
27
- */
28
- const builder_2 = require("./builder");
29
- const markdown_2 = require("./markdown");
30
- const template_2 = require("./template");
31
- const navigation_2 = require("./navigation");
32
- exports.default = {
33
- Builder: builder_2.ZenBuilder,
34
- MarkdownConverter: markdown_2.MarkdownConverter,
35
- TemplateEngine: template_2.TemplateEngine,
36
- NavigationGenerator: navigation_2.NavigationGenerator,
37
- };
3
+ require("./cli");
38
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAA9B,qGAAA,UAAU,OAAA;AACnB,uCAA+C;AAAtC,6GAAA,iBAAiB,OAAA;AAC1B,uCAA4C;AAAnC,0GAAA,cAAc,OAAA;AACvB,2CAAmD;AAA1C,iHAAA,mBAAmB,OAAA;AAU5B;;;;;;;;;;;;;;;GAeG;AACH,uCAAuC;AACvC,yCAA+C;AAC/C,yCAA4C;AAC5C,6CAAmD;AAEnD,kBAAe;IACb,OAAO,EAAE,oBAAU;IACnB,iBAAiB,EAAE,4BAAiB;IACpC,cAAc,EAAE,yBAAc;IAC9B,mBAAmB,EAAE,gCAAmB;CACzC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,iBAAe"}
@@ -0,0 +1,14 @@
1
+ import { MetaDataStore } from './types';
2
+ /**
3
+ * 全局 MetaDataStore 单例
4
+ */
5
+ export declare const MetaData: MetaDataStore;
6
+ /**
7
+ * 从文件中读取数据,覆盖 store,但是要保持它仍然是同一个对象
8
+ */
9
+ export declare function loadMetaData(): Promise<void>;
10
+ /**
11
+ * 将 MetaData 写入 store
12
+ */
13
+ export declare function saveMetaData(): Promise<void>;
14
+ //# sourceMappingURL=metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,aAKtB,CAAC;AAEF;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAalD;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAOlD"}
@@ -0,0 +1,78 @@
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.MetaData = void 0;
37
+ exports.loadMetaData = loadMetaData;
38
+ exports.saveMetaData = saveMetaData;
39
+ const fs = __importStar(require("fs/promises"));
40
+ const path = __importStar(require("path"));
41
+ const paths_1 = require("./paths");
42
+ /**
43
+ * 全局 MetaDataStore 单例
44
+ */
45
+ exports.MetaData = {
46
+ // 稍后覆盖
47
+ version: '1.0.0',
48
+ options: {},
49
+ files: [],
50
+ };
51
+ /**
52
+ * 从文件中读取数据,覆盖 store,但是要保持它仍然是同一个对象
53
+ */
54
+ async function loadMetaData() {
55
+ try {
56
+ await fs.access(paths_1.ZEN_META_PATH);
57
+ const content = await fs.readFile(paths_1.ZEN_META_PATH, 'utf-8');
58
+ const newData = JSON.parse(content);
59
+ // 使用 Object.assign 保持同一个对象引用
60
+ Object.assign(exports.MetaData, newData);
61
+ }
62
+ catch (error) {
63
+ // 如果文件不存在,初始化默认值
64
+ exports.MetaData.version = '1.0.0';
65
+ exports.MetaData.files = [];
66
+ }
67
+ }
68
+ /**
69
+ * 将 MetaData 写入 store
70
+ */
71
+ async function saveMetaData() {
72
+ // 确保 .zen 目录存在
73
+ const zenDir = path.dirname(paths_1.ZEN_META_PATH);
74
+ await fs.mkdir(zenDir, { recursive: true });
75
+ // 保存文件
76
+ await fs.writeFile(paths_1.ZEN_META_PATH, JSON.stringify(exports.MetaData, null, 2), 'utf-8');
77
+ }
78
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,oCAaC;AAKD,oCAOC;AA3CD,gDAAkC;AAClC,2CAA6B;AAC7B,mCAAwC;AAGxC;;GAEG;AACU,QAAA,QAAQ,GAAkB;IACrC,OAAO;IACP,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,EAAE;CACV,CAAC;AAEF;;GAEG;AACI,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,qBAAa,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAa,EAAE,OAAO,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEpC,6BAA6B;QAC7B,MAAM,CAAC,MAAM,CAAC,gBAAQ,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,iBAAiB;QACjB,gBAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;QAC3B,gBAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;IACtB,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,YAAY;IAChC,eAAe;IACf,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAa,CAAC,CAAC;IAC3C,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,OAAO;IACP,MAAM,EAAE,CAAC,SAAS,CAAC,qBAAa,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAChF,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const INPUT_DIR: string;
2
+ export declare const ZEN_DIR: string;
3
+ export declare const ZEN_DIST_DIR: string;
4
+ export declare const ZEN_SRC_DIR: string;
5
+ export declare const ZEN_META_PATH: string;
6
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,QAAgB,CAAC;AACvC,eAAO,MAAM,OAAO,QAA8B,CAAC;AACnD,eAAO,MAAM,YAAY,QAAwB,CAAC;AAClD,eAAO,MAAM,WAAW,QAAuB,CAAC;AAChD,eAAO,MAAM,aAAa,QAA6B,CAAC"}
package/dist/paths.js ADDED
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZEN_META_PATH = exports.ZEN_SRC_DIR = exports.ZEN_DIST_DIR = exports.ZEN_DIR = exports.INPUT_DIR = void 0;
4
+ const path_1 = require("path");
5
+ exports.INPUT_DIR = process.cwd();
6
+ exports.ZEN_DIR = (0, path_1.join)(process.cwd(), '.zen');
7
+ exports.ZEN_DIST_DIR = (0, path_1.join)(exports.ZEN_DIR, 'dist');
8
+ exports.ZEN_SRC_DIR = (0, path_1.join)(exports.ZEN_DIR, 'src');
9
+ exports.ZEN_META_PATH = (0, path_1.join)(exports.ZEN_DIR, 'meta.json');
10
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAEf,QAAA,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAC1B,QAAA,OAAO,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;AACtC,QAAA,YAAY,GAAG,IAAA,WAAI,EAAC,eAAO,EAAE,MAAM,CAAC,CAAC;AACrC,QAAA,WAAW,GAAG,IAAA,WAAI,EAAC,eAAO,EAAE,KAAK,CAAC,CAAC;AACnC,QAAA,aAAa,GAAG,IAAA,WAAI,EAAC,eAAO,EAAE,WAAW,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 运行 AI 元数据提取
3
+ */
4
+ export declare function extractMetadataByAI(): Promise<void>;
5
+ //# sourceMappingURL=extractMetadataByAI.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractMetadataByAI.d.ts","sourceRoot":"","sources":["../../src/process/extractMetadataByAI.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqBzD"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractMetadataByAI = extractMetadataByAI;
4
+ const promises_1 = require("fs/promises");
5
+ const extractMetadataFromMarkdown_1 = require("../ai/extractMetadataFromMarkdown");
6
+ const metadata_1 = require("../metadata");
7
+ /**
8
+ * 运行 AI 元数据提取
9
+ */
10
+ async function extractMetadataByAI() {
11
+ const { files } = metadata_1.MetaData;
12
+ if (metadata_1.MetaData.options.verbose)
13
+ console.log(`🤖 Running AI metadata extraction...`);
14
+ console.log(`🤖 Processing ${files.length} files with AI...`);
15
+ for (const file of files) {
16
+ try {
17
+ if (file.metadata) {
18
+ console.info(`ℹ️ Skipping ${file.path}, already has metadata`);
19
+ continue;
20
+ }
21
+ const content = await (0, promises_1.readFile)(file.path, 'utf-8');
22
+ file.metadata = await (0, extractMetadataFromMarkdown_1.extractMetadataFromMarkdown)(content);
23
+ console.log(`✅ Extracted AI metadata for ${file.path}`, file.metadata.tokens_used);
24
+ }
25
+ catch (error) {
26
+ console.error(`⚠️ Failed to process file ${file.path}:`, error);
27
+ }
28
+ }
29
+ console.log(`✅ AI processing completed for ${files.length} files`);
30
+ }
31
+ //# sourceMappingURL=extractMetadataByAI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractMetadataByAI.js","sourceRoot":"","sources":["../../src/process/extractMetadataByAI.ts"],"names":[],"mappings":";;AAOA,kDAqBC;AA5BD,0CAAuC;AACvC,mFAAgF;AAChF,0CAAuC;AAEvC;;GAEG;AACI,KAAK,UAAU,mBAAmB;IACvC,MAAM,EAAE,KAAK,EAAE,GAAG,mBAAQ,CAAC;IAE3B,IAAI,mBAAQ,CAAC,OAAO,CAAC,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,MAAM,mBAAmB,CAAC,CAAC;IAE9D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,wBAAwB,CAAC,CAAC;gBAC/D,SAAS;YACX,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAA,yDAA2B,EAAC,OAAO,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACrF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,IAAI,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iCAAiC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;AACrE,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 渲染模板并保存文件
3
+ */
4
+ export declare function renderTemplates(): Promise<void>;
5
+ //# sourceMappingURL=template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/process/template.ts"],"names":[],"mappings":"AA8JA;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAuCrD"}