igniteui-sassdoc-theme
Version:
Default SassDoc theme used in Ignite UI for Angular.
48 lines (39 loc) • 1.43 kB
text/typescript
import fs from "fs-extra";
import path from "path";
import { fileURLToPath } from "url";
import { JSDOM } from "jsdom";
import { getConfig } from "./config";
import type { Context } from "../content/sassdoc-schema";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const projectRoot = path.resolve(__dirname);
const OUT_PATH = path.join(projectRoot, "data", "navigation.json");
export async function fetchNavigation(ctx: Context): Promise<void> {
const { navigationURL } = getConfig(ctx.language, ctx.environment);
try {
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 5000);
const response = await fetch(navigationURL, { signal: controller.signal });
clearTimeout(timeout);
const html = await response.text();
const dom = new JSDOM(html);
const header =
dom.window.document.querySelector("#header")?.outerHTML ?? null;
const footer =
dom.window.document.querySelector("footer")?.outerHTML ?? null;
const copyright =
dom.window.document.querySelector("#footer")?.outerHTML ?? null;
fs.ensureDir(path.dirname(OUT_PATH));
fs.writeJsonSync(OUT_PATH, {
header,
footer,
copyright,
});
} catch (error) {
console.error("Failed to fetch navigation parts.", error);
fs.writeJsonSync(OUT_PATH, {
header: "",
footer: "",
copyright: "",
});
}
}