import { readdir } from "node:fs/promises"; import { join } from "node:path"; import { Converter } from 'showdown'; // Delete everything in output. const allOutput = await readdir(join(import.meta.dir, "output")) for (const file of allOutput) { if (file === "index.css" || file === "page.css") continue; Bun.file(join(import.meta.dir, "output", file)).delete() } // Create Markdown Pages const allDocs = await readdir(join(import.meta.dir, "docs")) const MDConvert = new Converter({headerLevelStart: 2, metadata: true}) for await (const doc of allDocs) { const file = await Bun.file(join(import.meta.dir, "docs", doc)).text() const format = MDConvert.makeHtml(file) let style = await Bun.file(join(import.meta.dir, "output-style", "page.html")).text() const name = MDConvert.getMetadata()["Name"] ? MDConvert.getMetadata()["Name"] : file.match(/# .+/gm)![0].replace("# ", "") style = style.replaceAll("##NAME##", name).replaceAll("##CATEGORIES##", MDConvert.getMetadata()['Category']) let divs = '' const headers = file.matchAll(/^#+ .+/gm) for await (const header of headers.toArray()) { const head = header[0].replaceAll("#", "").trim() if (head === name) continue; const id = head.replace(/[^a-zA-Z0-9]/g, '').toLowerCase() divs += `
` } style = style.replace("##NAVLINKS##", divs) Bun.write(join(import.meta.dir, "output", MDConvert.getMetadata()['Category'], `${name}.html` ), style.replace("##HTML##", format)) } // Create index page. const allMDs = await readdir(join(import.meta.dir, "docs")) const docs = [] for await (const doc of allMDs) { const file = Bun.file(join(import.meta.dir, "docs", doc)) const text = await file.text() const params = text.match(/\-\-\-.+\-\-\-/gms) const shelledInfo = params![0].replace("--- \n", "").replace("\n ---", "") const lines = shelledInfo.split("\n") const info: Record