@rspress/plugin-typedoc 2.0.0-beta.11 → 2.0.0-beta.13
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/dist/es/index.js +20 -20
- package/package.json +4 -4
package/dist/es/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
1
|
+
import external_path_default from "path";
|
|
2
|
+
import { Application, TSConfigReader } from "typedoc";
|
|
3
|
+
import { load } from "typedoc-plugin-markdown";
|
|
4
|
+
import promises_default from "fs/promises";
|
|
5
5
|
const API_DIR = 'api';
|
|
6
6
|
async function patchLinks(outputDir) {
|
|
7
7
|
const normalizeLinksInFile = async (filePath)=>{
|
|
8
|
-
const content = await
|
|
8
|
+
const content = await promises_default.readFile(filePath, 'utf-8');
|
|
9
9
|
const newContent = content.replace(/\[([^\]]+)\]\(([^)]+)\)/g, (_match, p1, p2)=>{
|
|
10
10
|
if ([
|
|
11
11
|
'/',
|
|
@@ -13,12 +13,12 @@ async function patchLinks(outputDir) {
|
|
|
13
13
|
].includes(p2[0])) return `[${p1}](${p2})`;
|
|
14
14
|
return `[${p1}](./${p2})`;
|
|
15
15
|
});
|
|
16
|
-
await
|
|
16
|
+
await promises_default.writeFile(filePath, newContent);
|
|
17
17
|
};
|
|
18
18
|
const traverse = async (dir)=>{
|
|
19
|
-
const files = await
|
|
20
|
-
const filePaths = files.map((file)=>
|
|
21
|
-
const stats = await Promise.all(filePaths.map((fp)=>
|
|
19
|
+
const files = await promises_default.readdir(dir);
|
|
20
|
+
const filePaths = files.map((file)=>external_path_default.join(dir, file));
|
|
21
|
+
const stats = await Promise.all(filePaths.map((fp)=>promises_default.stat(fp)));
|
|
22
22
|
await Promise.all(stats.map((stat, index)=>{
|
|
23
23
|
const file = files[index];
|
|
24
24
|
const filePath = filePaths[index];
|
|
@@ -29,24 +29,24 @@ async function patchLinks(outputDir) {
|
|
|
29
29
|
await traverse(outputDir);
|
|
30
30
|
}
|
|
31
31
|
async function generateMetaJson(absoluteApiDir) {
|
|
32
|
-
const metaJsonPath =
|
|
33
|
-
const files = await
|
|
34
|
-
const filePaths = files.map((file)=>
|
|
35
|
-
const stats = await Promise.all(filePaths.map((fp)=>
|
|
32
|
+
const metaJsonPath = external_path_default.join(absoluteApiDir, '_meta.json');
|
|
33
|
+
const files = await promises_default.readdir(absoluteApiDir);
|
|
34
|
+
const filePaths = files.map((file)=>external_path_default.join(absoluteApiDir, file));
|
|
35
|
+
const stats = await Promise.all(filePaths.map((fp)=>promises_default.stat(fp)));
|
|
36
36
|
const dirs = stats.map((stat, index)=>stat.isDirectory() ? files[index] : null).filter(Boolean);
|
|
37
37
|
const meta = dirs.map((dir)=>({
|
|
38
38
|
type: 'dir',
|
|
39
39
|
label: dir.slice(0, 1).toUpperCase() + dir.slice(1),
|
|
40
40
|
name: dir
|
|
41
41
|
}));
|
|
42
|
-
await
|
|
42
|
+
await promises_default.writeFile(metaJsonPath, JSON.stringify([
|
|
43
43
|
'index',
|
|
44
44
|
...meta
|
|
45
45
|
]));
|
|
46
46
|
}
|
|
47
47
|
async function patchGeneratedApiDocs(absoluteApiDir) {
|
|
48
48
|
await patchLinks(absoluteApiDir);
|
|
49
|
-
await
|
|
49
|
+
await promises_default.rename(external_path_default.join(absoluteApiDir, 'README.md'), external_path_default.join(absoluteApiDir, 'index.md'));
|
|
50
50
|
await generateMetaJson(absoluteApiDir);
|
|
51
51
|
}
|
|
52
52
|
function pluginTypeDoc(options) {
|
|
@@ -59,15 +59,15 @@ function pluginTypeDoc(options) {
|
|
|
59
59
|
return [
|
|
60
60
|
{
|
|
61
61
|
routePath: apiPageRoute,
|
|
62
|
-
filepath:
|
|
62
|
+
filepath: external_path_default.join(docRoot, outDir, 'README.md')
|
|
63
63
|
}
|
|
64
64
|
];
|
|
65
65
|
},
|
|
66
66
|
async config (config) {
|
|
67
|
-
const app = new
|
|
67
|
+
const app = new Application();
|
|
68
68
|
docRoot = config.root;
|
|
69
|
-
app.options.addReader(new
|
|
70
|
-
|
|
69
|
+
app.options.addReader(new TSConfigReader());
|
|
70
|
+
load(app);
|
|
71
71
|
app.bootstrap({
|
|
72
72
|
name: config.title,
|
|
73
73
|
entryPoints,
|
|
@@ -89,7 +89,7 @@ function pluginTypeDoc(options) {
|
|
|
89
89
|
});
|
|
90
90
|
const project = app.convert();
|
|
91
91
|
if (project) {
|
|
92
|
-
const absoluteApiDir =
|
|
92
|
+
const absoluteApiDir = external_path_default.join(docRoot, outDir);
|
|
93
93
|
await app.generateDocs(project, absoluteApiDir);
|
|
94
94
|
await patchGeneratedApiDocs(absoluteApiDir);
|
|
95
95
|
config.themeConfig = config.themeConfig || {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rspress/plugin-typedoc",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.13",
|
|
4
4
|
"description": "A plugin for rspress to integrate typedoc",
|
|
5
5
|
"bugs": "https://github.com/web-infra-dev/rspress/issues",
|
|
6
6
|
"repository": {
|
|
@@ -30,11 +30,11 @@
|
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"typedoc": "0.24.8",
|
|
32
32
|
"typedoc-plugin-markdown": "3.17.1",
|
|
33
|
-
"@rspress/shared": "2.0.0-beta.
|
|
33
|
+
"@rspress/shared": "2.0.0-beta.13"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@microsoft/api-extractor": "^7.52.8",
|
|
37
|
-
"@rslib/core": "0.
|
|
37
|
+
"@rslib/core": "0.9.2",
|
|
38
38
|
"@types/node": "^22.8.1",
|
|
39
39
|
"@types/react": "^19.1.6",
|
|
40
40
|
"@types/react-dom": "^19.1.6",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"@rspress/config": "1.0.0"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
|
-
"rspress": "^2.0.0-beta.
|
|
47
|
+
"rspress": "^2.0.0-beta.13"
|
|
48
48
|
},
|
|
49
49
|
"engines": {
|
|
50
50
|
"node": ">=18.0.0"
|