czon 0.1.8 → 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.
- package/README.md +1 -0
- package/dist/build/pipeline.d.ts.map +1 -1
- package/dist/build/pipeline.js +3 -0
- package/dist/build/pipeline.js.map +1 -1
- package/dist/process/category.d.ts +2 -0
- package/dist/process/category.d.ts.map +1 -0
- package/dist/process/category.js +49 -0
- package/dist/process/category.js.map +1 -0
- package/dist/services/openai.d.ts.map +1 -1
- package/dist/services/openai.js +4 -0
- package/dist/services/openai.js.map +1 -1
- package/dist/ssg/ContentPage.d.ts.map +1 -1
- package/dist/ssg/ContentPage.js +15 -4
- package/dist/ssg/ContentPage.js.map +1 -1
- package/dist/ssg/components/Navigator.d.ts.map +1 -1
- package/dist/ssg/components/Navigator.js +13 -7
- package/dist/ssg/components/Navigator.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/build/pipeline.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/build/pipeline.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAqDxC;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBpE"}
|
package/dist/build/pipeline.js
CHANGED
|
@@ -44,6 +44,7 @@ const processTranslations_1 = require("../process/processTranslations");
|
|
|
44
44
|
const scanSourceFiles_1 = require("../process/scanSourceFiles");
|
|
45
45
|
const template_1 = require("../process/template");
|
|
46
46
|
const writeFile_1 = require("../utils/writeFile");
|
|
47
|
+
const category_1 = require("../process/category");
|
|
47
48
|
/**
|
|
48
49
|
* 验证构建配置
|
|
49
50
|
*/
|
|
@@ -72,6 +73,8 @@ async function buildPipeline(options) {
|
|
|
72
73
|
await (0, scanSourceFiles_1.scanSourceFiles)();
|
|
73
74
|
// 运行 AI 元数据提取
|
|
74
75
|
await (0, extractMetadataByAI_1.extractMetadataByAI)();
|
|
76
|
+
// 提取分类信息
|
|
77
|
+
await (0, category_1.processExtractCategory)();
|
|
75
78
|
// 存储母语文件,并进行内容增强预处理
|
|
76
79
|
await (0, enhanceMarkdownSource_1.storeNativeFiles)();
|
|
77
80
|
// 处理翻译
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/build/pipeline.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/build/pipeline.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEA,8BAgBC;AAjFD,gDAAkC;AAClC,2CAA6B;AAC7B,0CAAmE;AACnE,oCAAmD;AACnD,4EAAoE;AACpE,wEAAqE;AACrE,wEAAqE;AACrE,gEAA6D;AAC7D,kDAAgE;AAEhE,kDAA+C;AAC/C,kDAA6D;AAE7D;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,OAAqB;IACjD,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAEpC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,wBAAwB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC;IAED,mBAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAAC,OAAqB;IAChD,OAAO;IACP,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IAE9B,SAAS;IACT,MAAM,EAAE,CAAC,EAAE,CAAC,qBAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7D,yBAAyB;IACzB,MAAM,IAAA,qBAAS,EAAC,IAAI,CAAC,IAAI,CAAC,gBAAQ,EAAE,YAAY,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE7D,QAAQ;IACR,MAAM,IAAA,iCAAe,GAAE,CAAC;IAExB,cAAc;IACd,MAAM,IAAA,yCAAmB,GAAE,CAAC;IAE5B,SAAS;IACT,MAAM,IAAA,iCAAsB,GAAE,CAAC;IAE/B,oBAAoB;IACpB,MAAM,IAAA,wCAAgB,GAAE,CAAC;IAEzB,OAAO;IACP,MAAM,IAAA,yCAAmB,GAAE,CAAC;IAE5B,OAAO;IACP,MAAM,IAAA,oCAAyB,GAAE,CAAC;AACpC,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,SAAS,CAAC,OAAqB;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,IAAA,uBAAY,GAAE,CAAC;QACrB,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;QAE7B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,yBAAyB,QAAQ,GAAG,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QACxC,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,IAAA,uBAAY,GAAE,CAAC;IACvB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"category.d.ts","sourceRoot":"","sources":["../../src/process/category.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,sBAAsB,QAAa,OAAO,CAAC,IAAI,CAoD3D,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.processExtractCategory = void 0;
|
|
4
|
+
const metadata_1 = require("../metadata");
|
|
5
|
+
const openai_1 = require("../services/openai");
|
|
6
|
+
const processExtractCategory = async () => {
|
|
7
|
+
// 如果所有文件都已经有 category,则跳过本阶段
|
|
8
|
+
const allHaveCategory = metadata_1.MetaData.files.every(file => file.category);
|
|
9
|
+
if (allHaveCategory) {
|
|
10
|
+
console.info('ℹ️ All files already have categories, skipping category extraction.');
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
// 这意味着,只要有一个新文件,就需要重新生成所有类别标签
|
|
14
|
+
// 这倒也合理,因为类别标签是整体相关的
|
|
15
|
+
// 如果是内容改动导致的呢?
|
|
16
|
+
// 提取类别标签列表
|
|
17
|
+
const categories = await (0, openai_1.completeMessages)([
|
|
18
|
+
{
|
|
19
|
+
role: 'system',
|
|
20
|
+
content: [
|
|
21
|
+
'你是一个专业的文档分类助手,擅长根据文档内容和关键词为文档分配合适的类别标签。',
|
|
22
|
+
'你需要阅读所有的文档内容和关键词,然后生成一个类别标签列表。',
|
|
23
|
+
'类别标签应简洁明了,一般有一个单词或者短语组成,使用英文。',
|
|
24
|
+
'每个文档只能有一个类别标签。',
|
|
25
|
+
'请确保类别标签之间没有重复,并且涵盖所有文档的主题。',
|
|
26
|
+
'然后,为每个文档生成一个映射,指明该文档对应的类别标签。',
|
|
27
|
+
'请检查每个分类中的文档数量不能过少(例如少于 2 个),如果有,请考虑合并到其他相关类别中。',
|
|
28
|
+
'请以 JSON 格式返回类别标签列表。',
|
|
29
|
+
'示例输出格式:',
|
|
30
|
+
'{ "categories": ["tag1", "tag2", "tag3"], "mappings": { "hash1": "tag1", "hash2": "tag2" } }',
|
|
31
|
+
].join('\n'),
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
role: 'user',
|
|
35
|
+
content: JSON.stringify(metadata_1.MetaData.files),
|
|
36
|
+
},
|
|
37
|
+
], { response_format: { type: 'json_object' } });
|
|
38
|
+
const json = categories.choices[0].message.content;
|
|
39
|
+
const parsed = JSON.parse(json);
|
|
40
|
+
for (const file of metadata_1.MetaData.files) {
|
|
41
|
+
const hash = file.hash;
|
|
42
|
+
if (parsed.mappings[hash]) {
|
|
43
|
+
file.category = parsed.mappings[hash];
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
console.info('✅ Extracted categories:', categories.choices[0].message.content);
|
|
47
|
+
};
|
|
48
|
+
exports.processExtractCategory = processExtractCategory;
|
|
49
|
+
//# sourceMappingURL=category.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"category.js","sourceRoot":"","sources":["../../src/process/category.ts"],"names":[],"mappings":";;;AAAA,0CAAuC;AACvC,+CAAsD;AAE/C,MAAM,sBAAsB,GAAG,KAAK,IAAmB,EAAE;IAC9D,6BAA6B;IAC7B,MAAM,eAAe,GAAG,mBAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpE,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;QACpF,OAAO;IACT,CAAC;IACD,8BAA8B;IAC9B,qBAAqB;IAErB,eAAe;IAEf,WAAW;IACX,MAAM,UAAU,GAAG,MAAM,IAAA,yBAAgB,EACvC;QACE;YACE,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,yCAAyC;gBACzC,gCAAgC;gBAChC,+BAA+B;gBAC/B,gBAAgB;gBAChB,4BAA4B;gBAC5B,8BAA8B;gBAC9B,gDAAgD;gBAChD,qBAAqB;gBACrB,SAAS;gBACT,8FAA8F;aAC/F,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAQ,CAAC,KAAK,CAAC;SACxC;KACF,EACD,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAC7C,CAAC;IAEF,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACnD,MAAM,MAAM,GAGR,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAErB,KAAK,MAAM,IAAI,IAAI,mBAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,yBAAyB,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACjF,CAAC,CAAC;AApDW,QAAA,sBAAsB,0BAoDjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/services/openai.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/services/openai.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE;YACP,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;IACH,KAAK,EAAE;QACL,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,UAAU,aAAa,EAAE,EACzB,UAAU;IACR,eAAe,CAAC,EAAE;QAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAAA;KAAE,CAAC;CACpD,KACA,OAAO,CAAC,cAAc,CAqDxB,CAAC"}
|
package/dist/services/openai.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.completeMessages = void 0;
|
|
4
|
+
const metadata_1 = require("../metadata");
|
|
4
5
|
/**
|
|
5
6
|
* 使用 OpenAI API 补全消息
|
|
6
7
|
* @param messages 消息数组
|
|
@@ -39,6 +40,9 @@ const completeMessages = async (messages, options) => {
|
|
|
39
40
|
throw new Error(`OpenAI API error (${response.status}): ${errorText}`);
|
|
40
41
|
}
|
|
41
42
|
const data = await response.json();
|
|
43
|
+
if (metadata_1.MetaData.options.verbose) {
|
|
44
|
+
console.info('🤖 AI Token Usages', data.usage);
|
|
45
|
+
}
|
|
42
46
|
// 验证响应
|
|
43
47
|
if (!data.choices?.[0]?.message?.content?.trim()) {
|
|
44
48
|
throw new Error('Empty response from OpenAI API');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/services/openai.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/services/openai.ts"],"names":[],"mappings":";;;AAAA,0CAAuC;AAiCvC;;;;;GAKG;AACI,MAAM,gBAAgB,GAAG,KAAK,EACnC,QAAyB,EACzB,OAEC,EACwB,EAAE;IAC3B,YAAY;IACZ,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;IAChD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,2BAA2B,CAAC;IAC3E,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,eAAe,CAAC;IAE1D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,WAAW,GAAQ;YACvB,KAAK;YACL,QAAQ;YACR,WAAW,EAAE,CAAC,EAAE,qBAAqB;YACrC,0BAA0B;SAC3B,CAAC;QAEF,uBAAuB;QACvB,IAAI,OAAO,EAAE,eAAe,EAAE,CAAC;YAC7B,WAAW,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QACxD,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,mBAAmB,EAAE;YAC1D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,MAAM,EAAE;aAClC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,IAAI,GAAmB,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnD,IAAI,mBAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;QAED,OAAO;QACP,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACrD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AA1DW,QAAA,gBAAgB,oBA0D3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentPage.d.ts","sourceRoot":"","sources":["../../src/ssg/ContentPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAK1C,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;IACjC,GAAG,EAAE,cAAc,CAAC;IACpB,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CACxC,
|
|
1
|
+
{"version":3,"file":"ContentPage.d.ts","sourceRoot":"","sources":["../../src/ssg/ContentPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAK1C,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;IACjC,GAAG,EAAE,cAAc,CAAC;IACpB,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CACxC,CAkdA,CAAC"}
|
package/dist/ssg/ContentPage.js
CHANGED
|
@@ -14,11 +14,13 @@ const ContentPage = props => {
|
|
|
14
14
|
const summary = frontmatter.summary;
|
|
15
15
|
const date = frontmatter.date || '--';
|
|
16
16
|
const tags = frontmatter.tags || [];
|
|
17
|
+
const category = props.file.category;
|
|
17
18
|
return (react_1.default.createElement("html", { lang: props.lang },
|
|
18
19
|
react_1.default.createElement("head", null,
|
|
19
20
|
react_1.default.createElement("meta", { charSet: "UTF-8" }),
|
|
20
21
|
react_1.default.createElement("meta", { name: "viewport", content: "width=device-width, initial-scale=1.0" }),
|
|
21
22
|
react_1.default.createElement("title", null, title),
|
|
23
|
+
react_1.default.createElement("script", { src: "https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4" }),
|
|
22
24
|
react_1.default.createElement("style", { dangerouslySetInnerHTML: {
|
|
23
25
|
__html: `
|
|
24
26
|
* {
|
|
@@ -226,7 +228,7 @@ const ContentPage = props => {
|
|
|
226
228
|
margin: 1rem 0;
|
|
227
229
|
}
|
|
228
230
|
|
|
229
|
-
|
|
231
|
+
a {
|
|
230
232
|
color: #007bff;
|
|
231
233
|
text-decoration: none;
|
|
232
234
|
}
|
|
@@ -370,15 +372,24 @@ const ContentPage = props => {
|
|
|
370
372
|
react_1.default.createElement(LanguageSwitcher_1.LanguageSwitcher, { ctx: props.ctx, lang: props.lang, file: props.file }))),
|
|
371
373
|
react_1.default.createElement("main", { className: "content" },
|
|
372
374
|
react_1.default.createElement("header", { className: "content-header" },
|
|
373
|
-
react_1.default.createElement("h2",
|
|
375
|
+
react_1.default.createElement("h2", { className: "text-2xl font-bold mb-2" }, title),
|
|
376
|
+
react_1.default.createElement("p", { className: "font-semibold" }, props.file.category),
|
|
374
377
|
react_1.default.createElement("blockquote", null, summary),
|
|
375
378
|
react_1.default.createElement("div", null,
|
|
376
379
|
"\uD83D\uDCC5 ",
|
|
377
380
|
date),
|
|
378
381
|
react_1.default.createElement("div", { className: "tags" },
|
|
379
382
|
react_1.default.createElement(TagList_1.TagList, { tags: tags }))),
|
|
380
|
-
react_1.default.createElement("
|
|
381
|
-
|
|
383
|
+
react_1.default.createElement("div", { className: "content-body" },
|
|
384
|
+
react_1.default.createElement("article", { dangerouslySetInnerHTML: { __html: props.content.body } }),
|
|
385
|
+
react_1.default.createElement("h2", null, "See Also"),
|
|
386
|
+
react_1.default.createElement("ul", null, props.ctx.site.files
|
|
387
|
+
.filter(f => f.category === category && f.hash !== props.file.hash)
|
|
388
|
+
.map(f => {
|
|
389
|
+
const theContent = props.ctx.contents.find(c => c.lang === props.lang && c.hash === f.hash);
|
|
390
|
+
return (react_1.default.createElement("li", { key: f.hash },
|
|
391
|
+
react_1.default.createElement("a", { href: `${f.metadata?.slug}.html` }, theContent?.frontmatter.title)));
|
|
392
|
+
}))),
|
|
382
393
|
react_1.default.createElement("footer", { className: "footer" },
|
|
383
394
|
react_1.default.createElement("p", null,
|
|
384
395
|
"Generated by ",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentPage.js","sourceRoot":"","sources":["../../src/ssg/ContentPage.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,oEAAiE;AACjE,sDAAmD;AACnD,kDAA+C;AAExC,MAAM,WAAW,GAKnB,KAAK,CAAC,EAAE;IACX,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;IACpD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;IAChC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;IACpC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC;IACtC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ContentPage.js","sourceRoot":"","sources":["../../src/ssg/ContentPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Navigator.d.ts","sourceRoot":"","sources":["../../../src/ssg/components/Navigator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IAC/B,GAAG,EAAE,cAAc,CAAC;IACpB,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;CACd,
|
|
1
|
+
{"version":3,"file":"Navigator.d.ts","sourceRoot":"","sources":["../../../src/ssg/components/Navigator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IAC/B,GAAG,EAAE,cAAc,CAAC;IACpB,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;CACd,CAiCA,CAAC"}
|
|
@@ -6,13 +6,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.Navigator = void 0;
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
8
|
const Navigator = props => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
const categories = [...new Set(props.ctx.site.files.map(f => f.category))];
|
|
10
|
+
return (react_1.default.createElement("ul", { className: "nav-list" }, categories.map(category => {
|
|
11
|
+
const filesInCategory = props.ctx.site.files.filter(f => f.category === category);
|
|
12
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
13
|
+
react_1.default.createElement("li", { className: "nav-item font-bold", key: category }, category || '未分类'),
|
|
14
|
+
filesInCategory.map(file => {
|
|
15
|
+
const link = file.metadata.slug + '.html';
|
|
16
|
+
const isActive = props.file.hash === file.hash;
|
|
17
|
+
const theContent = props.ctx.contents.find(c => c.lang === props.lang && c.hash === file.hash);
|
|
18
|
+
const theTitle = theContent?.frontmatter?.title || file.metadata.title || '(no title)';
|
|
19
|
+
return (react_1.default.createElement("li", { className: "nav-item", key: file.hash },
|
|
20
|
+
react_1.default.createElement("a", { href: link, className: `nav-link ${isActive ? 'active' : ''}` }, theTitle)));
|
|
21
|
+
})));
|
|
16
22
|
})));
|
|
17
23
|
};
|
|
18
24
|
exports.Navigator = Navigator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Navigator.js","sourceRoot":"","sources":["../../../src/ssg/components/Navigator.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAGnB,MAAM,SAAS,GAIjB,KAAK,CAAC,EAAE;IACX,OAAO,CACL,sCAAI,SAAS,EAAC,UAAU,IACrB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"Navigator.js","sourceRoot":"","sources":["../../../src/ssg/components/Navigator.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAGnB,MAAM,SAAS,GAIjB,KAAK,CAAC,EAAE;IACX,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3E,OAAO,CACL,sCAAI,SAAS,EAAC,UAAU,IACrB,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QACzB,MAAM,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;QAClF,OAAO,CACL;YACE,sCAAI,SAAS,EAAC,oBAAoB,EAAC,GAAG,EAAE,QAAQ,IAC7C,QAAQ,IAAI,KAAK,CACf;YACJ,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAS,CAAC,IAAI,GAAG,OAAO,CAAC;gBAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;gBAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CACnD,CAAC;gBACF,MAAM,QAAQ,GACZ,UAAU,EAAE,WAAW,EAAE,KAAK,IAAI,IAAI,CAAC,QAAS,CAAC,KAAK,IAAI,YAAY,CAAC;gBAEzE,OAAO,CACL,sCAAI,SAAS,EAAC,UAAU,EAAC,GAAG,EAAE,IAAI,CAAC,IAAI;oBACrC,qCAAG,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,IAC7D,QAAQ,CACP,CACD,CACN,CAAC;YACJ,CAAC,CAAC,CACD,CACJ,CAAC;IACJ,CAAC,CAAC,CACC,CACN,CAAC;AACJ,CAAC,CAAC;AArCW,QAAA,SAAS,aAqCpB"}
|
package/dist/types.d.ts
CHANGED
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,EAAE,aAAa,CAAC;IACpB;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;QACb;;WAEG;QACH,WAAW,EAAE,GAAG,CAAC;KAClB,CAAC,CAAC;CACJ"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,EAAE,aAAa,CAAC;IACpB;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;QACb;;WAEG;QACH,WAAW,EAAE,GAAG,CAAC;KAClB,CAAC,CAAC;CACJ"}
|