@t8/docsgen 0.3.34 → 0.3.36
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/bin.js +14 -31
- package/package.json +1 -1
- package/src/bin/content/getCSSRoot.ts +4 -3
- package/src/bin/content/getNav.ts +2 -39
- package/src/bin/fetchContent.ts +13 -4
package/dist/bin.js
CHANGED
|
@@ -116,18 +116,23 @@ var import_args_json = __toESM(require_dist(), 1);
|
|
|
116
116
|
|
|
117
117
|
// src/bin/fetchContent.ts
|
|
118
118
|
import { readFile } from "node:fs/promises";
|
|
119
|
+
var cachedContent = /* @__PURE__ */ new Map();
|
|
119
120
|
async function fetchContent(location) {
|
|
120
121
|
if (!location) return "";
|
|
122
|
+
let content = cachedContent.get(location);
|
|
123
|
+
if (content !== void 0) return content;
|
|
121
124
|
if (/^https?:\/\//.test(location)) {
|
|
122
125
|
try {
|
|
123
|
-
|
|
126
|
+
content = await (await fetch(location, { cache: "no-cache" })).text();
|
|
124
127
|
} catch {
|
|
125
128
|
console.warn(`Failed to fetch content from '${location}'`);
|
|
126
|
-
return "";
|
|
127
129
|
}
|
|
130
|
+
} else {
|
|
131
|
+
let locationPath = location.replace(/^\//, "");
|
|
132
|
+
content = (await readFile(locationPath)).toString();
|
|
128
133
|
}
|
|
129
|
-
|
|
130
|
-
return
|
|
134
|
+
cachedContent.set(location, content ??= "");
|
|
135
|
+
return content;
|
|
131
136
|
}
|
|
132
137
|
|
|
133
138
|
// src/bin/getLocation.ts
|
|
@@ -573,6 +578,7 @@ var exec = promisify(defaultExec);
|
|
|
573
578
|
var __filename = fileURLToPath(import.meta.url);
|
|
574
579
|
var __dirname = dirname(__filename);
|
|
575
580
|
var packageURL = "";
|
|
581
|
+
var packageVersionRequest = null;
|
|
576
582
|
async function getCSSRoot(ctx, type) {
|
|
577
583
|
let { dir = "", assetsDir } = ctx;
|
|
578
584
|
let cssRoot = {
|
|
@@ -588,7 +594,8 @@ async function getCSSRoot(ctx, type) {
|
|
|
588
594
|
});
|
|
589
595
|
} else {
|
|
590
596
|
if (!packageURL) {
|
|
591
|
-
|
|
597
|
+
packageVersionRequest ??= exec(`npm view ${packageName} version`);
|
|
598
|
+
let packageVersion = (await packageVersionRequest).stdout.trim().split(".").slice(0, 2).join(".");
|
|
592
599
|
packageURL = `https://unpkg.com/${packageName}@${packageVersion}`;
|
|
593
600
|
}
|
|
594
601
|
cssRoot.index = `${packageURL}/dist/css`;
|
|
@@ -801,33 +808,9 @@ function getNpmLink({ npm }, className) {
|
|
|
801
808
|
}
|
|
802
809
|
|
|
803
810
|
// src/bin/content/getNav.ts
|
|
804
|
-
var cachedNavContent = /* @__PURE__ */ new Map();
|
|
805
|
-
async function getNavContent({ name, nav }) {
|
|
806
|
-
if (!nav) return "";
|
|
807
|
-
let navContent = cachedNavContent.get(nav);
|
|
808
|
-
if (navContent !== void 0) return navContent;
|
|
809
|
-
navContent = await fetchContent(nav);
|
|
810
|
-
if (navContent) {
|
|
811
|
-
let navDom = new JSDOM3(navContent).window.document.body;
|
|
812
|
-
for (let link of navDom.querySelectorAll("a")) {
|
|
813
|
-
if (link.dataset.name === name) {
|
|
814
|
-
let parent = link.parentElement;
|
|
815
|
-
link.remove();
|
|
816
|
-
while (parent && parent.innerHTML.trim() === "") {
|
|
817
|
-
let nextParent = parent.parentElement;
|
|
818
|
-
parent.remove();
|
|
819
|
-
parent = nextParent;
|
|
820
|
-
}
|
|
821
|
-
}
|
|
822
|
-
}
|
|
823
|
-
navContent = navDom.innerHTML;
|
|
824
|
-
}
|
|
825
|
-
cachedNavContent.set(nav, navContent);
|
|
826
|
-
return navContent;
|
|
827
|
-
}
|
|
828
811
|
async function getNav(ctx, navItems) {
|
|
829
|
-
let { name, root, contentDir, backstory } = ctx;
|
|
830
|
-
let navContent = await
|
|
812
|
+
let { name, root, contentDir, backstory, nav } = ctx;
|
|
813
|
+
let navContent = await fetchContent(nav);
|
|
831
814
|
let s = "";
|
|
832
815
|
if (navContent) {
|
|
833
816
|
let navDom = new JSDOM3(navContent).window.document.body;
|
package/package.json
CHANGED
|
@@ -12,6 +12,7 @@ const __filename = fileURLToPath(import.meta.url);
|
|
|
12
12
|
const __dirname = dirname(__filename);
|
|
13
13
|
|
|
14
14
|
let packageURL = "";
|
|
15
|
+
let packageVersionRequest: Promise<{ stdout: string }> | null = null;
|
|
15
16
|
|
|
16
17
|
export async function getCSSRoot(ctx: Context, type: "index" | "content") {
|
|
17
18
|
let { dir = "", assetsDir } = ctx;
|
|
@@ -31,9 +32,9 @@ export async function getCSSRoot(ctx: Context, type: "index" | "content") {
|
|
|
31
32
|
});
|
|
32
33
|
} else {
|
|
33
34
|
if (!packageURL) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
).stdout
|
|
35
|
+
packageVersionRequest ??= exec(`npm view ${packageName} version`);
|
|
36
|
+
|
|
37
|
+
let packageVersion = (await packageVersionRequest).stdout
|
|
37
38
|
.trim()
|
|
38
39
|
.split(".")
|
|
39
40
|
.slice(0, 2)
|
|
@@ -5,46 +5,9 @@ import { fetchContent } from "../fetchContent.ts";
|
|
|
5
5
|
import { getNpmLink } from "../getNpmLink.ts";
|
|
6
6
|
import { getRepoLink } from "../getRepoLink.ts";
|
|
7
7
|
|
|
8
|
-
let cachedNavContent = new Map<string, string>();
|
|
9
|
-
|
|
10
|
-
async function getNavContent({ name, nav }: Context) {
|
|
11
|
-
if (!nav) return "";
|
|
12
|
-
|
|
13
|
-
let navContent = cachedNavContent.get(nav);
|
|
14
|
-
|
|
15
|
-
if (navContent !== undefined) return navContent;
|
|
16
|
-
|
|
17
|
-
navContent = await fetchContent(nav);
|
|
18
|
-
|
|
19
|
-
if (navContent) {
|
|
20
|
-
let navDom = new JSDOM(navContent).window.document.body;
|
|
21
|
-
|
|
22
|
-
for (let link of navDom.querySelectorAll("a")) {
|
|
23
|
-
if (link.dataset.name === name) {
|
|
24
|
-
let parent = link.parentElement;
|
|
25
|
-
|
|
26
|
-
link.remove();
|
|
27
|
-
|
|
28
|
-
while (parent && parent.innerHTML.trim() === "") {
|
|
29
|
-
let nextParent = parent.parentElement;
|
|
30
|
-
|
|
31
|
-
parent.remove();
|
|
32
|
-
parent = nextParent;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
navContent = navDom.innerHTML;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
cachedNavContent.set(nav, navContent);
|
|
41
|
-
|
|
42
|
-
return navContent;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
8
|
export async function getNav(ctx: Context, navItems: NavItem[]) {
|
|
46
|
-
let { name, root, contentDir, backstory } = ctx;
|
|
47
|
-
let navContent = await
|
|
9
|
+
let { name, root, contentDir, backstory, nav } = ctx;
|
|
10
|
+
let navContent = await fetchContent(nav);
|
|
48
11
|
let s = "";
|
|
49
12
|
|
|
50
13
|
if (navContent) {
|
package/src/bin/fetchContent.ts
CHANGED
|
@@ -1,18 +1,27 @@
|
|
|
1
1
|
import { readFile } from "node:fs/promises";
|
|
2
2
|
|
|
3
|
+
let cachedContent = new Map<string, string>();
|
|
4
|
+
|
|
3
5
|
export async function fetchContent(location: string | undefined) {
|
|
4
6
|
if (!location) return "";
|
|
5
7
|
|
|
8
|
+
let content = cachedContent.get(location);
|
|
9
|
+
|
|
10
|
+
if (content !== undefined) return content;
|
|
11
|
+
|
|
6
12
|
if (/^https?:\/\//.test(location)) {
|
|
7
13
|
try {
|
|
8
|
-
|
|
14
|
+
content = await (await fetch(location, { cache: "no-cache" })).text();
|
|
9
15
|
} catch {
|
|
10
16
|
console.warn(`Failed to fetch content from '${location}'`);
|
|
11
|
-
return "";
|
|
12
17
|
}
|
|
18
|
+
} else {
|
|
19
|
+
let locationPath = location.replace(/^\//, "");
|
|
20
|
+
|
|
21
|
+
content = (await readFile(locationPath)).toString();
|
|
13
22
|
}
|
|
14
23
|
|
|
15
|
-
|
|
24
|
+
cachedContent.set(location, (content ??= ""));
|
|
16
25
|
|
|
17
|
-
return
|
|
26
|
+
return content;
|
|
18
27
|
}
|